diff --git a/.rubocop.yml b/.rubocop.yml index 831237cd..e3b2eafa 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -76,8 +76,7 @@ RSpec/NotToNot: EnforcedStyle: to_not RSpec/SpecFilePathFormat: - CustomTransform: - DaVinciCRDTestKit: davinci_crd_test_kit + Enabled: false Gemspec/RequireMFA: Enabled: false diff --git a/Gemfile.lock b/Gemfile.lock index 82c1823c..a2116623 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,9 +2,10 @@ PATH remote: . specs: davinci_crd_test_kit (0.13.0) - inferno_core (~> 1.1) + inferno_core (~> 1.1.2) smart_app_launch_test_kit (~> 1.0) tls_test_kit (~> 1.0) + us_core_test_kit (~> 1.0) GEM remote: https://rubygems.org/ @@ -139,7 +140,7 @@ GEM httpclient (2.8.3) i18n (1.14.7) concurrent-ruby (~> 1.0) - inferno_core (1.1.0) + inferno_core (1.1.2) activesupport (~> 6.1.7.5) base62-rb (= 0.3.1) blueprinter (= 0.25.2) @@ -344,6 +345,10 @@ GEM concurrent-ruby (~> 1.0) unicode-display_width (2.6.0) unicode_utils (1.4.0) + us_core_test_kit (1.1.1) + inferno_core (~> 1.0, >= 1.0.2) + smart_app_launch_test_kit (~> 1.0) + tls_test_kit (~> 1.0) webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) diff --git a/config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb b/config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb new file mode 100644 index 00000000..7d322160 --- /dev/null +++ b/config/presets/inferno_crd_client_suite_prefetch_subset_v221.json.erb @@ -0,0 +1,125 @@ +{ + "title": "Run Against the CRD Client Suite's Prefetch Subset Services", + "id": "inferno-crd-client-suite-prefetch-subset-v221", + "test_suite_id": "crd_server_v221", + "inputs": [ + { + "name": "base_url", + "title": "CRD server base URL", + "type": "text", + "value": "<%= Inferno::Application['base_url'] %>/custom/crd_client_v221/prefetch-subset" + }, + { + "name": "authentication_required", + "default": "no", + "options": { + "list_options": [ + { + "label": "No", + "value": "no" + }, + { + "label": "Yes", + "value": "yes" + } + ] + }, + "title": "Discovery endpoint requires authentication?", + "type": "radio", + "value": "no" + }, + { + "name": "encryption_method", + "default": "ES384", + "description": "CDS Hooks recommends ES384 and RS384 for JWT signature verification. Select which method to use.", + "options": { + "list_options": [ + { + "label": "ES384", + "value": "ES384" + }, + { + "label": "RS384", + "value": "RS384" + } + ] + }, + "title": "JWT Signing Algorithm", + "type": "radio", + "value": "ES384" + }, + { + "name": "jwks_kid", + "description": "The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint requiring authentication. Defaults to the first JWK in the list if no kid is supplied.", + "optional": true, + "title": "CDS Services JWKS kid", + "type": "text", + "value": "" + }, + { + "name": "any_hook_request_body", + "description": "Provide a single JSON request body to submit for the hook invocation. The type of hook invoked will be inferred based on the `hook` element in the request.", + "optional": true, + "title": "Request body to use for the \"Demonstrate a Hook Response\" test", + "type": "textarea", + "value": "{\n \"hookInstance\": \"d2577c69-dfbe-77ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-sign\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"resource\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"f105372f-bbef-442c-ad7a-708fee7f8c93\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"original-order\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0250\",\n \"display\": \"Hospital bed fixed height with any type of side rails, mattress\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"alt-drug\": true\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n },\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locations\": null\n }\n }" + }, + { + "name": "appointment_book_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `appointment-book` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"d1577c69-dfbe-44ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Appointment/crd221-demo-appointment-no-practitioners\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"crd221-demo-appointment-no-practitioners\",\n \"status\": \"proposed\",\n \"serviceCategory\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-category\",\n \"code\": \"17\",\n \"display\": \"General Practice\"\n }\n ]\n }\n ],\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"124\",\n \"display\": \"General Practice\"\n }\n ]\n }\n ],\n \"specialty\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"394814009\",\n \"display\": \"General practice (specialty)\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"reasonReference\": [\n {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"Heart problem\"\n }\n ],\n \"priority\": 5,\n \"description\": \"Discussion on the results of your recent MRI\",\n \"start\": \"2013-12-10T09:00:00Z\",\n \"end\": \"2013-12-10T11:00:00Z\",\n \"created\": \"2013-10-10\",\n \"comment\": \"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n },\n {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\"\n }\n ]\n }\n ],\n \"actor\": {\n \"reference\": \"Location/crd221-demo-location-room\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-11-01\",\n \"end\": \"2020-12-15\"\n }\n ]\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devReqs\": null,\n \"servReqs\": null,\n \"medReqs\": null,\n \"devs\": null,\n \"meds\": null,\n \"roles\": null,\n \"pracs\": null,\n \"locs\": null\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n },\n {\n \"hookInstance\": \"d1577c69-dfbe-55ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Appointment/crd221-demo-appointment-no-order\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"crd221-demo-appointment-no-order\",\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\"\n }\n ]\n }\n ],\n \"actor\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n }\n },\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Appointment/crd221-demo-appointment-with-order\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"crd221-demo-appointment-with-order\",\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\"\n }\n ]\n },\n \"description\": \"Knee injection\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"basedOn\": [\n {\n \"extension\": [\n {\n \"url\": \"http://hl7.org/fhir/StructureDefinition/alternate-reference\",\n \"valueReference\": {\n \"reference\": \"MedicationRequest/crd221-demo-medicationrequest\"\n }\n }\n ]\n }\n ],\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\"\n }\n ]\n }\n ],\n \"actor\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devReqs\": null,\n \"servReqs\": null,\n \"medReqs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/MedicationRequest/crd221-demo-medicationrequest\",\n \"resource\": {\n \"resourceType\": \"MedicationRequest\",\n \"id\": \"crd221-demo-medicationrequest\",\n \"status\": \"active\",\n \"intent\": \"order\",\n \"category\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/medicationrequest-category\",\n \"code\": \"outpatient\",\n \"display\": \"Outpatient\"\n }\n ]\n }\n ],\n \"medicationCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"http://www.nlm.nih.gov/research/umls/rxnorm\",\n \"code\": \"1085754\"\n }\n ],\n \"text\": \"Triamcinolone Acetonide 40 mg/mL Injectable Suspension\"\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2026-05-14\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"57676002\",\n \"display\": \"Joint pain\"\n },\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"M17.11\",\n \"display\": \"Unilateral primary osteoarthritis, right knee\"\n }\n ]\n }\n ],\n \"dosageInstruction\": [\n {\n \"text\": \"Inject 1 mL (40 mg) intra-articularly into the right knee joint under aseptic technique. May repeat in 3 months if needed.\"\n }\n ]\n }\n }\n ]\n },\n \"devs\": null,\n \"meds\": null,\n \"roles\": null,\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\"\n },\n \"locs\": null\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "encounter_start_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `encounter-start` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-with-performer\"\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-with-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"PractitionerRole/crd221-demo-role-performer\"\n }\n }\n ]\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"roles\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/PractitionerRole/crd221-demo-role-performer\",\n \"resource\": {\n \"resourceType\": \"PractitionerRole\",\n \"id\": \"crd221-demo-role-performer\",\n \"practitioner\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"organization\": {\n \"reference\": \"Organization/crd221-demo-org-staffer\"\n },\n \"telecom\": [\n {\n \"system\": \"email\",\n \"value\": \"dr.bob.doe@demo-performer.com\"\n }\n ]\n }\n }\n ]\n },\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"orgs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Organization/crd221-demo-org-staffer\",\n \"resource\": {\n \"resourceType\": \"Organization\",\n \"id\": \"crd221-demo-org-staffer\",\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1333567893\"\n }\n ],\n \"active\": true,\n \"name\": \"Demo Staffing Organization\"\n }\n }\n ]\n },\n \"locs\": null\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "encounter_discharge_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `encounter-discharge` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-with-performer-loc-and-org\"\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-with-performer-loc-and-org\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"PractitionerRole/crd221-demo-role-performer\"\n }\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"reference\": \"Location/crd221-demo-location-room\"\n }\n }\n ],\n \"serviceProvider\" : {\n \"reference\" : \"Organization/crd221-demo-org-performer\"\n }\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"roles\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/PractitionerRole/crd221-demo-role-performer\",\n \"resource\": {\n \"resourceType\": \"PractitionerRole\",\n \"id\": \"crd221-demo-role-performer\",\n \"practitioner\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"organization\": {\n \"reference\": \"Organization/crd221-demo-org-staffer\"\n },\n \"telecom\": [\n {\n \"system\": \"email\",\n \"value\": \"dr.bob.doe@demo-performer.com\"\n }\n ]\n }\n }\n ]\n },\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"orgs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Organization/crd221-demo-org-staffer\",\n \"resource\": {\n \"resourceType\": \"Organization\",\n \"id\": \"crd221-demo-org-staffer\",\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1333567893\"\n }\n ],\n \"active\": true,\n \"name\": \"Demo Staffing Organization\"\n }\n }\n ]\n },\n \"locs\": null\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "order_select_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `order-select` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"d1577c69-dfbe-66ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-select\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"selections\": [\n \"NutritionOrder/crd221-demo-nutritionorder\"\n ],\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/NutritionOrder/crd221-demo-nutritionorder\",\n \"resource\": {\n \"resourceType\": \"NutritionOrder\",\n \"id\": \"crd221-demo-nutritionorder\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"patient\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"dateTime\": \"2014-09-17\",\n \"orderer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"allergyIntolerance\": [\n {\n \"display\": \"Cashew Nuts\"\n }\n ],\n \"foodPreferenceModifier\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diet\",\n \"code\": \"dairy-free\"\n }\n ]\n }\n ],\n \"excludeFoodModifier\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"227493005\",\n \"display\": \"Cashew Nut\"\n }\n ]\n }\n ],\n \"oralDiet\": {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"15108003\",\n \"display\": \"Restricted fiber diet\"\n }\n ],\n \"text\": \"Fiber restricted diet\"\n },\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"16208003\",\n \"display\": \"Low fat diet\"\n }\n ],\n \"text\": \"Low fat diet\"\n }\n ],\n \"schedule\": [\n {\n \"repeat\": {\n \"boundsPeriod\": {\n \"start\": \"2015-02-10\"\n },\n \"frequency\": 3,\n \"period\": 1,\n \"periodUnit\": \"d\"\n }\n }\n ],\n \"nutrient\": [\n {\n \"modifier\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"256674009\",\n \"display\": \"Fat\"\n }\n ]\n },\n \"amount\": {\n \"value\": 50,\n \"unit\": \"grams\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"g\"\n }\n }\n ]\n }\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devs\": null,\n \"meds\": null,\n \"roles\": null,\n \"pracs\": null,\n \"locs\": null\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n },\n {\n \"hookInstance\": \"d1577c69-dfbe-66a1-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-select\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"selections\": [\n \"VisionPrescription/crd221-demo-visionprescription\"\n ],\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/VisionPrescription/crd221-demo-visionprescription\",\n \"resource\": {\n \"resourceType\": \"VisionPrescription\",\n \"id\": \"crd221-demo-visionprescription\",\n \"status\": \"draft\",\n \"created\": \"2014-06-15\",\n \"patient\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"dateWritten\": \"2014-06-15\",\n \"prescriber\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"lensSpecification\": [\n {\n \"product\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct\",\n \"code\": \"lens\"\n }\n ]\n },\n \"eye\": \"right\",\n \"sphere\": -2,\n \"prism\": [\n {\n \"amount\": 0.5,\n \"base\": \"down\"\n }\n ],\n \"add\": 2\n },\n {\n \"product\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct\",\n \"code\": \"lens\"\n }\n ]\n },\n \"eye\": \"left\",\n \"sphere\": -1,\n \"cylinder\": -0.5,\n \"axis\": 180,\n \"prism\": [\n {\n \"amount\": 0.5,\n \"base\": \"up\"\n }\n ],\n \"add\": 2\n }\n ]\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devs\": null,\n \"meds\": null,\n \"roles\": null,\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\"\n },\n \"locs\": null\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "order_dispatch_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `order-dispatch` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"crd221-demo-patient\",\n \"dispatchedOrders\": [\n \"ServiceRequest/crd221-demo-servicerequest-no-orderer\"\n ],\n \"performer\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"fulfillmentTasks\": [\n {\n \"resourceType\": \"Task\",\n \"id\": \"example-schedule-task\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"focus\": {\n \"reference\": \"ServiceRequest/crd221-demo-servicerequest-no-orderer\"\n },\n \"for\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"owner\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n }\n }\n ]\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": null,\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"comReqs\": null,\n \"devReqs\": null,\n \"devs\": null,\n \"medReqs\": null,\n \"meds\": null,\n \"nutOrds\": null,\n \"servReqs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/ServiceRequest/crd221-demo-servicerequest-no-orderer\",\n \"resource\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"crd221-demo-servicerequest-no-orderer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n ]\n }\n }\n ]\n },\n \"visRxs\": null,\n \"roles\": null,\n \"locs\": null,\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"crd221-demo-patient\",\n \"dispatchedOrders\": [\n \"DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\"\n ],\n \"performer\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": null,\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"comReqs\": null,\n \"devReqs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"resource\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"f105372f-bbef-442c-ad7a-708fee7f8c93\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"original-order\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0250\",\n \"display\": \"Hospital bed fixed height with any type of side rails, mattress\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n }\n }\n ]\n },\n \"devs\": null,\n \"medReqs\": null,\n \"meds\": null,\n \"nutOrds\": null,\n \"servReqs\": null,\n \"visRxs\": null,\n \"roles\": null,\n \"locs\": null,\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "order_sign_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `order-sign` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"d1577c69-dfbe-77ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"order-sign\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"resource\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"f105372f-bbef-442c-ad7a-708fee7f8c93\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"original-order\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0250\",\n \"display\": \"Hospital bed fixed height with any type of side rails, mattress\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"alt-drug\": true\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devs\": null,\n \"meds\": null,\n \"roles\": null,\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locs\": null\n }\n },\n {\n \"hookInstance\": \"d1577c69-dfbe-77a1-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"order-sign\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/ServiceRequest/crd221-demo-servicerequest-no-orderer\",\n \"resource\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"crd221-demo-servicerequest-no-orderer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n ]\n }\n },\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/CommunicationRequest/crd221-demo-communicationrequest\",\n \"resource\": {\n \"resourceType\": \"CommunicationRequest\",\n \"id\": \"crd221-demo-communicationrequest\",\n \"status\": \"draft\",\n \"basedOn\" : [\n {\n \"display\" : \"EligibilityRequest\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"payload\": [\n {\n \"extension\": [\n {\n \"url\": \"http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content\",\n \"valueCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"http://loinc.org\",\n \"code\": \"65752-8\",\n \"display\": \"Liver Pathology biopsy report\"\n }\n ]\n }\n }\n ],\n \"contentString\": \"Liver pathology biopsy report\"\n }\n ],\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"alt-drug\": true,\n \"coverage\": true,\n \"dtr-clin\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n },\n \"prefetch\": {\n \"pat\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"enc\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"cov\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-subset-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-subset-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-subset-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devs\": null,\n \"meds\": null,\n \"roles\": null,\n \"pracs\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locs\": null\n }\n }\n]" + }, + { + "name": "mock_ehr_bundle", + "default": "{\"resourceType\":\"Bundle\",\"type\":\"collection\"}", + "description": "A FHIR Bundle containing resources that Inferno will make available via the FHIR API hosted by its simulated CRD client that will initiate the CDS Hooks requests.", + "optional": true, + "title": "Mock EHR Data", + "type": "textarea", + "value": "{\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"resource\": {\n \"resourceType\": \"Organization\",\n \"id\": \"crd221-demo-payer-subset-prefetch\",\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"2234567891\"\n }\n ],\n \"active\": true,\n \"name\": \"Inferno Simulated Payer (subset standard prefetch)\"\n }\n }\n ]\n}" + } + ] +} diff --git a/config/presets/inferno_crd_client_suite_v221.json.erb b/config/presets/inferno_crd_client_suite_v221.json.erb new file mode 100644 index 00000000..ab31f057 --- /dev/null +++ b/config/presets/inferno_crd_client_suite_v221.json.erb @@ -0,0 +1,124 @@ +{ + "title": "Run Against the CRD Client Suite", + "id": "inferno-crd-client-suite-v221", + "test_suite_id": "crd_server_v221", + "inputs": [ + { + "name": "base_url", + "title": "CRD server base URL", + "type": "text", + "value": "<%= Inferno::Application['base_url'] %>/custom/crd_client_v221" + }, + { + "name": "authentication_required", + "default": "no", + "options": { + "list_options": [ + { + "label": "No", + "value": "no" + }, + { + "label": "Yes", + "value": "yes" + } + ] + }, + "title": "Discovery endpoint requires authentication?", + "type": "radio", + "value": "no" + }, + { + "name": "encryption_method", + "default": "ES384", + "description": "CDS Hooks recommends ES384 and RS384 for JWT signature verification. Select which method to use.", + "options": { + "list_options": [ + { + "label": "ES384", + "value": "ES384" + }, + { + "label": "RS384", + "value": "RS384" + } + ] + }, + "title": "JWT Signing Algorithm", + "type": "radio", + "value": "ES384" + }, + { + "name": "jwks_kid", + "description": "The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint requiring authentication. Defaults to the first JWK in the list if no kid is supplied.", + "optional": true, + "title": "CDS Services JWKS kid", + "type": "text", + "value": "" + }, + { + "name": "any_hook_request_body", + "description": "Provide a single JSON request body to submit for the hook invocation. The type of hook invoked will be inferred based on the `hook` element in the request.", + "optional": true, + "title": "Request body to use for the \"Demonstrate a Hook Response\" test", + "type": "textarea", + "value": "{\n \"hookInstance\": \"d2577c69-dfbe-77ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-sign\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"resource\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"f105372f-bbef-442c-ad7a-708fee7f8c93\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"original-order\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0250\",\n \"display\": \"Hospital bed fixed height with any type of side rails, mattress\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"alt-drug\": true\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n },\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locations\": null\n }\n }" + }, + { + "name": "appointment_book_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `appointment-book` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"d1577c69-dfbe-44ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Appointment/crd221-demo-appointment-no-practitioners\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"crd221-demo-appointment-no-practitioners\",\n \"status\": \"proposed\",\n \"serviceCategory\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-category\",\n \"code\": \"17\",\n \"display\": \"General Practice\"\n }\n ]\n }\n ],\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"124\",\n \"display\": \"General Practice\"\n }\n ]\n }\n ],\n \"specialty\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"394814009\",\n \"display\": \"General practice (specialty)\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"reasonReference\": [\n {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"Heart problem\"\n }\n ],\n \"priority\": 5,\n \"description\": \"Discussion on the results of your recent MRI\",\n \"start\": \"2013-12-10T09:00:00Z\",\n \"end\": \"2013-12-10T11:00:00Z\",\n \"created\": \"2013-10-10\",\n \"comment\": \"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n },\n {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\"\n }\n ]\n }\n ],\n \"actor\": {\n \"reference\": \"Location/crd221-demo-location-room\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-11-01\",\n \"end\": \"2020-12-15\"\n }\n ]\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"deviceRequests\": null,\n \"serviceRequests\": null,\n \"medicationRequests\": null,\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": null,\n \"locations\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Location/crd221-demo-location-room\",\n \"resource\": {\n \"resourceType\": \"Location\",\n \"id\": \"crd221-demo-location-room\",\n \"status\": \"active\",\n \"name\": \"South Wing, second floor, room 5\",\n \"address\": {\n \"use\": \"work\",\n \"line\": [\n \"Galapagosweg 91, Building A\"\n ],\n \"city\": \"San Francisco\",\n \"state\": \"CA\",\n \"postalCode\": \"94107\",\n \"country\": \"US\"\n },\n \"physicalType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/location-physical-type\",\n \"code\": \"ro\",\n \"display\": \"Room\"\n }\n ]\n },\n \"managingOrganization\": {\n \"reference\": \"Organization/crd221-demo-org-performer\"\n },\n \"partOf\": {\n \"reference\": \"Location/crd221-demo-location-building\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n },\n {\n \"hookInstance\": \"d1577c69-dfbe-55ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Appointment/crd221-demo-appointment-no-order\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"crd221-demo-appointment-no-order\",\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\"\n }\n ]\n }\n ],\n \"actor\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n }\n },\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Appointment/crd221-demo-appointment-with-order\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"crd221-demo-appointment-with-order\",\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\"\n }\n ]\n },\n \"description\": \"Knee injection\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"basedOn\": [\n {\n \"extension\": [\n {\n \"url\": \"http://hl7.org/fhir/StructureDefinition/alternate-reference\",\n \"valueReference\": {\n \"reference\": \"MedicationRequest/crd221-demo-medicationrequest\"\n }\n }\n ]\n }\n ],\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\"\n }\n ]\n }\n ],\n \"actor\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"deviceRequests\": null,\n \"serviceRequests\": null,\n \"medicationRequests\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/MedicationRequest/crd221-demo-medicationrequest\",\n \"resource\": {\n \"resourceType\": \"MedicationRequest\",\n \"id\": \"crd221-demo-medicationrequest\",\n \"status\": \"active\",\n \"intent\": \"order\",\n \"category\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/medicationrequest-category\",\n \"code\": \"outpatient\",\n \"display\": \"Outpatient\"\n }\n ]\n }\n ],\n \"medicationCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"http://www.nlm.nih.gov/research/umls/rxnorm\",\n \"code\": \"1085754\"\n }\n ],\n \"text\": \"Triamcinolone Acetonide 40 mg/mL Injectable Suspension\"\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2026-05-14\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"57676002\",\n \"display\": \"Joint pain\"\n },\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"M17.11\",\n \"display\": \"Unilateral primary osteoarthritis, right knee\"\n }\n ]\n }\n ],\n \"dosageInstruction\": [\n {\n \"text\": \"Inject 1 mL (40 mg) intra-articularly into the right knee joint under aseptic technique. May repeat in 3 months if needed.\"\n }\n ]\n }\n }\n ]\n },\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n },\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locations\": null\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "encounter_start_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `encounter-start` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-with-performer\"\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-with-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"PractitionerRole/crd221-demo-role-performer\"\n }\n }\n ]\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"practitionerRoles\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/PractitionerRole/crd221-demo-role-performer\",\n \"resource\": {\n \"resourceType\": \"PractitionerRole\",\n \"id\": \"crd221-demo-role-performer\",\n \"practitioner\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"organization\": {\n \"reference\": \"Organization/crd221-demo-org-staffer\"\n },\n \"telecom\": [\n {\n \"system\": \"email\",\n \"value\": \"dr.bob.doe@demo-performer.com\"\n }\n ]\n }\n }\n ]\n },\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"organizations\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Organization/crd221-demo-org-staffer\",\n \"resource\": {\n \"resourceType\": \"Organization\",\n \"id\": \"crd221-demo-org-staffer\",\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1333567893\"\n }\n ],\n \"active\": true,\n \"name\": \"Demo Staffing Organization\"\n }\n }\n ]\n },\n \"locations\": null\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "encounter_discharge_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `encounter-discharge` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-with-performer-loc-and-org\"\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-with-performer-loc-and-org\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"PractitionerRole/crd221-demo-role-performer\"\n }\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"reference\": \"Location/crd221-demo-location-room\"\n }\n }\n ],\n \"serviceProvider\" : {\n \"reference\" : \"Organization/crd221-demo-org-performer\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"practitionerRoles\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/PractitionerRole/crd221-demo-role-performer\",\n \"resource\": {\n \"resourceType\": \"PractitionerRole\",\n \"id\": \"crd221-demo-role-performer\",\n \"practitioner\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n },\n \"organization\": {\n \"reference\": \"Organization/crd221-demo-org-staffer\"\n },\n \"telecom\": [\n {\n \"system\": \"email\",\n \"value\": \"dr.bob.doe@demo-performer.com\"\n }\n ]\n }\n }\n ]\n },\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"organizations\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Organization/crd221-demo-org-staffer\",\n \"resource\": {\n \"resourceType\": \"Organization\",\n \"id\": \"crd221-demo-org-staffer\",\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1333567893\"\n }\n ],\n \"active\": true,\n \"name\": \"Demo Staffing Organization\"\n }\n },\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Organization/crd221-demo-org-performer\",\n \"resource\": {\n \"resourceType\": \"Organization\",\n \"id\": \"crd221-demo-org-performer\",\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1334567892\"\n }\n ],\n \"active\": true,\n \"name\": \"Demo Performing Organization\"\n }\n }\n ]\n },\n \"locations\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Location/crd221-demo-location-room\",\n \"resource\": {\n \"resourceType\": \"Location\",\n \"id\": \"crd221-demo-location-room\",\n \"status\": \"active\",\n \"name\": \"South Wing, second floor, room 5\",\n \"address\": {\n \"use\": \"work\",\n \"line\": [\n \"Galapagosweg 91, Building A\"\n ],\n \"city\": \"San Francisco\",\n \"state\": \"CA\",\n \"postalCode\": \"94107\",\n \"country\": \"US\"\n },\n \"physicalType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/location-physical-type\",\n \"code\": \"ro\",\n \"display\": \"Room\"\n }\n ]\n },\n \"managingOrganization\": {\n \"reference\": \"Organization/crd221-demo-org-performer\"\n },\n \"partOf\": {\n \"reference\": \"Location/crd221-demo-location-building\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "order_select_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `order-select` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"d1577c69-dfbe-66ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-select\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"selections\": [\n \"NutritionOrder/crd221-demo-nutritionorder\"\n ],\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/NutritionOrder/crd221-demo-nutritionorder\",\n \"resource\": {\n \"resourceType\": \"NutritionOrder\",\n \"id\": \"crd221-demo-nutritionorder\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"patient\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"dateTime\": \"2014-09-17\",\n \"orderer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"allergyIntolerance\": [\n {\n \"display\": \"Cashew Nuts\"\n }\n ],\n \"foodPreferenceModifier\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diet\",\n \"code\": \"dairy-free\"\n }\n ]\n }\n ],\n \"excludeFoodModifier\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"227493005\",\n \"display\": \"Cashew Nut\"\n }\n ]\n }\n ],\n \"oralDiet\": {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"15108003\",\n \"display\": \"Restricted fiber diet\"\n }\n ],\n \"text\": \"Fiber restricted diet\"\n },\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"16208003\",\n \"display\": \"Low fat diet\"\n }\n ],\n \"text\": \"Low fat diet\"\n }\n ],\n \"schedule\": [\n {\n \"repeat\": {\n \"boundsPeriod\": {\n \"start\": \"2015-02-10\"\n },\n \"frequency\": 3,\n \"period\": 1,\n \"periodUnit\": \"d\"\n }\n }\n ],\n \"nutrient\": [\n {\n \"modifier\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"256674009\",\n \"display\": \"Fat\"\n }\n ]\n },\n \"amount\": {\n \"value\": 50,\n \"unit\": \"grams\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"g\"\n }\n }\n ]\n }\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locations\": null\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n },\n {\n \"hookInstance\": \"d1577c69-dfbe-66a1-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-select\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"selections\": [\n \"VisionPrescription/crd221-demo-visionprescription\"\n ],\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/VisionPrescription/crd221-demo-visionprescription\",\n \"resource\": {\n \"resourceType\": \"VisionPrescription\",\n \"id\": \"crd221-demo-visionprescription\",\n \"status\": \"draft\",\n \"created\": \"2014-06-15\",\n \"patient\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"dateWritten\": \"2014-06-15\",\n \"prescriber\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"lensSpecification\": [\n {\n \"product\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct\",\n \"code\": \"lens\"\n }\n ]\n },\n \"eye\": \"right\",\n \"sphere\": -2,\n \"prism\": [\n {\n \"amount\": 0.5,\n \"base\": \"down\"\n }\n ],\n \"add\": 2\n },\n {\n \"product\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct\",\n \"code\": \"lens\"\n }\n ]\n },\n \"eye\": \"left\",\n \"sphere\": -1,\n \"cylinder\": -0.5,\n \"axis\": 180,\n \"prism\": [\n {\n \"amount\": 0.5,\n \"base\": \"up\"\n }\n ],\n \"add\": 2\n }\n ]\n }\n }\n ]\n }\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locations\": null\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "order_dispatch_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `order-dispatch` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"crd221-demo-patient\",\n \"dispatchedOrders\": [\n \"ServiceRequest/crd221-demo-servicerequest-no-orderer\"\n ],\n \"performer\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"fulfillmentTasks\": [\n {\n \"resourceType\": \"Task\",\n \"id\": \"example-schedule-task\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"focus\": {\n \"reference\": \"ServiceRequest/crd221-demo-servicerequest-no-orderer\"\n },\n \"for\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"owner\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n }\n }\n ]\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": null,\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"communicationRequests\": null,\n \"deviceRequests\": null,\n \"devices\": null,\n \"medicationRequests\": null,\n \"medications\": null,\n \"nutritionOrders\": null,\n \"serviceRequests\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/ServiceRequest/crd221-demo-servicerequest-no-orderer\",\n \"resource\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"crd221-demo-servicerequest-no-orderer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n ]\n }\n }\n ]\n },\n \"visionPrescriptions\": null,\n \"practitionerRoles\": null,\n \"locations\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"crd221-demo-patient\",\n \"dispatchedOrders\": [\n \"DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\"\n ],\n \"performer\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": null,\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"communicationRequests\": null,\n \"deviceRequests\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"resource\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"f105372f-bbef-442c-ad7a-708fee7f8c93\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"original-order\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0250\",\n \"display\": \"Hospital bed fixed height with any type of side rails, mattress\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n }\n }\n ]\n },\n \"devices\": null,\n \"medicationRequests\": null,\n \"medications\": null,\n \"nutritionOrders\": null,\n \"serviceRequests\": null,\n \"visionPrescriptions\": null,\n \"practitionerRoles\": null,\n \"locations\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n },\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.requestedVersion\": \"2.2\"\n }\n }\n]" + }, + { + "name": "order_sign_request_bodies", + "description": "To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].", + "optional": true, + "title": "Request body or bodies for invoking the `order-sign` hook", + "type": "textarea", + "value": "[\n {\n \"hookInstance\": \"d1577c69-dfbe-77ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"order-sign\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/DeviceRequest/crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"resource\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"crd221-demo-devicerequest-different-orderer-vs-performer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"f105372f-bbef-442c-ad7a-708fee7f8c93\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"original-order\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0250\",\n \"display\": \"Hospital bed fixed height with any type of side rails, mattress\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"alt-drug\": true\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n },\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locations\": null\n }\n },\n {\n \"hookInstance\": \"d1577c69-dfbe-77a1-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"http://localhost:4567/custom/crd_server_v221/fhir\",\n \"hook\": \"order-sign\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/AllergyIntolerance.rs user/CarePlan.rs user/CareTeam.rs user/Condition.rs user/Device.rs user/DiagnosticReport.rs user/DocumentReference.rs user/Encounter.rs user/Goal.rs user/Immunization.rs user/Location.rs user/Medication.rs user/MedicationRequest.rs user/Observation.rs user/Organization.rs user/Patient.rs user/Practitioner.rs user/PractitionerRole.rs user/Procedure.rs user/Provenance.rs\",\n \"subject\": \"cds-service4\"\n },\n \"context\": {\n \"userId\": \"Practitioner/crd221-demo-practitioner-orderer\",\n \"patientId\": \"crd221-demo-patient\",\n \"encounterId\": \"crd221-demo-encounter-no-performer\",\n \"draftOrders\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/ServiceRequest/crd221-demo-servicerequest-no-orderer\",\n \"resource\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"crd221-demo-servicerequest-no-orderer\",\n \"identifier\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"PLAC\"\n }\n ]\n },\n \"value\": \"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"\n }\n ],\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/crd221-demo-practitioner-performer\"\n }\n ]\n }\n },\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/CommunicationRequest/crd221-demo-communicationrequest\",\n \"resource\": {\n \"resourceType\": \"CommunicationRequest\",\n \"id\": \"crd221-demo-communicationrequest\",\n \"status\": \"draft\",\n \"basedOn\" : [\n {\n \"display\" : \"EligibilityRequest\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"payload\": [\n {\n \"extension\": [\n {\n \"url\": \"http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content\",\n \"valueCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"http://loinc.org\",\n \"code\": \"65752-8\",\n \"display\": \"Liver Pathology biopsy report\"\n }\n ]\n }\n }\n ],\n \"contentString\": \"Liver pathology biopsy report\"\n }\n ],\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"reference\": \"Practitioner/crd221-demo-practitioner-orderer\"\n }\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"alt-drug\": true,\n \"coverage\": true,\n \"dtr-clin\": true,\n \"max-cards\": 10\n },\n \"davinci-crd.requestedVersion\": \"2.2\"\n },\n \"prefetch\": {\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"crd221-demo-patient\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"202 Burlington Road\"\n ]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\n \"William\",\n \"Hale\",\n \"Oster\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"crd221-demo-encounter-no-performer\",\n \"status\": \"in-progress\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"AMB\",\n \"display\": \"ambulatory\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://www.ama-assn.org/go/cpt\",\n \"code\": \"99211\"\n }\n ],\n \"text\": \"Office Visit\"\n }\n ],\n \"subject\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n }\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage?patient=crd221-demo-patient\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Coverage/crd221-demo-coverage-complete-prefetch\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"crd221-demo-coverage-complete-prefetch\",\n \"subscriberId\": \"10A3D58WH456\",\n \"relationship\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/subscriber-relationship\",\n \"code\": \"self\"\n }\n ]\n },\n \"beneficiary\": {\n \"reference\": \"Patient/crd221-demo-patient\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/crd221-demo-payer-complete-prefetch\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"devices\": null,\n \"medications\": null,\n \"practitionerRoles\": null,\n \"organizations\": null,\n \"practitioners\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-orderer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-orderer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\n \"840 Seneca St\"\n ]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"716-873-1557\"\n },\n {\n \"system\": \"email\",\n \"value\": \"jane.betty@myhospital.com\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Jane\",\n \"Betty\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n },\n {\n \"fullUrl\": \"http://localhost:4567/custom/crd_server_v221/fhir/Practitioner/crd221-demo-practitioner-performer\",\n \"resource\": {\n \"resourceType\": \"Practitioner\",\n \"id\": \"crd221-demo-practitioner-performer\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"\n ]\n },\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1122334455\"\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Doe\",\n \"given\": [\n \"Bob\"\n ],\n \"prefix\": [\n \"Dr.\"\n ]\n }\n ],\n \"qualification\": [\n {\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0360\",\n \"code\": \"MD\",\n \"display\": \"Doctor of Medicine\"\n }\n ],\n \"text\": \"Doctor of Medicine\"\n },\n \"period\": {\n \"start\": \"1995\"\n },\n \"issuer\": {\n \"display\": \"Example University\"\n }\n }\n ]\n }\n }\n ]\n },\n \"locations\": null\n }\n }\n]" + }, + { + "name": "mock_ehr_bundle", + "description": "A FHIR Bundle containing resources that Inferno will make available via the FHIR API hosted by its simulated CRD client that will initiate the CDS Hooks requests.", + "optional": true, + "title": "Mock EHR Data", + "type": "textarea", + "value": "{\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"entry\": [\n {\n \"resource\": {\n \"resourceType\": \"Organization\",\n \"id\": \"crd221-demo-payer-complete-prefetch\",\n \"identifier\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/us-npi\",\n \"value\": \"1234567893\"\n }\n ],\n \"active\": true,\n \"name\": \"Inferno Simulated Payer (complete standard prefetch)\"\n }\n },\n {\n \"fullUrl\": \"<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/fhir/Location/crd221-demo-location-building\",\n \"resource\": {\n \"resourceType\": \"Location\",\n \"id\": \"crd221-demo-location-building\",\n \"status\": \"active\",\n \"name\": \"Building A\",\n \"address\": {\n \"use\": \"work\",\n \"line\": [\n \"Galapagosweg 91, Building A\"\n ],\n \"city\": \"San Francisco\",\n \"state\": \"CA\",\n \"postalCode\": \"94107\",\n \"country\": \"US\"\n },\n \"physicalType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/location-physical-type\",\n \"code\": \"bu\",\n \"display\": \"Building\"\n }\n ]\n },\n \"managingOrganization\": {\n \"reference\": \"Organization/crd221-demo-org-performer\"\n }\n }\n }\n ]\n}" + } + ] +} diff --git a/config/presets/inferno_crd_server_suite_v221.json.erb b/config/presets/inferno_crd_server_suite_v221.json.erb new file mode 100644 index 00000000..3ece0a66 --- /dev/null +++ b/config/presets/inferno_crd_server_suite_v221.json.erb @@ -0,0 +1,89 @@ +{ + "title": "Run Against the CRD Server Suite", + "title": "Run Against the CRD Server Suite", + "id": "inferno-crd-server-suite-v221", + "test_suite_id": "crd_client_v221", + "inputs": [ + { + "name": "cds_jwt_iss", + "title": "URI of the issuer of the JWT used to authorize CDS Hooks calls", + "type": "text", + "value": "<%= Inferno::Application['base_url'] %>/custom/crd_server_v221" + }, + { + "name": "cds_jwk_set", + "type": "textarea", + "value": "<%= Inferno::Application['base_url'] %>/custom/crd_server_v221/jwks.json" + }, + { + "name": "complete_prefetch_service_organization_id", + "title": "Complete Prefetch Service Organization id", + "type": "text", + "value": "crd221-demo-payer-complete-prefetch" + }, + { + "name": "subset_prefetch_service_organization_id", + "title": "Subset Prefetch Service Organization id", + "type": "text", + "value": "crd221-demo-payer-subset-prefetch" + }, + { + "name": "appointment_book_selected_response_types", + "description": "Select the cards/action response types that the Inferno hook request endpoints will return. The default response type that will be returned for this hook is the `Coverage Information` card type.", + "title": "Response types to return from appointment-book hook requests", + "type": "checkbox", + "value": "[\"external_reference\",\"instructions\",\"coverage_information\",\"request_form_completion\",\"create_update_coverage_info\",\"launch_smart_app\"]" + }, + { + "name": "encounter_start_selected_response_types", + "description": "Select the cards/action response types that the Inferno hook request endpoints will return. The default response type that will be returned for this hook is the `Instructions` card type.", + "title": "Response types to return from encounter-start hook requests", + "type": "checkbox", + "value": "[\"external_reference\",\"instructions\",\"coverage_information\",\"request_form_completion\",\"create_update_coverage_info\",\"launch_smart_app\"]" + }, + { + "name": "encounter_discharge_selected_response_types", + "description": "Select the cards/action response types that the Inferno hook request endpoints will return. The default response type that will be returned for this hook is the `Instructions` card type.", + "title": "Response types to return from encounter-discharge hook requests", + "type": "checkbox", + "value": "[\"external_reference\",\"instructions\",\"coverage_information\",\"request_form_completion\",\"create_update_coverage_info\",\"launch_smart_app\"]" + }, + { + "name": "encounter_discharge_custom_response_template", + "description": "A JSON string may be provided here to replace the normal response from the hook request endpoint", + "optional": true, + "title": "Custom response for encounter-discharge hook requests", + "type": "textarea", + "value": "{\n \"cards\": [\n {\n \"summary\": \"Encounter Discharge Request Form Completion Card\",\n \"detail\": \"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\n \"indicator\": \"info\",\n \"source\": {\n \"label\": \"Inferno\",\n \"url\": \"https://inferno.healthit.gov/\",\n \"topic\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/cdshooks-card-type\",\n \"code\": \"coverage-info\",\n \"display\": \"Coverage Information\"\n }\n },\n \"selectionBehavior\": \"any\",\n \"suggestions\": [\n {\n \"label\": \"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\n \"actions\": [\n {\n \"type\": \"create\",\n \"description\": \"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\n \"resource\": {\n \"resourceType\": \"Questionnaire\",\n \"id\": \"XYZ\",\n \"url\": \"http://example.org/Questionnaire/XYZ\",\n \"title\": \"Cancer Quality Forum Questionnaire XYZ\",\n \"version\": 2,\n \"status\": \"active\",\n \"subjectType\": [\n \"Patient\"\n ],\n \"date\": \"2012-01\",\n \"item\": [\n {\n \"linkId\": \"1\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/sections\",\n \"code\": \"COMORBIDITY\"\n }\n ],\n \"type\": \"group\",\n \"item\": [\n {\n \"linkId\": \"1.1\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/questions\",\n \"code\": \"COMORB\"\n }\n ],\n \"prefix\": \"1\",\n \"type\": \"choice\",\n \"answerValueSet\": \"http://hl7.org/fhir/ValueSet/yesnodontknow\",\n \"item\": [\n {\n \"linkId\": \"1.1.1\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/sections\",\n \"code\": \"CARDIAL\"\n }\n ],\n \"type\": \"group\",\n \"enableWhen\": [\n {\n \"question\": \"1.1\",\n \"operator\": \"=\",\n \"answerCoding\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0136\",\n \"code\": \"Y\"\n }\n }\n ],\n \"item\": [\n {\n \"linkId\": \"1.1.1.1\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/questions\",\n \"code\": \"COMORBCAR\"\n }\n ],\n \"prefix\": \"1.1\",\n \"type\": \"choice\",\n \"answerValueSet\": \"http://hl7.org/fhir/ValueSet/yesnodontknow\",\n \"item\": [\n {\n \"linkId\": \"1.1.1.1.1\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/questions\",\n \"code\": \"COMCAR00\",\n \"display\": \"Angina Pectoris\"\n },\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"194828000\",\n \"display\": \"Angina (disorder)\"\n }\n ],\n \"prefix\": \"1.1.1\",\n \"type\": \"choice\",\n \"answerValueSet\": \"http://hl7.org/fhir/ValueSet/yesnodontknow\"\n },\n {\n \"linkId\": \"1.1.1.1.2\",\n \"code\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"22298006\",\n \"display\": \"Myocardial infarction (disorder)\"\n }\n ],\n \"prefix\": \"1.1.2\",\n \"type\": \"choice\",\n \"answerValueSet\": \"http://hl7.org/fhir/ValueSet/yesnodontknow\"\n }\n ]\n },\n {\n \"linkId\": \"1.1.1.2\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/questions\",\n \"code\": \"COMORBVAS\"\n }\n ],\n \"prefix\": \"1.2\",\n \"type\": \"choice\",\n \"answerValueSet\": \"http://hl7.org/fhir/ValueSet/yesnodontknow\"\n }\n ]\n }\n ]\n }\n ]\n },\n {\n \"linkId\": \"2\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/sections\",\n \"code\": \"HISTOPATHOLOGY\"\n }\n ],\n \"type\": \"group\",\n \"item\": [\n {\n \"linkId\": \"2.1\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/sections\",\n \"code\": \"ABDOMINAL\"\n }\n ],\n \"type\": \"group\",\n \"item\": [\n {\n \"linkId\": \"2.1.2\",\n \"code\": [\n {\n \"system\": \"http://example.org/system/code/questions\",\n \"code\": \"STADPT\",\n \"display\": \"pT category\"\n }\n ],\n \"type\": \"choice\"\n }\n ]\n }\n ]\n }\n ]\n },\n \"extension\": {\n \"davinci-crd.if-none-exist\": \"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"\n }\n },\n {\n \"type\": \"create\",\n \"description\": \"Add 'Complete ABC form' to the task list\",\n \"resource\": {\n \"resourceType\": \"Task\",\n \"status\": \"ready\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\n \"code\": \"complete-questionnaire\"\n }\n ]\n },\n \"description\": \"Complete XYZ form for local retention\",\n \"for\": {\n \"reference\": \"Patient/pat015\"\n },\n \"authoredOn\": \"2026-03-09\",\n \"requester\": {\n \"reference\": \"http://example.org/fhir/Organization/payer\"\n },\n \"input\": [\n {\n \"type\": {\n \"text\": \"questionnaire\",\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\n \"code\": \"questionnaire\"\n }\n ]\n },\n \"valueCanonical\": \"http://example.org/Questionnaire/XYZ\"\n },\n {\n \"type\": {\n \"text\": \"afterCompletion\",\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/cdshooks-card-type\",\n \"code\": \"after-completion-action\"\n }\n ]\n },\n \"valueCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/cdshooks-card-type\",\n \"code\": \"prior-auth-include\",\n \"display\": \"Include in prior authorization\"\n }\n ]\n }\n }\n ]\n }\n }\n ]\n }\n ],\n \"uuid\": \"b76ed092-4c6f-4e5f-b1b3-0c7ceb915308\"\n },\n {\n \"summary\": \"Encounter Discharge Launch SMART Application Card\",\n \"detail\": \"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\n \"indicator\": \"info\",\n \"source\": {\n \"label\": \"Inferno\",\n \"url\": \"https://inferno.healthit.gov/\",\n \"topic\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/cdshooks-card-type\",\n \"code\": \"coverage-info\",\n \"display\": \"Coverage Information\"\n }\n },\n \"links\": [\n {\n \"label\": \"Inferno\",\n \"url\": \"<%= Inferno::Application['base_url'] %>/custom/smart/launch\",\n \"type\": \"smart\"\n }\n ],\n \"uuid\": \"daf166dd-d7fa-4c74-ba80-71bc41c9efc1\"\n },\n {\n \"summary\": \"Encounter Discharge External Reference Card\",\n \"detail\": \"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\n \"indicator\": \"info\",\n \"source\": {\n \"label\": \"Inferno\",\n \"url\": \"https://inferno.healthit.gov/\",\n \"topic\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/cdshooks-card-type\",\n \"code\": \"guideline\",\n \"display\": \"Guideline\"\n }\n },\n \"links\": [\n {\n \"label\": \"CRD IG External Reference Card Info\",\n \"url\": \"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\n \"type\": \"absolute\"\n }\n ],\n \"uuid\": \"c7bd850d-9d83-4056-aa0d-d887e6b68aed\"\n },\n {\n \"summary\": \"Encounter Discharge Create/Update Coverage Information Card\",\n \"detail\": \"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\n \"indicator\": \"info\",\n \"source\": {\n \"label\": \"Inferno\",\n \"url\": \"https://inferno.healthit.gov/\",\n \"topic\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/cdshooks-card-type\",\n \"code\": \"coverage-info\",\n \"display\": \"Coverage Information\"\n }\n },\n \"selectionBehavior\": \"any\",\n \"suggestions\": [\n {\n \"label\": \"Create/Update coverage information\",\n \"actions\": [\n {\n \"type\": \"update\",\n \"description\": \"Update current coverage record\",\n \"resource\": {\n \"id\": \"cov015\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2025-08-14T00:52:07.566+00:00\"\n },\n \"status\": \"active\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"period\": {\n \"start\": \"2026-03-09\",\n \"end\": \"2026-04-09\"\n },\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ],\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"resourceType\": \"Coverage\"\n }\n }\n ]\n }\n ],\n \"uuid\": \"ac669633-6c4f-4599-b60b-e840ce0be625\"\n },\n {\n \"summary\": \"Encounter Discharge Instructions Card\",\n \"detail\": \"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\n \"indicator\": \"info\",\n \"source\": {\n \"label\": \"Inferno\",\n \"url\": \"https://inferno.healthit.gov/\",\n \"topic\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/cdshooks-card-type\",\n \"code\": \"coverage-info\",\n \"display\": \"Coverage Information\"\n }\n },\n \"uuid\": \"1ab5f527-b173-4e5c-ad1f-56b4c4fe439a\"\n }\n ],\n \"systemActions\": [\n {\n \"type\": \"update\",\n \"description\": \"Added coverage information to Encounter resource.\",\n \"resource\": {\n \"id\": \"pat015-rad-encounter\",\n \"extension\": [\n {\n \"extension\": [\n {\n \"url\": \"coverage\",\n \"valueReference\": {\n \"reference\": \"Coverage/cov015\"\n }\n },\n {\n \"url\": \"covered\",\n \"valueCode\": \"conditional\"\n },\n {\n \"url\": \"pa-needed\",\n \"valueCode\": \"auth-needed\"\n },\n {\n \"url\": \"doc-needed\",\n \"valueCode\": \"clinical\"\n },\n {\n \"url\": \"doc-purpose\",\n \"valueCode\": \"withorder\"\n },\n {\n \"url\": \"info-needed\",\n \"valueCode\": \"performer\"\n },\n {\n \"url\": \"date\",\n \"valueDate\": \"2026-03-09\"\n },\n {\n \"url\": \"coverage-assertion-id\",\n \"valueString\": \"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"\n }\n ],\n \"url\": \"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"\n }\n ],\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ],\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n }\n }\n ],\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ],\n \"resourceType\": \"Encounter\"\n }\n }\n ]\n}" + }, + { + "name": "order_select_selected_response_types", + "description": "Select the cards/action response types that the Inferno hook request endpoints will return. The default response type that will be returned for this hook is the `Instructions` card type.", + "title": "Response types to return from order-select hook requests", + "type": "checkbox", + "value": "[\"external_reference\",\"instructions\",\"coverage_information\",\"request_form_completion\",\"create_update_coverage_info\",\"launch_smart_app\",\"propose_alternate_request\",\"companions_prerequisites\"]" + }, + { + "name": "order_dispatch_selected_response_types", + "description": "Select the cards/action response types that the Inferno hook request endpoints will return. The default response type that will be returned for this hook is the `Coverage Information` card type.", + "title": "Response types to return from order-dispatch hook requests", + "type": "checkbox", + "value": "[\"external_reference\",\"instructions\",\"coverage_information\",\"request_form_completion\",\"create_update_coverage_info\",\"launch_smart_app\",\"propose_alternate_request\",\"companions_prerequisites\"]" + }, + { + "name": "order_sign_selected_response_types", + "description": "Select the cards/action response types that the Inferno hook request endpoints will return. The default response type that will be returned for this hook is the `Coverage Information` card type.", + "title": "Response types to return from order-sign hook requests", + "type": "checkbox", + "value": "[\"external_reference\",\"instructions\",\"coverage_information\",\"request_form_completion\",\"create_update_coverage_info\",\"launch_smart_app\",\"propose_alternate_request\",\"companions_prerequisites\"]" + }, + { + "name": "patient_ids", + "description": "Comma separated list of Patient IDs that in sum contain all MUST SUPPORT elements", + "optional": true, + "title": "Patient IDs", + "type": "text", + "value": "85,355,907" + } + ] +} diff --git a/davinci_crd_test_kit.gemspec b/davinci_crd_test_kit.gemspec index e699b252..d760cbfb 100644 --- a/davinci_crd_test_kit.gemspec +++ b/davinci_crd_test_kit.gemspec @@ -8,9 +8,10 @@ Gem::Specification.new do |spec| spec.description = 'DaVinci CRD Test Kit' spec.homepage = 'https://github.com/inferno-framework/davinci-crd-test-kit' spec.license = 'Apache-2.0' - spec.add_runtime_dependency 'inferno_core', '~> 1.1' + spec.add_runtime_dependency 'inferno_core', '~> 1.1.2' spec.add_runtime_dependency 'smart_app_launch_test_kit', '~> 1.0' spec.add_runtime_dependency 'tls_test_kit', '~> 1.0' + spec.add_runtime_dependency 'us_core_test_kit', '~> 1.0' spec.required_ruby_version = Gem::Requirement.new('>= 3.3.6') spec.metadata['inferno_test_kit'] = 'true' spec.metadata['homepage_uri'] = spec.homepage diff --git a/docker-compose.background.yml b/docker-compose.background.yml index ee954828..330b098c 100644 --- a/docker-compose.background.yml +++ b/docker-compose.background.yml @@ -22,7 +22,7 @@ services: - ./data/redis:/data command: redis-server --appendonly yes hl7_validator_service: - image: infernocommunity/inferno-resource-validator:1.0.52 + image: infernocommunity/inferno-resource-validator:1.0.73 environment: # Defines how long validator sessions last if unused, in minutes: # Negative values mean sessions never expire, 0 means sessions immediately expire diff --git a/docs/Client-Details.md b/docs/Client-Details.md index e97b553e..124c7f7f 100644 --- a/docs/Client-Details.md +++ b/docs/Client-Details.md @@ -1,8 +1,9 @@ # Client Suite Implementation Details -The Da Vinci CRD Test Kit Client Suite validates the conformance of client -systems to the STU 2 version of the HL7® FHIR® -[Da Vinci Coverage Requirements Discovery Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/). +The Da Vinci CRD Test Kit contains suites validating the conformance of client systems +to two versions of the HL7® FHIR® Da Vinci Coverage Requirements Discovery Implementation Guide: +- [v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2) +- [v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1) These tests are a **DRAFT** intended to allow CRD client implementers to perform preliminary checks of their clients against CRD IG requirements and [provide @@ -12,54 +13,118 @@ requirements and may change the test validation logic. ## Technical Implementation -In this test suite, Inferno simulates a CRD payer server for the client under test to -interact with. The client will be expected to initiate requests to the server, -allow Inferno to access data using FHIR APIs, and demonstrate its ability to react -to the returned responses. Over the course of these interactions, -Inferno will seek to observe conformant handling of CRD requirements. - -This suite contains two groups of tests: -- The Hooks group receives and responds to incoming CDS Hooks requests from CRD clients - and seeks to verify: - - The ability of the client to initiate a CDS Hooks request for each hook (at least one) - that the client supports - - [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) - - [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) - - [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) - - [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) - - [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) - - [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) - - The ability of the client to process and display to the user information returned in CRD card types - present in the CDS Hooks responses, including: - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) (must be demonstrated) - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) (must be demonstrated) - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) (must be demonstrated) - - [Propose Alternate Request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - - [Additional Orders](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order) - - [Form Completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - - [Create / Update Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information) - - [Launch SMART App](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) -- The FHIR API group makes FHIR requests to CRD Clients to verify that they support the - FHIR interactions defined in the implementation guide. +For these suites, Inferno [simulates a CRD payer server](#cds-services-simulation) +for the client system to interact with. The client will be expected to initiate +requests to the server, allow Inferno to access data using FHIR APIs, and +demonstrate its ability to react to the returned responses. Over the course of these +interactions, Inferno will seek to observe conformant handling of CRD requirements as +defined in the targeted CRD version. + +The client suites each contain two top-level groups: +- In the "Hook Invocation" group, client systems will register Inferno's simulated + CRD discovery endpoint(s) against payer(s) and demonstrate invocations of + the CRD-specified hooks ([v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html), + [v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html)) that they support. + Support for features required across all hooks but not necessarily on each one will + also be checked as a part of this group. +- In the "FHIR API" group, client systems will demonstrate that they can act as + a FHIR server, including general US Core read and search API requirements + as well as the ability to support updates as a part of CRD responses such + as the coverage-information response type ([v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information), + [v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type)). All FHIR resources present in requests and responses, both FHIR and CDS Hooks, will be checked for conformance to the CRD IG and CDS Hooks requirements individually and used in aggregate to determine whether required features and functionality are present. HL7® FHIR® resources are -validated with the Java validator using `tx.fhir.org` as the terminology server. +validated with the Java validator using `tx.fhir.org` as the terminology server. CDS Hooks request +and response objects may also be checked using the validator against defined logical models +in versions that support them (e.g., [v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/artifacts.html#structures-logical-models)). + +## CRD Server Simulation -## CDS Services -This suite provides basic CDS services for +### Simulated CRD Server in the CRD Client v2.0.1 Suite + +The Da Vinci CRD Client v2.0.1 Test Suite provides basic CDS services for [the six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html). The discovery endpoint is located at `custom/crd_client/cds-services` under the root Inferno deployment address, e.g., `https://inferno.healthit.gov/suites/custom/crd_client/cds-services` for the publicly -hosted deployment of this test kit. +hosted deployment of this test kit. The discovery response returned can be found [here](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json). + +The rest of this section provides details on the implementation of these services and the expected +behavior when invoked by tested clients. + +#### Data Fetching During Hook Invocations + +##### CRD and CDS Hooks requirements around data availablity and access + +The CRD IG requires that clients make data beyond the details provided in the hook request body available +to servers so that payers can use it as a part of coverage determination. The IG lists the [minimum that +payers need to make available](https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#additional-data-retrieval): + +- Patient +- Relevant Coverage +- Authoring Practitioner +- Authoring Organization +- Requested performing Practitioner (if specified) +- Requested performing Organization (if specified) +- Requested Location (if specified) +- Associated Medication (if any) +- Associated Device (if any) + +However, the IG also acknowledges that +- CRD servers may not always need all of this information in all circumstances. +- CRD clients may not have all of this information, e.g., the performing practitioner may not be known at order time. +- Specific CRD servers may not be authorized to access all of this data. + +Two mechanisms for making the data available are specified: +- [Prefetch](https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch), where the CRD server indicates what + data it will always need as a part of discovery and the client provides this information with the hook request. +- [FHIR Resource Access](https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#fhir-resource-access), where + the CRD server uses an access token provided in the hook request to make FHIR queries to get additional data. + +CRD clients must provide an access token for data access but are not required to support prefetch (though prefetch +may become required in later versions of the CRD spec). + +##### Inferno simulated services behavior for data availability and access + +Even though this information is not required to be available and accessible in all cases, these tests are designed +to allow CRD clients to demonstrate that they can make the information captured in their system +available to the CRD servers on which they invoke hooks. Therefore, +- Inferno [advertizes prefetch templates](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/routes/cds-services.json) + requesting a subset of this data that clients can provide with the hook request if they support prefetch. + Subsequent tests will check that the prefetched data is equivalent to what can be accessed via FHIR queries. +- When a client makes a hook invocation, Inferno will analyze the hook request and prefetched data and attempt to + retrieve the rest of the available resources in the minimum data set. Subsequent tests will check that these + requests all succeeded and fail if they did not. Testers will need to choose a hook invocation target and + payer / user configuration that demonstrates this access. + +##### Fetch interactions + +Inferno performs individual reads for each resource identified. While this involves additional requests, support +for these read interactions is required by the CRD Client CapabilityStatement and the US Core Server CapabilityStatement +that it builds on. In practice clients may support and payers may use more efficient queries that +are not tested by Inferno. -### CDS Hooks Responses +The one exception is `Coverages`, which are obtained via the same search advertized in +[Inferno's prefetch templates](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/routes/cds-services.json). + +##### Specific elements targeted -CRD Client test suite contains [basic logic to generate CDS Hooks responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) +While the CRD STU2 IG does not provide precise definitions of the FHIR elements that constitute the minimum +data set, recent builds of the IG provide more explicit elements that represent the minimum data set as a part +of [minimal prefetch templates](https://build.fhir.org/ig/HL7/davinci-crd/en/Binary-CRDServices.html). +The elements indicated in those prefetch templates informed the set of elements that Inferno looks in to determine +what references to fetch. + +Any literal reference, relative or absolute, Inferno will attempt to read using the provided access token. +Non-literal references will be ignored. + +#### CDS Hooks Responses + +THe CRD client test suite contains [basic logic to generate CDS Hooks responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) that meet each of the [CRD Card profiles](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html). However, these simple cards may not support the target client in demonstrating the full CRD -capabilities of its system. The CRD Client test suite also allows testers to +capabilities of its system. The CRD client test suite also allows testers to [provide a template for the responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) for Inferno to provide back, including directives that determine details of the actual responses based on the request. This way, testers can configure the responses to match the patients, orders, @@ -70,12 +135,50 @@ for complete details. In either case, Inferno will check that the responses it generates to send back to the client are conformant and systems will not pass the tests if they are not. -### SMART Authentication for FHIR API Access +#### SMART Authentication for FHIR API Access In order to access the client's FHIR API, Inferno will need to be a [trusted service](https://cds-hooks.hl7.org/STU2/#trusting-cds-services) registered as a client using details provided within the suite at time of execution. +### Simulated CRD Server in the CRD Client v2.2.1 Suite + +The Da Vinci CRD Client v2.2.1 Test Suite provides basic CDS services for +[the six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/2.2.1/hooks.html). +While it mostly follows the same approach as [the simulation in the v2.0.1 suite](#simulated-cds-services-in-the-crd-client-v201-suite), +there are are several key differences described here. + +#### Prefetch and Additional Data Retrieval + +In the 2.2.1 version of the CRD IG, clients are [required to support prefetch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#prefetch) +and to be able to provide the complete minimal data set via this mechanism. Inferno therefore assumes +that the requisite data is included and does not attempt to retrieve any data in the minimal data set +during a hook invocation. However, clients are still required to allow servers to access data via FHIR +APIs. Inferno will request during a hook invocation FHIR resources outside the standard prefetch data +set that it needs to validate other requirements, including +- The Organization resource that represents the payer associated with the prefetched Coverage via its `payor` element. +- Parent Location resources of those provided via prefetch via the `partOf` element. + +#### Multiple Service Endpoints + +The v2.2.1 suite defines two sets of services rooted at the following discovery endpoints: +- `custom/crd_client_v221/cds-services`: requests the complete [standard prefetch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch) + dataset. The discovery response returned can be found [here](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v201.json). +- `custom/crd_client_v221/prefetch-subset/cds-services`: requests a subset of the [standard prefetch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch) + dataset using non-standard prefetch keys to allow clients to demonstrate their ability to react to the + service definitions provided by payers. The discovery response returned can be found [here](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json). + +#### Hook Configuration Options + +As advertised in by the discovery endpoints, Inferno's simulation includes support for a limited number of +hook configuration options specified in hook requests, including: +- requested version via the `davinci-crd.requestedVersion` extension: clients can request [v2.0.1 simulation](#simulated-cds-services-in-the-crd-client-v201-suite) + behavior. Note that the requests are still evaluated by the tests against v2.2.1 requirements. +- coverage-info response filter via the `coverage-info` key in the `davinci-crd.configuration` + extension: if set to `false` Inferno's simulation will not return any cards related to coverages, + including cards with a `coverage-info` source type or topic, and coverage information and + form completion responses in the `systemActions` list. + ## Testing Limitations Much of what the CRD IG specifies is optional, such as which hooks and resource @@ -83,7 +186,7 @@ types to support. These tests try to provide testers with an opportunity to exercise as much of their systems as they wish and validate that the exercised behaviors are correct. However, not all areas of the IG are exercised. -Specific limitations include: +Specific general limitations across all versions include: - This suite does not implement any payer business logic, so testers must either use [Inferno's simple hard-coded responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) or [tell Inferno how to return responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) @@ -92,4 +195,13 @@ Specific limitations include: decision support. Testers should consider this requirement to be verified through attestation and should not represent their systems as having passed these tests if this requirement is not met. -- Hook configuration is not tested. \ No newline at end of file + +### Additional v2.0.1 Client Suite Limitations + +- hook configuration is not tested. + +### Additional v2.2.1 Client Suite Limitations + +- The [logical models defined in the v2.2.1 CRD IG](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/artifacts.html#structures-logical-models) + contain some bugs and inconsistencies. These have been reported and will be resolved in future versions of the CRD IG. + Work-arounds may be added to the test suite to prevent the spurious errors and cover gaps. \ No newline at end of file diff --git a/docs/Client-Instructions-v2.2.1.md b/docs/Client-Instructions-v2.2.1.md new file mode 100644 index 00000000..9683a1f8 --- /dev/null +++ b/docs/Client-Instructions-v2.2.1.md @@ -0,0 +1,203 @@ +# Da Vinci CRD Client v2.2.1 Test Suite Testing Instructions + +This document provides a step-by-step guide for using the Da Vinci CRD Client v2.2.1 Test Suite to test +a **CRD client system**, including instructions for a [demonstration execution](#demonstration-execution) +against the public [CRD client reference implementation](https://crd-request-generator.davinci.hl7.org/). + +## Pre-execution Setup and Required Information + +### Minimum Requirements + +To run against the Da Vinci CRD Client v2.2.1 Test Suite, a CRD client implementation must at minimum +- Be configured to make CRD hook requests to one of the suite's + [simulated CDS Hooks endpoints](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#multiple-service-endpoints). +- [Authenticate](https://cds-hooks.hl7.org/2026Jan/en/#trusting-cds-clients) each hook request + by sending a JWT with a known `iss` (issuer) claim in the payload. + +### Passing Requirements + +Addition configuration and information is needed to demonstrate conformance to all tested requirements. +In order to pass all tests in the suite, a CRD client implementation must +- Be configured to make CRD hook requests to both suite's + [simulated CDS Hooks endpoints](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#multiple-service-endpoints). + Inferno will use requests to both endpoints to verify the client's ability to satisfy + both [the complete standard prefetch as well as a subset of it](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-25). +- Associate each of these endpoints with a FHIR Organization id representing the payer + that provides the insurance coverage and is responsible for determining coverage requirements. + Inferno will uses this information to verify that Hook calls are made against the + [correct payer's service](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#ci-c-dev-26). +- Sign JWTs sent as a part of hook request authentication and provide the JSON Web Key Set (JWKS) + containing the key used for the signature, either as a URL where it is publicly hosted or the + raw JWKS as JSON. +- Support the capabilities of the US Core Server Capability Statement for one of the following versions: + - [US Core 3.1.1](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html) + - [US Core 6.1.0](http://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html) + - [US Core 7.0.0](http://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html) +- Be able to provide Inferno with a long-lived or refreshable access token to use when verifying support for + the US Core FHIR API. This can come from the hook request itself, or be provided via a test input. + +Additionally, because the [mocked responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) +created by Inferno's simulation do not demonstrate all of the must support elements on the +[coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html), +testers will need to provide some [custom responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) +that demonstrate all of those elements as required by the +[must support definition](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-6). + +## Quick Start + +To execute a simple set of tests targeting a single hook using Inferno's mocked response, +you will need the following: +1. The `iss` (issuer) claim of the JWT that will be sent in the `Authorization` header + of CDS Hooks requests made by the tested client. This is used to identify incoming requests + and associate them with the test session. +2. The JSON Web Key Set (JWKS) used to sign the JWT sent in the `Authorization` header + of CDS Hooks request. This can be either a URL where it is publicly hosted or the + raw JWKS as JSON. This can be skipped, but the tests will not completely pass without it. +3. The FHIR Organization ids associated in the tested system with the following Inferno + CRD server discovery endpoints. These can be skipped, but the tests will not completely pass + without them. + - `custom/crd_client_v221/cds-services` + - `custom/crd_client_v221/prefetch-subset/cds-services` + +Once you have that information, follow these steps: + +1. Create a "Da Vinci CRD Client v2.2.1 Test Suite" session using your chosen version of US Core. +1. Select the "1.1 Registration" group from the list at the left and and click + the "RUN TESTS" button in the upper right. +1. Provide the information gathered above into the associated inputs. Only the + **CRD JWT Issuer** input, which will be used by Inferno to identify + CDS Hook invocation requests coming from the client under test, is strictly required + to run the tests. However, the tests will not fully pass without all the inputs. +1. Click the "SUBMIT" button to verify the registration details. You can continue even if the + tests fail, e.g., because no JWKS was provided. +1. Select the sub-group under "1.2 Hooks" that corresponds to a hook implemented by the + tested client and click the "RUN TESTS" button in the upper right. +1. Select the response types Inferno should respond with under the **Response types to return + from [hook name] hook requests** input (the options depend on which hook was chosen). +1. Click the "SUBMIT" button and a "User Action Required" dialog will be appear asking for + hook invocations to be made against the Inferno's simulated service endpoint. +1. Make one or more hook invocations of the target hook against Inferno's simulated service + endpoint, including in the request a JWT with the `iss` field equal to the value provided + in the **CRD JWT Issuer** input. If you make a request with a different `iss` + value, Inferno will not be able to link the request to the test session and will not + respond to or analyze the request. +1. Once all requests have been made, click the link in the "User Action Required" dialog + and Inferno will analyze the requests to determine whether they were conformant. The + responses mocked by Inferno based on any successful requests will also be analyzed for + conformance. +1. Assuming that at least one request was successfully made, a second "User Action Required" + dialog will appear asking for confirmation that the returned cards were displayed to the + user within the tested system. Respond using the appropriate link to complete the tests. + +## Additional Testing Options + +The following groups and inputs can be used to expand the process described in the +[Quick Start](#quick-start) section into a complete set of tests. + +### Testing Additional Hooks + +Additional hooks can be tested in the same manner by selecting and running the associated +group as described in [Quick Start](#quick-start). + +### Customizing Responses + +The "Custom response template for [hook name] hook requests" input can be used to customize the hook +responses to better fit the configuration of the tested client system. When this input is populated, +the corresponding "Response types to return from [hook name] hook requests" input is ignored. See the +[documentation on controlling Inferno's simulated CRD responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) +for complete details on how to use these inputs. + +### Cross Hook Verification + +After running one or more hook groups, run group "1.3 Cross Hook" to check if the client +has met requirements that must be demonstrated across all hook requests, but aren't required for each hook invocation. +For example, clients must have received and attested to display support of the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) +response type including all must support elements on the [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) +which Inferno must have observed during the testing. + +Re-run these tests to re-evaluate after making additional requests with adjusted responses +(see [Customizing Responses](#customizing-responses)) so that the requisite support is +demonstrated. + +### Long-running Hook Requets + +Run group "1.4 Long-running Hook Request" to test that users can continue their workflow during long-running +responses. Inferno will pause for a specified number of seconds (at least 5) before responding to a hook +invocation made during this test to allow testers to verify and demonstrate this capability in the tested +client system. + +### FHIR API Testing + +Group 2 "FHIR API" focuses on the FHIR API of the tested client outside of the context of a CDS Hook +invocation. It tests the complete US Core server read and search FHIR API based on the requirements +of the US Core version selected during session creation. Additionally, it checks that +updates triggered by [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) +response types are visible externally using the client's FHIR API. Thus, these tests should always +be run after the hook tests. + +A primary requirement for running the FHIR API tests is an access token for Inferno to send in the +`Authorization` header that will grant the access needed to verify API support. The token provided +in the most recent CDS Hooks invocation will be used by default. However, these should be short-lived +per the [CDS Hooks specification](https://cds-hooks.hl7.org/2026Jan/en/#passing-the-access-token-to-the-cds-service) +potentially only remaining active during the hook invocation itself. Since the FHIR API tests are performed +outside of a hook invocation and are long-running due to their comprehensive nature, the token provided +on in the hook request may not be usable for these tests. If the token is not usable, testers +may override the token and provide an appropriate token (and other details such as a refresh token and corresponding +endpoints) in the "OAuth Credentials" input of the the FHIR API tests. Note that the token +must have the same access scopes as those provided during the hook requests. + +## Interpreting Results + +Due to [limitations of these tests](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Overview#test-scope-and-limitations), +passing this test suite in its entirety [does not prove conformance to the specification](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Overview#conformance-criteria--interpreting-results). +Additionally, some of the capabilities tested by this suite are optional including many of the hooks +and response types, meaning that a conformant system will not necessarily be able to pass all tests +in the suite. + +With those caveats, a passing execution of this suite would include: +- Passing the corresponding hook group under the 1.2 Hooks group for each hook supported. +- Passing all other groups, including + - 1.1 Registration + - 1.3 Cross Hook + - 1.4 Long-running Hook Request + - 2 FHIR API + +## Demonstration Execution + +If you would like to try out the order-sign hook invocation tests against +[the public CRD reference client](https://crd-request-generator.davinci.hl7.org/), +you can do so using the following steps: + +1. Create a "Da Vinci CRD Client v2.2.1 Test Suite" session using the default "US Core Version", + which will not be used. +1. Select the "CRD Request Generator RI" option from the Preset dropdown in the upper left. +1. Select the "1.2.6 order-sign" hook group on the left menu and click on the *RUN TESTS* button in the upper right. +1. Select the response types Inferno should respond with under the **Response types to return + from order-sign hook requests** input and click the "SUBMIT" button. +1. A "User Action Required" dialog will appear asking for order-sign hook invocations to be + made against Inferno's simulated CRD server. +1. Open the [reference client](https://crd-request-generator.davinci.hl7.org/) in another tab/browser. +1. Click the gear button in the upper right to open the configuration screen and update + the following fields: + - *CRD Server*: Inferno's CDS Server discovery endpoint, which will be everything before the + last slash in the endpoint displayed in the "User Action Required" dialog, + e.g., `https://inferno.healthit.gov/suites/custom/crd_client_v221/cds-services`. + - *Order Sign Rest End Point*: the location of the `order-sign` hook endpoint relative to the *CRD Server*, which will be everything after the last slash in the endpoint displayed in the + "User Action Required" dialog, e.g., `order-sign-service`. +1. Click the "save configuration" button in the lower left to close the configuration screen. +1. Click the "Patient Select" button to open patient and order selection. +1. In the first row, click the "Request" drop down on the right side and select "E0250 (Device Request)" + and then click the box to the left with "**Name** William Oster" to select the patient and order. +1. Click the "Submit to CRD and Display Cards" button and cards will display on the right side + of the screen where you can interact with them. +1. Back in Inferno, click the link in the "User Action Required" dialog to continue the tests. A second + "User Action Required" dialog will appear asking for confirmation that the returned cards were + displayed properly. Click the appropriate link based on your interactions with the client in the + previous step. +1. The Inferno tests will complete. NOTE: many tests are expected to fail as this reference implementation + has not been updated to use the v2.2.1 version. + +## Inferno Client vs Server Execution + +For another way to demonstrate test execution without an accompanying UI, see the instructions for +[running the Inferno client and server suites against each other](Running-Suites-Against-Each-Other). \ No newline at end of file diff --git a/docs/Client-Instructions.md b/docs/Client-Instructions.md index 34a2a1d8..6e5bdbbf 100644 --- a/docs/Client-Instructions.md +++ b/docs/Client-Instructions.md @@ -1,33 +1,33 @@ -# Da Vinci CRD Test Kit: Client Testing Instructions +# Da Vinci CRD Client v2.0.1 Test Suite Testing Instructions -This document provides a step-by-step guide for using the Da Vinci CRD Client Test Suite to test +This document provides a step-by-step guide for using the Da Vinci CRD Client v2.0.1 Test Suite to test a **CRD client system**, including instructions for a [demonstration execution](#demonstration-execution) -against the public [CRD client reference implementation](https://crd-request-generator.davinci.hl7.org/). +against a public [CRD client reference implementation](https://crd-request-generator.davinci.hl7.org/). ## Quick Start To execute a simple set of tests targeting a single hook using Inferno's mocked response, follow these steps: -1. Create a Da Vinci CRD Client Suite v2.0.1 session using the default "SMART App Launch Version", +1. Create a "Da Vinci CRD Client v2.0.1 Test Suite" session using the default "SMART App Launch Version", which will not be used. 1. Select the "1.1 Client Registration" group from the list at the left and and click the "RUN TESTS" button in the upper right. -1. Provide the "CRD JWT Issuer (required)" input, which will be used by Inferno to identify +1. Provide the **CRD JWT Issuer** input, which will be used by Inferno to identify CDS Hook invocation requests coming from the client under test. You can also provide - the "CRD JSON Web Key Set (JWKS)" as a URL or raw key set, which is required for Inferno + the **CRD JSON Web Key Set (JWKS)** input as a URL or raw key set, which is required for Inferno to perform complete JWT verification, but is not required for execution. 1. Click the "SUBMIT" button to verify the registration details. You can continue even if the tests fail, e.g., because no JWKS was provided. 1. Select the sub-group under "1.2 Hooks" that corresponds to a hook implemented by the tested client and click the "RUN TESTS" button in the upper right. -1. Select the response types Inferno should respond with under the "Response types to return - from [hook name] hook requests" input (the options depend on which hook was chosen). +1. Select the response types Inferno should respond with under the **Response types to return + from [hook name] hook requests** input (the options depend on which hook was chosen). 1. Click the "SUBMIT" button and a "User Action Required" dialog will be appear asking for hook invocations to be made against the Inferno's simulated service endpoint. 1. Make one or more hook invocations of the target hook against Inferno's simulated service endpoint, including in the request a JWT with the `iss` field equal to the value provided - in the "CRD JWT Issuer (required)" input. If you make a request with a different `iss` + in the **CRD JWT Issuer** input. If you make a request with a different `iss` value, Inferno will not be able to link the request to the test session and will not respond or analyze the request. 1. Once all requests have been made, click the link in the "User Action Required" dialog @@ -48,7 +48,7 @@ group as described in [Quick Start](#quick-start). ### Customizing Responses -The "Custom response for [hook name] hook requests" input can be used to customize the hook +The "Custom response template for [hook name] hook requests" input can be used to customize the hook responses to better fit the configuration of the tested client system. When this input is populated, the corresponding "Response types to return from [hook name] hook requests" input is ignored. See the [documentation on controlling Inferno's simulated CRD responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) @@ -60,7 +60,7 @@ After running one or more hook groups, run group "1.3 Card Must Support" to chec has received and attested to support for all of the required cards ([External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) and [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions)) and demonstrated the display of all of the must support elements in the [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) -when returned on [Converage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) actions. +when returned on [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) actions. Re-run these tests to re-evaluate after making additional requests with adjusted responses (see [Customizing Responses](#customizing-responses)) so that the requisite support is @@ -69,10 +69,10 @@ demonstrated. ### FHIR API Testing Group "2 FHIR API" focuses on the FHIR API of the tested client outside of the context of a CDS Hook -invocation. It focuses on API requirements that go beyond the bsae US Core API requirements that +invocation. It focuses on API requirements that go beyond the base US Core API requirements that are included in CRD STU 2. -When starting the CRD Client Suite session, choose the appropriate version of the SMART +When starting the CRD client suite session, choose the appropriate version of the SMART specification in the "SMART App Launch Version" suite option. Running the tests require 4 types of inputs: @@ -105,18 +105,18 @@ If you would like to try out the order-sign hook invocation tests against [the public CRD reference client](https://crd-request-generator.davinci.hl7.org/), you can do so using the following steps: -1. Create a Da Vinci CRD Client Suite v2.0.1 session using the default "SMART App Launch Version", +1. Create a Da Vinci CRD Client v2.0.1 Test Suite session using the default "SMART App Launch Version", which will not be used. 1. Select the *CRD Request Generator RI* option from the Preset dropdown in the upper left. 1. Select the "1.2.6 order-sign" hook group on the left menu and click on the *RUN TESTS* button in the upper right. 1. Select the response types Inferno should respond with under the "Response types to return from order-sign hook requests" input and click the "SUBMIT" button. 1. A "User Action Required" dialog will appear asking for order-sign hook invocations to be - made against Inferno's simulated CRD Server. + made against Inferno's simulated CRD server. 1. Open the [reference client](https://crd-request-generator.davinci.hl7.org/) in another tab/browser. 1. Click the gear button in the upper right to open the configuration screen and update the following fields: - - *CRD Server*: Inferno's CDS Service discovery endpoint, which will be everything before the + - *CRD Server*: Inferno's CDS server discovery endpoint, which will be everything before the last slash in the endpoint displayed in the "User Action Required" dialog, e.g., `https://inferno.healthit.gov/suites/custom/crd_client/cds-services`. - *Order Sign Rest End Point*: the location of the `order-sign` hook endpoint relative to the *CRD Server*, which will be everything after the last slash in the endpoint displayed in the diff --git a/docs/Client_Details.md b/docs/Client_Details.md deleted file mode 100644 index bfb9caee..00000000 --- a/docs/Client_Details.md +++ /dev/null @@ -1,99 +0,0 @@ -## Simulated CDS Services -This suite provides basic CDS services for -[the six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html). -The discovery endpoint is located at `custom/crd_client/cds-services` under the root Inferno deployment -address, e.g., `https://inferno.healthit.gov/suites/custom/crd_client/cds-services` for the publicly -hosted deployment of this test kit. - -The rest of this section provides details on the implementation of these services and the expected -behavior when invoked by tested clients. - -### Data Fetching During Hook Invocations - -#### CRD and CDS Hooks requirements around data availablity and access - -The CRD IG requires that Clients make data beyond the details provided in the hook request body available -to servers so that payers can use it as a part of coverage determination. The IG lists the [minimum that -payers need to make available](https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#additional-data-retrieval): - -- Patient -- Relevant Coverage -- Authoring Practitioner -- Authoring Organization -- Requested performing Practitioner (if specified) -- Requested performing Organization (if specified) -- Requested Location (if specified) -- Associated Medication (if any) -- Associated Device (if any) - -However, the IG also acknowledges that -- CRD Servers may not always need all of this information in all circumstances. -- CRD Clients may not have all of this information, e.g., the performing practitioner may not be known at order time. -- Specific CRD servers may not be authorized to access all of this data. - -Two mechanisms for making the data available are specified: -- [Prefetch](https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch), where the CRD Server indicates what - data it will always need as a part of discovery and the client provides this information with the hook request. -- [FHIR Resource Access](https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#fhir-resource-access), where - the CRD Server uses an access token provided in the hook request to make FHIR queries to get additional data. - -CRD Clients must provide an access token for data access but are not required to support prefetch (though prefetch -may become required in later versions of the CRD spec). - -#### Inferno simulated services behavior for data availability and access - -Even though this information is not required to be available and accessible in all cases, these tests are designed -to allow CRD Clients to demonstrate that they can make the information captured in their system -available to the CRD Servers on which they invoke hooks. Therefore, -- Inferno [advertizes prefetch templates](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/routes/cds-services.json) - requesting a subset of this data that clients can provide with the hook request if they support prefetch. - Subsequent tests will check that the prefetched data is equivalent to what can be accessed via FHIR queries. -- When a client makes a hook invocation, Inferno will analyze the hook request and prefetched data and attempt to - retrieve the rest of the available resources in the minimum data set. Subsequent tests will check that these - requests all succeeded and fail if they did not. Testers will need to choose a hook invocation target and - payer / user configuration that demonstrates this access. - -#### Fetch interactions - -Inferno performs individual reads for each resource identified. While this involves additional requests, support -for these read interactions is required by the CRD Client capability statement and the US Core Server Capability -Statement that it builds on. In practice clients may support and payers may use more efficient queries that -are not tested by Inferno. - -The one exception is `Coverages`, which are obtained via the same search advertized in -[Inferno's prefetch templates](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/routes/cds-services.json). - -#### Specific elements targeted - -While the CRD STU2 IG does not provide precise definitions of the FHIR elements that constitute the minimum -data set, recent builds of the IG provide more explicit elements that represent the minimum data set as a part -of [minimal prefetch templates](https://build.fhir.org/ig/HL7/davinci-crd/en/Binary-CRDServices.html). -The elements indicated in those prefetch templates informed the set of elements that Inferno looks in to determine -what references to fetch. - -Any literal reference, relative or absolute, Inferno will attempt to read using the provided access token. -Non-literal references will be ignored. - -### CDS Hooks Responses - -CRD Client test suite contains [basic logic to generate CDS Hooks responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) -that meet each of the [CRD Card profiles](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html). -However, these simple cards may not support the target client in demonstrating the full CRD -capabilities of its system. The CRD Client test suite also allows testers to -[provide a template for the responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) -for Inferno to provide back, including directives that determine details of the actual responses -based on the request. This way, testers can configure the responses to match the patients, orders, -and other relevant details of their system allowing a complete demonstration. See the -[documentation on controlling Inferno's simulated CRD responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) -for complete details. - -In either case, Inferno will check that the responses it generates to send back to the client are -conformant and systems will not pass the tests if they are not. - -### SMART Authentication for FHIR API Access - -In order to access the client's FHIR API, Inferno will need to be a -[trusted service](https://cds-hooks.hl7.org/STU2/#trusting-cds-services) -registered as a client using details provided within the suite at time of execution. - - diff --git a/docs/Controlling-Simulated-Responses.md b/docs/Controlling-Simulated-Responses.md index 67a1e397..aa95f143 100644 --- a/docs/Controlling-Simulated-Responses.md +++ b/docs/Controlling-Simulated-Responses.md @@ -1,7 +1,7 @@ -# Controlling Responses from Inferno's Simulated CRD Service +# Controlling Responses from Inferno's Simulated CRD Server -During the CRD Client tests, provider systems are asked to demonstrate -that they can handle conformant cards and system actions retured by CRD Payer Services +During the CRD client tests, provider systems are asked to demonstrate +that they can handle conformant cards and system actions retured by CRD server and allow users to see and take actions based on these returned details. However, provider systems are not expected to be able to handle all conformant responses because details within them, such as specific orders or terminologies @@ -15,8 +15,9 @@ mock simple responses so that testers can get started more easily. ## Mocked Responses -Inferno can generate (mostly) static versions of [each of the cards and system actions specified -by the CRD IG](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html). When no custom response +Inferno can generate (mostly) static versions of each of the cards and system actions specified +by the CRD IG ([v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html), +[v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1/cards.html)). When no custom response template is provided in the test inputs for a hook group, Inferno will mock an example of each card type selected in the "Response types to return..." input. In addition to the logic described below, all returned cards get a unique `uuid` and their summary is prefixed with the invoked hook. @@ -77,7 +78,7 @@ below, all returned cards get a unique `uuid` and their summary is prefixed with a draft self-pay coverage for the patient indicated in the hook request (`context.patientId`). - **[Launch SMART Application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application)**: Inferno's [static launch SMART application card](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/card_responses/launch_smart_app.json) - points to the launch url for the CRD Client test suite. + points to the launch url for the CRD client test suite. ## Tester-directed Custom Responses @@ -109,6 +110,8 @@ Cards can be found in the top-level `cards` field. Testers are responsible for p replace it with a random uuid each time it is returned so that it will always be unique. The same is true for the `suggestion.uuid` field. The following configuration options are available to control which cards are returned for a given request and their content: +- The [`com.inferno.includeForServices` extension](#cominfernoincludeforservices-extension) can + be included to limit the Inferno service endpoints for which the card is included in the response. - The [`com.inferno.inclusionCriteria` extension](#cominfernoinclusioncriteria-extension) can be included to limit the requests for which the card is included in the response. - [Expression tokens](#expression-tokens) can appear in any descendant field or FHIR element to @@ -129,6 +132,8 @@ is defined. In that case, the contents of the `resource` field will be merged in resource(s) when instantiating the action. The same configuration options and logic apply in both cases: +- The [`com.inferno.includeForServices` extension](#cominfernoincludeforservices-extension) can + be included to limit the Inferno service endpoints for which the action is included in the response. - The [`com.inferno.inclusionCriteria` extension](#cominfernoinclusioncriteria-extension) can be included to limit the requests for which the action is included in the response. - The [`com.inferno.resourceSelectionCriteria` extension](#cominfernoresourceselectioncriteria-extension) @@ -148,12 +153,14 @@ string `default`. Specifics for each type of value: converted to a boolean (e.g., collection with one boolean `true` entry or one resource entry) after execution against the hook request, then the entity will be included in the response (see FHIRPath's rules for [conversion of collections to singletons](https://hl7.org/fhirpath/N1/index.html#singleton-evaluation-of-collections) - for details on what will constitute ). Otherwise, the entity is not included in the response. + for details on what will constitute a `true` result). Otherwise, the entity is not included in the + response. - *`default`*: The specifics depend of whether the entity is a card or action: - **Card**: If no other cards are (yet) included in the response, then this card will be included. - - **Action**: If there is no [`com.inferno.resourceSelectionCriteria` extension](#cominfernoresourceselectioncriteria-extension) and no other actions are (yet) included in the - response, then this card will be included. If there is a [`com.inferno.resourceSelectionCriteria` extension](#cominfernoresourceselectioncriteria-extension), then the action will be - instantiated against any selected resource for which no action has yet been + - **Action**: If there is no [`com.inferno.resourceSelectionCriteria` extension](#cominfernoresourceselectioncriteria-extension) + and no other actions are (yet) included in the response, then this card will be included. + If there is a [`com.inferno.resourceSelectionCriteria` extension](#cominfernoresourceselectioncriteria-extension), + then the action will be instantiated against any selected resource for which no action has yet been instantiated. This can be used, for example, to only include a card when the hook has been triggered @@ -174,6 +181,57 @@ on a certain type of order: Notes: - This extension will be removed from the card or action before Inferno returns it to the requesting client. +#### `com.inferno.includeForServices` Extension + +When defined on a card or action, this extension limits the Inferno service endpoints for which +the entity will be included in the response. The extension value is a comma-delimited list of +relative URL strings. Specifics for each type of value: +- *No value*: If the extension is not present or has an empty value, then no service-based + filtering is applied and the entity is always eligible for inclusion (subject to any other + extensions such as `com.inferno.inclusionCriteria`). +- *Comma-delimited URL list*: The entity is included only if at least one of the listed strings + is a substring of the URL path that received the hook request. Matching is case-sensitive. + +This is useful, for example, when you want Inferno to return different responses from the +payers associated with Inferno's two endpoints (`cds-services/...` and `prefetch-subset/cds-services/...`). +Only a single custom response template is associated with a test and it is used by +both Inferno service endpoints. + +For example, to return a card only when the request is received for any of the `prefetch-subset` hooks: + +```json +{ + "cards": [ + { + "summary": "Subset endpoint instructions", + "...", + "extension": { + "com.inferno.includeForServices": "prefetch-subset" + } + } + ] +} +``` + +Or to include a card for both of Inferno's named order-sign endpoints but not others: + +```json +{ + "extension": { + "com.inferno.includeForServices": "cds-services/order-sign-service, prefetch-subset/cds-services/order-sign-subset" + } +} +``` + +Notes: +- This extension is evaluated before `com.inferno.inclusionCriteria`. If a card or action is + excluded by this extension, `com.inferno.inclusionCriteria` is not evaluated for that entity. +- Shorter strings will match more broadly. For example, `prefetch-subset` matches any subset + endpoint while `prefetch-subset/cds-services/order-sign-subset` matches only the order-sign subset endpoint. +- You can target all order-sign endpoints using `order-sign` or all order hooks with `order-`. +- This extension will be removed from the card or action before Inferno returns it to the + requesting client. + #### `com.inferno.resourceSelectionCriteria` Extension When defined on an action, this extension controls how many copies of the action will be included @@ -253,13 +311,15 @@ Notes: - Entries within the returned collection that are not data types (lists or objects) will be ignored. - If multiple entries (not including ignored and nil entries) are returned, then the results will be turned into a comma-delimited list for use in replacing the token. -- While the syntax follows CDS Hooks prefetch tokens, Inferno allows full FHIRPath expressions - instead of the limited set that CDS Hooks allows. +- While the syntax follows CDS Hooks prefetch tokens, Inferno allows additional FHIRPath functions + beyond the [limited set allowed by CDS Hooks](https://cds-hooks.hl7.org/2026Jan/en/#prefetch-tokens-containing-simpler-fhirpath) + when they are made on FHIR resources within the CDS Hooks request. See + the [FHIRPath Evaluation Limitations](#fhirpath-evaluation-limitations) section for details. #### `coverage-information` Defaulting System actions that add the `coverage-information` extension to resources are a response type -for which CRD requires client support. To help testers specify this card type, Inferno will +for which the CRD IG requires client support. To help testers specify this card type, Inferno will populate the following `coverage-information` sub-extensions when not found in `coverage-information` extensions within the response template: - `coverage` sub-extension: Inferno will add a reference to the target Patient's coverage, as @@ -281,7 +341,7 @@ engine. Inferno currently uses the FHIRPath engine built into the official HL7 F to evaluate FHIRPath expressions on FHIR resources. For CDS Hook request fields, Inferno implements a small subset of FHIRPath to bridge to the point in those requests that contain FHIR resources. -Inferno's FHIRPath evaluation for CDS Hook requests provides the most limitations. Thes +Inferno's FHIRPath evaluation for CDS Hook requests provides the most limitations. These include - The [FHIRPath expression](https://hl7.org/fhirpath/N1/index.html#expressions) must be a path with function calls. The use of literals and operators (e.g. the union operator ` | `) is not currently supported. @@ -291,16 +351,17 @@ Inferno's FHIRPath evaluation for CDS Hook requests provides the most limitation Note that once the path reaches a FHIR resource, then other features are supported, such as - the `ofType` function, e.g., `context.draftOrders.entry.resource.ofType(ServiceRequest)` -- more complex where functions, e.g., `context.draftOrders.entry.resource.ofType(ServiceRequest).where(code.coding.code = '12345')` +- more complex `where` functions, e.g., `context.draftOrders.entry.resource.ofType(ServiceRequest).where(code.coding.code = '12345')` Inferno's use of the HL7 FHIR Validator's FHIRPath engine comes with some restrictions as well. - The engine is not configured to resolve profiles or value sets. It has the base FHIR R4 definions loaded, so functions like `ofType` will work, but types defined in IGs or elsewhere cannot be used. -- The FHIRPath engine may not implement the entire [FHIRPath specication](https://hl7.org/fhirpath/N1/index.html). +- The FHIRPath engine may not implement the entire [FHIRPath specication](https://hl7.org/fhirpath/N1/index.html), + for example the `resolve()` function is not supported. -The Inferno team is open to adding support for additional FHIRPath functional. Please submit a -[github issue](https://github.com/inferno-framework/davinci-crd-test-kit/issues) with details +The Inferno team is open to adding support for additional FHIRPath functions. Please submit a +[GitHub issue](https://github.com/inferno-framework/davinci-crd-test-kit/issues) with details of your use case and the additional features that you believe are necessary. ### Complete Example diff --git a/docs/Overview.md b/docs/Overview.md index 6e23c0e2..d3b5a65c 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -1,15 +1,21 @@ # Da Vinci CRD Test Kit Overview -The **Da Vinci Coverage Requirements Discovery (CRD) STU 2.0.1 Test Kit** validates the -conformance of systems to the -[Da Vinci Coverage Requirements Discovery (CRD) STU 2.0.1 FHIR IG](https://hl7.org/fhir/us/davinci-crd/STU2/index.html). +The **Da Vinci Coverage Requirements Discovery (CRD) Test Kit** is a testing tool designed +to validate the conformance of CRD client and server systems to versions of the +Da Vinci Coverage Requirements Discovery (CRD) FHIR Implementation Guide (IG), including +- [Da Vinci Coverage Requirements Discovery (CRD) STU 2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2), and +- [Da Vinci Coverage Requirements Discovery (CRD) STU 2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1) This document provides a high-level overview of the Test Kit, including its purpose, general testing approach, scope, limitations, and guidance on how to interpret results. ## Purpose -The Da Vinci CRD Test Kit is designed to validate the conformance of healthcare IT systems against [version 2.0.1 of the HL7 FHIR Da Vinci Coverage Requirements Discovery (CRD) Implementation Guide (IG)](https://hl7.org/fhir/us/davinci-crd/STU2/). It helps implementers ensure their systems can correctly participate in coverage requirement discovery workflows as defined by the CRD IG. +This test kit helps implementers ensure that their systems can correctly participate in +coverage requirement discovery workflows as defined by the CRD IG. It does so by simulating +an exchange partner for the system under test (when testing a CRD client Inferno will simulate +a CRD server and vice-versa) and verifying that each exchange is conformant and that +all exchanges in aggregate demonstrate the required capabilities. This test kit is [open source](#license) and freely available for use or adoption by the health IT community including EHR vendors, payer systems, health app @@ -21,16 +27,12 @@ FHIR-based data exchange. ## Test Kit Structure The CRD Test Kit contains test suites to test the two actors defined by the CRD specification: -- [CRD - Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html): - responsible for initiating CDS Hooks calls and consuming received decision - support. It is also responsible for returning data requested by the CRD Server +- CRD clients: Clients are responsible for initiating CDS Hooks calls and consuming + received decision support. They are also responsible for returning data requested by the CRD server needed to provide that decision support. This role is played by provider systems in which orders are placed, such as EHRs. See the [Client Details](Client-Details.md) page for more information. -- [CRD - Server](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-server.html): - responsible for responding to CDS Hooks calls and responding with appropriate +- CRD servers: Servers are responsible for responding to CDS Hooks calls and responding with appropriate decision support, which may involve using FHIR requests to gather more data from the client. See the [Server Details](Server-Details.md) page for more information. @@ -62,8 +64,7 @@ While these tests cover core aspects of the CRD IG, there are known limitations: - Much of what the CRD IG specifies is optional, such as which hooks and resource types to support. These tests try to provide testers with an opportunity to exercise as much of their systems as they wish and validate that the exercised - behaviors are correct. However, not all areas of the IG are exercised. For example, - custom hook configuration is not tested. + behaviors are correct. However, some areas of the IG may not be exercised. - CRD workflows involve complex coordination between providers and payers around patients, orders, coverages, and other details. Inferno cannot know what entities are available in the system it is interacting with or what kinds @@ -77,9 +78,14 @@ issues, please consult the following resources: - [Client Testing Limitations](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#testing-limitations) - [Server Testing Limitations](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Details#testing-limitations) - Relevant [requirements](https://inferno-framework.github.io/docs/advanced-test-features/requirements.html) - including those in the [CRD Requirements Spreadsheet](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx), - the [CDS Hooks Requirements Spreadsheet](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx), - and the [CDS Hooks Library Requirements Spreadsheet](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks-library_1.0.1_requirements.xlsx) + including those in the + - CRD Requirements Spreadsheets + - [v2.0.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx) + - [v2.2.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx) + - CDS Hooks Requirements Spreadsheets + - [v2.0 for CRD v2.0.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx) + - [v3.0.0-ballot for CRD v2.2.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx) + - [CDS Hooks Library Requirements Spreadsheet](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks-library_1.0.1_requirements.xlsx) - [CRD Test Kit GitHub Issues page](https://github.com/inferno-framework/davinci-crd-test-kit/issues). ## Conformance Criteria & Interpreting Results @@ -90,8 +96,11 @@ A test run is considered successful if all mandatory tests pass: * **Warnings**: Highlight potential concerns that require manual review * **Skipped Tests**: Occur when prerequisites are not met -Given the known limitations, passing all automated tests does **not** solely constitute full CRD IG conformance. Systems should also meet requirements verified through attestation or other means. +Given the [known limitations](#test-scope-and-limitations), passing all automated tests does **not** +solely constitute full CRD IG conformance. Systems should also meet requirements verified through +attestation or other means. For specific testing prerequisites and detailed test descriptions, refer to: -* [Client Instructions](Client-Instructions.md) -* [Server Instructions](Server-Instructions.md) +* [Client v2.0.1 Suite Testing Instructions](Client-Instructions.md) +* [Client v2.2.1 Suite Testing Instructions](Client-Instructions-v2.2.1.md) +* [Server Suite Testing Instructions](Server-Instructions.md) \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 537328f4..314d68f7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,30 +1,39 @@ # Da Vinci CRD Test Kit Documentation The **Da Vinci Coverage Requirements Discovery (CRD) Test Kit** is a testing tool -that is designed to help implementers validate systems against the STU2 -version of the HL7® FHIR® [Da Vinci Coverage Requirements Discovery Implementation -Guide](https://hl7.org/fhir/us/davinci-crd/STU2/). The following documentation -provides information on how to use and contribute to this test kit. +that is designed to help implementers validate systems against the +HL7® FHIR® [Da Vinci Coverage Requirements Discovery Implementation +Guide](https://hl7.org/fhir/us/davinci-crd/). Currently, it includes +suites that verify the behavior of CRD clients and CRD servers +against the following versions of the CRD IG +- [v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2) +- [v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1) + +The following documentation provides information on how to use and contribute +to this test kit. ## Using this Test Kit -* **[Getting Started](../tree/main/README.md#getting-started)**: Instructions on how to set up and run the test kit. +* **[Getting Started](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/README.md#getting-started)**: Instructions on how to set up and run the test kit. * **[Test Kit Overview](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Overview)**: A detailed explanation of what the test kit does, its scope, and how its tests are structured. -### Using the CRD Client Test Suite +### Using the Da Vinci CRD Client Test Suites * **[Client Testing Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details)**: Description of the client tests. -* **[Client Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions)**: Step-by-step guide for testing client systems, including demonstration executions. -* **[Controlling Simulated CRD Service Responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses)**: Details on how testers can control the responses returned by Inferno's simulated CRD Service during client testing. +* **Client Testing Instructions**: Step-by-step guide for testing client systems, including demonstration executions for both + the [v2.0.1 version](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions) + and the [v2.2.1 version](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions-v2.2.1) +* **[Controlling Simulated CRD server Responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses)**: Details on how testers can control the responses returned by Inferno's simulated CRD server during client testing. -### Using the CRD Server Test Suite -* **[Server Testing Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details)**: Description of the server tests. +### Using the Da Vinci CRD Server Test Suites +* **[Server Testing Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Details)**: Description of the server tests. * **[Server Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Instructions)**: Step-by-step guide for testing server systems, including demonstration executions. ## Contributing to this Test Kit * **[Technical Overview](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Technical-Overview)**: An overview of the test kit's technical design and architecture for developers and contributors. -* **[Running the Client and Server Suites Against Each Other](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Running-Suites-Against-Each-Other)**: Step-by-step guide for using the Client and Server suites to demonstrate the test execution without a separate CRD implementation, which can be useful -for learning as well as debugging. +* **[Running the Client and Server Suites Against Each Other](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Running-Suites-Against-Each-Other)**: + Step-by-step guide for using the client and server suites to demonstrate the test execution without a separate CRD + implementation, which can be useful for learning as well as debugging. ## Reference Documents diff --git a/docs/Running-Suites-Against-Each-Other.md b/docs/Running-Suites-Against-Each-Other.md index b263771c..6b61c0fe 100644 --- a/docs/Running-Suites-Against-Each-Other.md +++ b/docs/Running-Suites-Against-Each-Other.md @@ -2,28 +2,82 @@ During development and debugging, it can be useful to run the client and server suites against each other to confirm behavior, design decisions, or bug fixes. The following -instructions can be used to do so: - -1. Start a "Da Vinci CRD Client Test Suite" session. -1. Choose the "Inferno CRD Server Suite" preset from the drop down in the upper left. -1. Run the Client Registration test group. It should pass. -1. Run the Hooks > Appointment Book test group leaving the inputs as is. A - "User Action Dialog" will appear indicating that Inferno is waiting for the - `appointment-book` hook invocation. -1. In another tab, start a "Da Vinci CRD Server Test Suite" session. -1. Choose the "Inferno CRD Client Suite" preset from the drop down in the upper left. -1. Run the Discovery test group. It should pass. -1. Run the Demonstrate A Hook Response test. It should pass -1. Return to the client suite and click the link to continue the tests. -1. When the attestation wait dialog appears, return to the server tests and look in test - **2.04** "All service responses contain valid cards and optional systemActions" - for the CDS hooks request made and look at the response to verify that the - indicated cards are present. Attest accordingly in the client suite to complete the tests. +instructions can be used to do so. + +## v2.0.1 + +1. Start a "Da Vinci CRD Client v2.0.1 Test Suite" session. +1. Choose the "Run Against the CRD Server Suite" preset from the drop down in the upper left. +1. Run group "1.1 Client Registration". It should pass. +1. In another tab, start a "Da Vinci CRD Server v2.0.1 Test Suite" session. +1. Choose the "Run Against the CRD Client Suite" preset from the drop down in the upper left. +1. Run group "1 Discovery". It should pass. +1. Repeat the following steps for each hook you want to test: + 1. In the client session, run group "1.2.x " leaving the inputs as is. A + "User Action Required" dialog will appear indicating that Inferno is waiting for the + hook invocation. + 1. In the server session, run the corresponding grou "3.x " leaving the inputs + as is. + 1. Once the server test are complete, return to the client tests and click the link + in the "User Action Required" dialog indicating requests are complete to continue the + tests. + 1. A second "User Action Required" dialog will appear asking you to attest that the returned + responses were displayed. Choose your response based on the results of the response + evaluation in the server tests. +1. Run client group "1.3 Card Must Support" and Server group "3.7 Required Card Response + Validation" to complete the server tests. Notes: -- The server preset contains requests for all hooks, so other hooks can be tested as well. +- The server preset contains requests for all hooks, so any can be tested. - The execution uses the mocked CRD cards created by Inferno. - While the server tests do not include a simlulated FHIR API, the client present includes inputs for testing the FHIR API group against the public Inferno reference server. However, these tests will largely fail since the public reference server is read-only meaning that - the update tests will fail. \ No newline at end of file + the update tests will fail. + +## v2.2.1 + +Running the v2.2.1 suites against each other requires 2 server sessions, one connecting to each +of the [v2.2.1 service endpoints](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#multiple-service-endpoints). + +1. Start a "Da Vinci CRD Client v2.2.1 Test Suite" session using any version of US Core / USCDI +1. Apply preset "Run against the CRD Server Suite" +1. Run client group "1.1 Registration" +1. Create a "Da Vinci CRD Server v2.2.1 Test Suite" session in a new tab that will connect to the "complete prefetch" endpoints +1. Apply preset "Run against the CRD Client Suite" +1. Run server group "1 Discovery" +1. Create a second "Da Vinci CRD Server v2.2.1 Test Suite" session in a new tab that will connect to the "subset prefetch" endpoints +1. Apply preset "Run Against the CRD Client Suite's Prefetch Subset Services" +1. Run server group "1 Discovery" +1. Follow the following procedure for each of the hook groups: + 1. In the client session, run group "1.2.x ". + 1. When a "User Action Required" dialog appears, switch to the "complete prefetch" server session and run group "3.x " + 1. Once complete, switch to the "subset prefetch" server session and run group "3.x " + 1. Once complete, return to the client session and click the link in the "User Action Required" dialog to continue. Attest to the display of cards when the next "User Action Required" dialog appears. +1. Run client group "1.3 Cross Hook". +1. Run server group "3.7 Required Card Response Validation" in both server sessions. + +Some tests will fail, including +- Because mocked responses are used, not all coverage-info extension elements are demonstrated in client test 1.3.01. +- TLS tests in the client suite (1.2.x.3.08) and server suites (1.01) will fail when executed in a local system. +- Validation of response cards in client and server suites may not pass at this time. + +### Additional Optional Steps for FHIR API Testing + +1. In the "subset prefetch" server sessions, run group "2 Demonstrate A Hook Response", with + the following changes to inputs: + - Update the **Mock EHR Data** input with the contents of the [stress-test-Bundle.json](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json) + file. This contains a complete set of US Core data. NOTE: its size introduces a small amount of lag into the Inferno UI + when the input dialog is open. + - Update the "Require acknowledgement of completed hook requests?" input to have the "Continue on user acknowledgement" + option selected. +2. Once a "User Action Required" dialog appears, run client group "2 FHIR API". This will run for a while. +3. Once complete, return to the server session and click the link to complete the tests. + +Some tests will fail, including: +- Client test 2.1.1.01 requiring TLS will fail when executed in a local system. +- Client test 2.1.2.01 will fail because the CRD client simulation in the Server suite does not automatically update the Bundle with + resource updates in `systemActions`. +- The server tests will fail as expected because no responses were sent by the client suite. +- - Client tests 1.2.x.3.01 validating that the hook requests structure and content will fail with errors on the 4th and 5th requests only because the server suite purposefully sends non-conformant requests with unexpected fields to verify that the server ignores them. + diff --git a/docs/Server-Details.md b/docs/Server-Details.md index 0638a19f..a1920373 100644 --- a/docs/Server-Details.md +++ b/docs/Server-Details.md @@ -36,7 +36,7 @@ validated with the Java validator using `tx.fhir.org` as the terminology server. ### Trusting Inferno's CDS Client As specified in the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#trusting-cds-clients), -each time a CDS Client transmits a request to a CDS Service which requires authentication, +each time a CDS client transmits a request to a CDS Service which requires authentication, the request MUST include an Authorization header presenting the JWT as a “Bearer” token: `Authorization: Bearer {{JWT}}` diff --git a/docs/Server-Instructions.md b/docs/Server-Instructions.md index d5db776d..a5a69b5d 100644 --- a/docs/Server-Instructions.md +++ b/docs/Server-Instructions.md @@ -1,12 +1,12 @@ # Da Vinci CRD Test Kit: Server Testing Instructions -This document provides a step-by-step guide for using the Da Vinci CRD Server Test Suite to test +This document provides a step-by-step guide for using the Da Vinci CRD server Test Suite to test a **CRD server system**, including instructions for a [demonstration execution](#demonstration-execution) against the public [CRD server reference implementation](https://crd.davinci.hl7.org/). ## Quick Start -Inferno needs to know 4 basic pieces of information to invoke a hook on a CRD Server: +Inferno needs to know 4 basic pieces of information to invoke a hook on a CRD server: - **CRD server base URL**: the root discovery endpoint where Inferno will discover hook service details. - **Discovery Authentication**: whether the discovery endpoint requires authentication. - **Signature Algorithm**: which supported signing algorithm to use - `ES384` or `RS384`. diff --git a/docs/Technical-Overview.md b/docs/Technical-Overview.md index 9130f1d2..e18f476a 100644 --- a/docs/Technical-Overview.md +++ b/docs/Technical-Overview.md @@ -15,30 +15,121 @@ The CRD Test Kit is built upon the Inferno Framework and adheres to its core des ## Code Organization -The primary codebase for the CRD Test Kit resides within the `lib/davinci_crd_test_kit/` directory. Key subdirectories and files under that include: +The primary codebase for the CRD Test Kit resides within the [`lib/davinci_crd_test_kit/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/) +directory. Key subdirectories and files under that include: -* **[`crd_client_suite.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/crd_client_suite.rb)**: Defines the main test suite for CRD clients. -* **[`crd_server_suite.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/crd_server_suite.rb)**: Defines the main test suite for CRD servers. +* **[`client`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/client) directory**: + contains code related to the client actor test suites. +* **[`cross_suite`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/cross_suite) directory**: + contains code that is shared or is intended to be shared between client and server suites. +* **[`server`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/server) directory**: + contains code related to the server actor test suites. + +Files that control the display of the test kit itself within an inferno platform deployment include * **[`metadata.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/metadata.rb)**: Contains metadata for the CRD test kit, including its title, description (which appears in the Inferno UI), and suite IDs. This is a crucial file for how the test kit presents itself in the Inferno Framework. * **[`version.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/version.rb)**: Specifies the version of the test kit. -* **[`card_responses/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/card_responses) directory**: contains template responses used when to mock responses in the CRD client tests ([details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses)). -* **[`client_tests/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/client_tests) directory**: contains the tests and groups used in the client suite. -* **[`ext/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/ext) directory**: contains an extension of the Inferno base runnable logic to uniformly handle CORS. -* **[`igs/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/igs) directory**: contains a local copy of the CRD v2.0.1 IG. * **[`requirements/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/requirements) directory**: contains extracted CRD and CDS Hooks requirements and related files used by the [Inferno Requirements Tools](https://inferno-framework.github.io/docs/advanced-test-features/requirements.html). -* **[`routes/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/routes) directory**: contains endpoints and route logic for when Inferno responds to external requests, including discovery and hook endpoints for the client suite's simulated CRD Server and a jwks endpoint for the server suite's simulated CRD client ([jwk set](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/crd_jwks.json)). NOTE: the hook endpoint response generation logic lives at the top-level: [custom_service_response.rb](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/custom_service_response.rb) and [mock_service_response.rb](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/mock_service_response.rb). -* **[`server_tests/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/server_tests) directory**: contains the tests used in the server suite. NOTE: the server groups are defined one directory level up. -* **[`cards_identification.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cards_identification.rb)**: Defines the logic for identifying the CRD type of a CDS Hook card or system action (e.g., [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) or [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)). -* Verification Logic: Several files define the logic for verifying the conformance of CDS Hooks requests and responses, including cards to CRD card profiles (e.g., [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) or [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)). - - **[`cards_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cards_validation.rb)** - - **[`client_hook_request_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client_hook_request_validation.rb)** - - **[`hook_request_field_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/hook_request_field_validation.rb)** - - **[`server_hook_request_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/server_hook_request_validation.rb)** - - **[`suggestion_actions_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/suggestion_actions_validation.rb)** -* Response Generation Support: Several files define logic that supports custom response creation: - - **[`fhirpath_on_cds_request.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/fhirpath_on_cds_request.rb)**: Contains logic to execute FHIRPath expression on CDS Hook requests, which is used in the creation of [custom responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses). Note that there are [critical limitations](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#fhirpath-evaluation-limitations). - - **[`gather_response_generation_data.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/gather_response_generation_data.rb)**: Contains logic to request data from the CRD client, which is used in the creation of [custom responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) and also to verify data provided via prefetch. - - **[`replace_tokens.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/replace_tokens.rb)**: Contains logic to replace [dynamic tokens in custom response templates](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#expression-tokens), which is used in the creation of [custom responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses). Leverages the capability to [execute FHIRPath on CDS Hook requests](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/fhirpath_on_cds_request.rb). + +### Actor-specific Organization and Key Files + +Within the `client` and `server` actor directories, files are generally organized as follows +* directories corresponding to specific versions, e.g., [`client/v2.2.1`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/client/v2.2.1), + contain the suite, group, and test definitions for the suite corresponding to that version. They contain + one level of sub-folders corresponding to different functional areas. +* code shared across versions lives directly within the actor directories and in other sub folders. This + includes both shared verification logic + as well as actor simulations, e.g., for the client suites helper modules like [tagged_request_load_helper.rb](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb) + and the endpoints simulating a CRD server in [`client/endpoints`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/client/endpoints). + +#### Key Client Components + +- [**CDS service simulation code**](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/client/endpoints): + Logic for responding to CDS Hooks Invocation is shared across all client suites and includes the following files: + - [*`cds_services_discovery_handler.rb`*](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb): + Serves the discovery responses by finding the corresponding file under the version-specific directory. + - [*`hook_request_endpoint.rb`*](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb): + Primary Inferno [Suite Endpoint](https://inferno-framework.github.io/docs/advanced-test-features/waiting-for-requests.html#advanced-incoming-request-handling) + definition used for all hooks. Responsible for finding the session, building the response, and storing it in the database tagged for + later use during evaluation. + - [*`gather_response_generation_data.rb`*](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb): + Used by `hook_request_endpoint.rb` to make FHIR requests against the invoking client's FHIR APIs. The scope of these requests is + different for [v2.0.1](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#data-fetching-during-hook-invocations) and [v2.2.0](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#prefetch-and-additional-data-retrieval). + - [*`mock_service_response.rb`*](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb): + Used by *hook_request_endpoint.rb* to create simple mocked hook responses based on types selected when running the tests. Templates + for the responses live in the [`mocked_card_responses` subdirectory](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses) + [*`custom_service_response.rb`*](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb): + used by *hook_request_endpoint.rb* to generate [custom responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) based on a tester-provided template specified when running the tests. +- [**`crd_client_options.rb`**](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/crd_client_options.rb): + Inferno [suite option](https://inferno-framework.github.io/docs/advanced-test-features/test-configuration.html#suite-options) + constants used across all client suites. +- [**`tagged_request_load_helper.rb`**](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb): + A utility module design to help load request messages tagged by the simulated CRD server endpoints. Many tests load these + requests to evaluate them and their responses so this module reduces code duplication significantly. It contains options + for loading requests related to a specific hook or all hooks. +- [**`multi_request_message_helper.rb`**](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb): + A utility module for logging errors and warnings on tests that evaluate multiple requests. Adds prefixes so that testers + can identify which request triggered the issue. Also identifies which requests had errors so that they can be identified + in the top-level result message. + +#### Key Server Components + +- [**FHIR server simulation code**](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/server/endpoints/mock_ehr): + Defines logic implementing a simple FHIR server that supports read, search, create, update, and delete interactions + by accessing and manipulating a FHIR Bundle stored within an Inferno input tied to a specific session. This allows the tester + to control the data hosted on the server. The search implementation is the most complex and re-uses the US Core Test Kit's logic + to check the results returned in searches. The implementation is still relatively new. Based on the data structure, it is not + expected to scale to large numbers of resources, but it successfully served the [Inferno Reference Server data](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json) + used to verify the (g)(10) test kit behavior at least as fast as the Inferno Reference Server itself. +- [**JSON Web Key Set hosting**](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/server/endpoints): + Within the `server/endpoints` directory are several files that handle the publication of a jwks that the Inferno's simulated CRD + client will use to identify itself and sign JWTs on hook invocations made as a part of the server tests. +- [**Hook invocation job**](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb): + In order to support the simulated FHIR server based on a Bundle in a session input and make it active during hook invocations made by + Inferno's simulated CRD client, these hook invocations must be made during a wait test. Invocation tests spawn instances of this job + which runs and performs the hook invocations while Inferno is waiting. The job either triggers the continuation of the tests once + complete or waits for tester input depending on the inputs provided by the tester. +- [**`server_hook_helper.rb`**](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/server/server_hook_helper.rb): + A utility module for helping to identify hooks to invoke and load requests to analyze. + +### `cross_suite` Organization and Key Files + +Key shared logic within the [`cross_suite`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/lib/davinci_crd_test_kit/cross_suite) +directory includes: +* **[`base_urls.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/base_urls.rb)**: + defines urls used by suites for both client and server actors, such as pass and fail continuation urls displayed in wait dialogs. +* **[`cards_identification.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb)**: Defines the logic for identifying the CRD type of a CDS Hook card or system action (e.g., [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) or [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)). +* **Manual Verification Logic**: Several files define logic for verifying the conformance of CDS Hooks requests and responses, + including cards to CRD card profiles (e.g., [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) + or [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)). Starting with the v2.2.1 + version, the CRD IG publishes logical models which can be used by the HL7 FHIR validator to verify. However, the published models + are incomplete and contain some inconsistencies that mean these hand-created versions are still in use. + - **[`cards_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/cards_validation.rb)** + - **[`hook_request_field_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/hook_request_field_validation.rb)** + - **[`suggestion_actions_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/suggestion_actions_validation.rb)** +* **Logical Model-based Verification Logic**: Logical models describing CRD requests and responses are new as of the [2.2.1 version of the IG](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/artifacts.html#structures-logical-models). + Shared modules for performing validation against these models that attempt to correct for gaps and bugs in them are available: + - **[`cards_logical_model_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/cards_logical_model_validation.rb)**: + Card logical models in the 2.2.1 version require some response mangling to get to work, which is handled by this module. + - **[`requests_logical_model_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb)**: Unlike card models, request models can be used directly. +* **Prefetch Verification Logic**: because prefetch details are defined by the CRD server, the logical models introduced starting in CRD v2.2.1 + do not verify prefetch details provided in CRD requests. Furthermore, the requirements evolved significantly from v2.0.1, meaning that there + are several modules assisting with prefetch verification: + - **[`prefetch_contents_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb)**: Used to check v2.0.1 prefetch fields for validity. In that version support for prefetch is optional. + - **[`prefetch_completeness_checker.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb)**: + In the 2.2.1 version, prefetch support is required including standard prefetch templates that payers can use and expect + the corresponding data. This module checks the prefetch field of a request against a prefetch definition + from a discovery response. + - **[`prefetch_profile_validation.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb)**: + Checks that the resources provided under the prefetch field conform to the associated CRD profiles. +* **FHIRPath Support**: Prefetch checking and custom response generation leverage FHIRPath executed on CDS Hooks requests. + The FHIRPath module that Inferno uses does not support execution on general json objects like CDS Hooks requests + or handle functions like `resolve()`. A wrapper is provided to support these capabilities for use in the test kit, including: + - **[`fhirpath_on_cds_request.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/fhirpath_on_cds_request.rb)**: Contains logic to execute FHIRPath expression on CDS Hook requests. Note that there + are [critical limitations](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#fhirpath-evaluation-limitations). + - **[`replace_tokens.rb`](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/replace_tokens.rb)**: Contains logic to replace [dynamic tokens in custom response templates](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#expression-tokens), which is used in the creation of [custom responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) + as well as when evaluating prefetch templates. + +### Additional Files and Directories At the top level of this repository are some additional files and directories of note: * **[`config/`](https://github.com/inferno-framework/davinci-crd-test-kit/tree/main/config) Directory**: contains `.conf` configuration files for nginx that help wire test kit components together when run in Docker mode or Ruby-based developer mode. @@ -52,8 +143,12 @@ At the top level of this repository are some additional files and directories of * **[Inferno Framework](https://inferno-framework.github.io/)**: The foundational platform upon which this test kit is built. Knowledge of Inferno's architecture and development patterns is essential for significant contributions. * **[HL7 FHIR R4](https://hl7.org/fhir/R4/index.html)**: The core standard for data exchange. -* **[Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/)**: The specific set of rules and profiles this test kit validates against. -* **[CDS Hooks Implementation Guide](https://cds-hooks.hl7.org/STU2/)**: The underlying framework for integrating decision support into clinical workflows. +* **[Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/)**: The specific set of rules and profiles this test kit validates against. This test kit contains suites that target two versions of the IG: + - [v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2) + - [v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1) +* **[CDS Hooks Implementation Guide](https://cds-hooks.hl7.org)**: The underlying framework for integrating decision support into clinical workflows. Each CRD IG version uses a specific CDS Hooks version: + - [CRD v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2) uses [CDS Hooks v2.0.1](https://cds-hooks.hl7.org/STU2/) + - [CRD v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1) uses [CDS Hooks v3.0.0-ballot](https://cds-hooks.hl7.org/2026Jan) * **[FHIR Java Validator](https://confluence.hl7.org/spaces/FHIR/pages/35718580/Using+the+FHIR+Validator)**: Used for validating resource conformance. * **Terminology Server ([`tx.fhir.org`](https://tx.fhir.org/))**: Used by the validator to resolve terminology and validate code bindings. * **[Ruby](https://www.ruby-lang.org/en/)**: The programming language used for Inferno and this test kit. @@ -76,17 +171,35 @@ When making changes to the test kit itself, it's important to ensure the changes * Any local test servers or client simulators you have. * The provided Postman collection for client tests. * This helps catch issues that RSpec tests might miss, especially those related to UI interactions or workflow logic as experienced by a user. -6. **Update Documentation**: If your changes affect user-facing behavior, test procedures, or technical details, update the relevant documentation files in `/docs/`. These will be automatically mirrored to the repository's [GitHub Wiki](https://github.com/inferno-framework/davinci-pas-test-kit/wiki). +6. **Update Documentation**: If your changes affect user-facing behavior, test procedures, or technical details, + update the relevant documentation files in `/docs/`. These will be automatically mirrored to the repository's + [GitHub Wiki](https://github.com/inferno-framework/davinci-crd-test-kit/wiki). ## Contribution Guidelines +We welcome contributions in the form of bug reports or enhancement suggestions as well as implementations +submitted for our review via a pull request. + +To report an bug or suggest an enhancement, use the [GitHub Issues page](https://github.com/inferno-framework/davinci-crd-test-kit/issues) for the repository. + +When submitting a PR with an update to the code base for us to review, follow these guidelines +to ensure that your update is one that we can commit to reviewing and maintaining: * **Follow Existing Patterns**: Try to adhere to the coding style and architectural patterns already present in the test kit and the Inferno Framework. * **Write RSpec Tests**: For new logic or significant changes, add corresponding RSpec tests. -* **Keep Documentation Updated**: Ensure your contributions are reflected in the documentation. -* **Report Issues**: Use the [GitHub Issues page](https://github.com/inferno-framework/davinci-pas-test-kit/issues) for the repository to report bugs or suggest enhancements. -* **Pull Requests**: Submit changes via pull requests for review. +* **Update Presets**: If your changes add inputs, update any relevant presets with values for + those inputs. * **Update Documentation**: Please be sure to update all suite descriptions, test descriptions, the README, and the contents of the `./docs` folder of this repository along with code changes. +* **Provide Manual Testing Instructions**: In your PR, provide instructions for running the + tests in a way that demonstrates that the change is working. If a new test or verification + has been added, include instructions for both a passing and failing example. ## Unusual Implementation Details -* **Test Data Input**: For client and server testing, the kit relies heavily on users providing their own conformant responses or requests that are designed to elicit specific behavior within the tested system. This avoids artificial requirements where the tested system must be configured with Inferno-specific details not present in the CRD or underlying specifications. +* **Test Data Input**: For client and server testing, the suites in this test kit rely heavily + on testers providing their own conformant responses or requests that are designed to elicit + specific behavior within the tested system. This avoids artificial requirements where + the tested system must be configured with Inferno-specific details not present in the + CRD or underlying specifications. To ensure that Inferno's use of tester-provided content + demonstrates conformant exchange, the content is checked against the relevant requirements + for the actor that Inferno is simulating as a part of testing the exchange (these tests + are labled as "simulation verification" tests). diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 0ec5b1e7..3b186456 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -4,12 +4,13 @@ * [Getting Started](https://github.com/inferno-framework/davinci-crd-test-kit/?tab=readme-ov-file#getting-started) * [Test Kit Overview](Overview) -**Client Suite** +**Client Suites** * [Client Testing Details](Client-Details) -* [Client Testing Instructions](Client-Instructions) -* [Simulated CRD Service Responses](Controlling-Simulated-Responses) +* [Client v2.0.1 Testing Instructions](Client-Instructions) +* [Client v2.2.1 Testing Instructions](Client-Instructions-v2.2.1) +* [Simulated CRD Server Responses](Controlling-Simulated-Responses) -**Server Suite** +**Server Suites** * [Server Testing Details](Server-Details) * [Server Testing Instructions](Server-Instructions) @@ -18,9 +19,15 @@ * [Running the Suites Against Each Other](Running-Suites-Against-Each-Other) **Reference Documents & External Links** -* [CRD Requirements Spreadsheet](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx) -* [CDS Hooks Requirements Spreadsheet](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx) +* CRD Requirements Spreadsheets + * [v2.0.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.0.1_requirements.xlsx) + * [v2.2.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx) +* CDS Hooks Requirements Spreadsheets + * [v2.0 for CRD v2.0.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks_2.0_requirements.xlsx) + * [v3.0.0-ballot for CRD v2.2.1](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx) * [CDS Hooks Library Requirements Spreadsheet](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/requirements/cds-hooks-library_1.0.1_requirements.xlsx) -* [Da Vinci CRD IG (STU2)](https://hl7.org/fhir/us/davinci-crd/STU2/) +* Da Vinci CRD IG + * [v2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2/) + * [v2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1/) * [Inferno Framework](https://inferno-framework.github.io/) * [Report an Issue](https://github.com/inferno-framework/davinci-crd-test-kit/issues) diff --git a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites.yaml b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites.yaml index 685f0fe3..df49c572 100644 --- a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites.yaml +++ b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites.yaml @@ -1,12 +1,12 @@ sessions: - - suite_id: crd_client + - suite: crd_client name: client - preset_id: inferno-crd-server-suite + preset: inferno-crd-server-suite suite_options: smart_app_launch_version: smart_app_launch_2 - - suite_id: crd_server + - suite: crd_server name: server - preset_id: inferno-crd-client-suite + preset: inferno-crd-client-suite # normalized_strings: # - replacement: @@ -24,14 +24,14 @@ steps: - state_description: Wait at Client test 1.1.02 (attestation) session: client status: waiting - last_test: 1.1.02 + last_completed: 1.1.02 command: "curl -o /dev/null -s '{wait_outputs.attest_true_url}'" action_description: GET the attestation URL - state_description: Finished Client Group 1.1 Client Registration session: client status: done - last_test: 1.1.02 + last_completed: 1.1 start_run: session: client runnable: 1.2.1 @@ -40,7 +40,7 @@ steps: - state_description: Wait at Client test 1.2.1.01 Requests received for appointment-book hook session: client status: waiting - last_test: 1.2.1.01 + last_completed: 1.2.1.01 start_run: session: server runnable: 1 @@ -50,7 +50,7 @@ steps: - state_description: Finished Server Group 1 Discovery session: server status: done - last_test: 1.03 + last_completed: 1 start_run: session: server runnable: 2 @@ -59,7 +59,7 @@ steps: - state_description: Finished Server Group 2 Demonstrate a Hook Response session: server status: done - last_test: 2.04 + last_completed: 2 start_run: session: server runnable: 3.1 @@ -68,7 +68,7 @@ steps: - state_description: Finished Server Group 3.1 Hook Tests > appointment-book session: server status: done - last_test: 3.1.13 + last_completed: 3.1 command: "curl -o /dev/null -s '{client.wait_outputs.continuation_url}'" next_poll_session: client action_description: Indicate that appointment-book invocations are complete @@ -76,14 +76,14 @@ steps: - state_description: Wait at Client test 1.2.1.13 Check that returned decision support details are displayed to the user session: client status: waiting - last_test: 1.2.1.13 + last_completed: 1.2.1.13 command: "curl -o /dev/null -s '{wait_outputs.attest_true_url}'" action_description: Attest that the cards have been displayed - state_description: Finished Client Group 1.2.1 Hooks > appointment-book session: client status: done - last_test: 1.2.1.13 + last_completed: 1.2.1 start_run: session: client runnable: 1.2.2 @@ -92,7 +92,7 @@ steps: - state_description: Wait at Client test 1.2.2.01 Requests received for encounter-start hook session: client status: waiting - last_test: 1.2.2.01 + last_completed: 1.2.2.01 start_run: session: server runnable: 3.2 @@ -102,7 +102,7 @@ steps: - state_description: Finished Server Group 3.2 Hook Tests > encounter-start session: server status: done - last_test: 3.2.13 + last_completed: 3.2 command: "curl -o /dev/null -s '{client.wait_outputs.continuation_url}'" next_poll_session: client action_description: Indicate that encounter-start invocations are complete @@ -110,14 +110,14 @@ steps: - state_description: Wait at Client test 1.2.2.13 Check that returned decision support details are displayed to the user session: client status: waiting - last_test: 1.2.2.13 + last_completed: 1.2.2.13 command: "curl -o /dev/null -s '{wait_outputs.attest_true_url}'" action_description: Attest that the cards have been displayed - state_description: Finished Client Group 1.2.2 Hooks > encounter-start session: client status: done - last_test: 1.2.2.13 + last_completed: 1.2.2 start_run: session: client runnable: 1.2.3 @@ -126,7 +126,7 @@ steps: - state_description: Wait at Client test 1.2.3.01 Requests received for encounter-discharge hook session: client status: waiting - last_test: 1.2.3.01 + last_completed: 1.2.3.01 start_run: session: server runnable: 3.3 @@ -136,7 +136,7 @@ steps: - state_description: Finished Server Group 3.3 Hook Tests > encounter-discharge session: server status: done - last_test: 3.3.13 + last_completed: 3.3 command: "curl -o /dev/null -s '{client.wait_outputs.continuation_url}'" next_poll_session: client action_description: Indicate that encounter-discharge invocations are complete @@ -144,14 +144,14 @@ steps: - state_description: Wait at Client test 1.2.3.13 Check that returned decision support details are displayed to the user session: client status: waiting - last_test: 1.2.3.13 + last_completed: 1.2.3.13 command: "curl -o /dev/null -s '{wait_outputs.attest_true_url}'" action_description: Attest that the cards have been displayed - state_description: Finished Client Group 1.2.3 Hooks > encounter-discharge session: client status: done - last_test: 1.2.3.13 + last_completed: 1.2.3 start_run: session: client runnable: 1.2.4 @@ -160,7 +160,7 @@ steps: - state_description: Wait at Client test 1.2.4.01 Requests received for order-select hook session: client status: waiting - last_test: 1.2.4.01 + last_completed: 1.2.4.01 start_run: session: server runnable: 3.4 @@ -170,7 +170,7 @@ steps: - state_description: Finished Server Group 3.4 Hook Tests > order-select session: server status: done - last_test: 3.4.15 + last_completed: 3.4 command: "curl -o /dev/null -s '{client.wait_outputs.continuation_url}'" next_poll_session: client action_description: Indicate that order-select invocations are complete @@ -178,14 +178,14 @@ steps: - state_description: Wait at Client test 1.2.4.13 Check that returned decision support details are displayed to the user session: client status: waiting - last_test: 1.2.4.13 + last_completed: 1.2.4.13 command: "curl -o /dev/null -s '{wait_outputs.attest_true_url}'" action_description: Attest that the cards have been displayed - state_description: Finished Client Group 1.2.4 Hooks > order-select session: client status: done - last_test: 1.2.4.13 + last_completed: 1.2.4 start_run: session: client runnable: 1.2.5 @@ -194,7 +194,7 @@ steps: - state_description: Wait at Client test 1.2.5.01 Requests received for order-dispatch hook session: client status: waiting - last_test: 1.2.5.01 + last_completed: 1.2.5.01 start_run: session: server runnable: 3.5 @@ -204,7 +204,7 @@ steps: - state_description: Finished Server Group 3.5 Hook Tests > order-dispatch session: server status: done - last_test: 3.5.13 + last_completed: 3.5 command: "curl -o /dev/null -s '{client.wait_outputs.continuation_url}'" next_poll_session: client action_description: Indicate that order-select invocations are complete @@ -212,14 +212,14 @@ steps: - state_description: Wait at Client test 1.2.5.13 Check that returned decision support details are displayed to the user session: client status: waiting - last_test: 1.2.5.13 + last_completed: 1.2.5.13 command: "curl -o /dev/null -s '{wait_outputs.attest_true_url}'" action_description: Attest that the cards have been displayed - state_description: Finished Client Group 1.2.5 Hooks > order-select session: client status: done - last_test: 1.2.5.13 + last_completed: 1.2.5 start_run: session: client runnable: 1.2.6 @@ -228,7 +228,7 @@ steps: - state_description: Wait at Client test 1.2.6.01 Requests received for order-sign hook session: client status: waiting - last_test: 1.2.6.01 + last_completed: 1.2.6.01 start_run: session: server runnable: 3.6 @@ -238,7 +238,7 @@ steps: - state_description: Finished Server Group 3.6 Hook Tests > order-sign session: server status: done - last_test: 3.6.15 + last_completed: 3.6 command: "curl -o /dev/null -s '{client.wait_outputs.continuation_url}'" next_poll_session: client action_description: Indicate that order-select invocations are complete @@ -246,14 +246,14 @@ steps: - state_description: Wait at Client test 1.2.6.13 Check that returned decision support details are displayed to the user session: client status: waiting - last_test: 1.2.6.13 + last_completed: 1.2.6.13 command: "curl -o /dev/null -s '{wait_outputs.attest_true_url}'" action_description: Attest that the cards have been displayed - state_description: Finished Client Group 1.2.6 Hooks > order-select session: client status: done - last_test: 1.2.6.13 + last_completed: 1.2.6 start_run: session: client runnable: 1.3 @@ -262,7 +262,7 @@ steps: - state_description: Finished Client Group 1.3 Card Must Support session: client status: done - last_test: 1.3.03 + last_completed: 1.3 start_run: session: server runnable: 3.7 @@ -272,6 +272,6 @@ steps: - state_description: Finished Server Group 3.7 Required Card Response Validation session: server status: done - last_test: 3.7.03 - command: END_SCRIPT + last_completed: 3.7 + action: END_SCRIPT action_description: Script Completed diff --git a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_client_expected-old-txserver-errors?.json b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_client_expected-old-txserver-errors?.json new file mode 100644 index 00000000..3a50829d --- /dev/null +++ b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_client_expected-old-txserver-errors?.json @@ -0,0 +1 @@ +[{"id":"c7aa0bd4-bce2-4df2-9949-1dad41e8a1a7","created_at":"2026-03-09T16:31:07.000-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_registration_verification","test_run_id":"249fc058-a0e8-4eab-a6bd-3f9cd460c633","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:07.000-04:00"},{"id":"79bbaac4-5717-4648-8eac-40a2fda955ca","created_at":"2026-03-09T16:31:07.005-04:00","inputs":[],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=4e74e4cc265348a90909f761d93b40648898a7b3b87a7182bacb6c1f91bbefdc"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=4e74e4cc265348a90909f761d93b40648898a7b3b87a7182bacb6c1f91bbefdc"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_service_registration_attestation","test_run_id":"249fc058-a0e8-4eab-a6bd-3f9cd460c633","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:10.049-04:00"},{"id":"bc925b12-5061-44e8-9a50-da9cb8b2f39a","created_at":"2026-03-09T16:31:10.061-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n The `iss` claim of the JWT in the Authorization header sent by the CRD client under test on\n all CRD requests. This value will be used to associate incoming requests with this test\n session and any requests that use a different `iss` value will not be recognized.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The CRD client's JWK Set containing it's public key. May be either\n a publicly accessible url containing the JWKS, or the raw JWKS.\n This input is required for these tests to pass.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_registration","test_run_id":"249fc058-a0e8-4eab-a6bd-3f9cd460c633","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:10.061-04:00"},{"id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","created_at":"2026-03-09T16:31:10.177-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"appointment_book_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"appointment_book_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=appointment-book%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.476-04:00"},{"id":"17e86267-1e10-47ff-8dbf-1f6aa1dd1bc3","created_at":"2026-03-09T16:31:22.491-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3NiwiaWF0IjoxNzczMDg4Mjc2LCJqdGkiOiJiM2VmZjQ1ZThjYjk4Yzg1MmNiYTIyOGUyNzljOTljMWFjZGE0NWI0MjIxM2NlZDBiNjc2ZmM3ODAxYzZlY2Y0In0.ERt9YN9MZJdNY59YtZi734HxvqYVXWz7D0KwNnyqZAjkcOcdiBf9KRk8GDQmqNIPthfW3h2ai9hJXsEbYWZcIH8pDuu5x8l-QvxPvXSEPXpHGe0c8NXxAkchAKy9LV-2\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\"]"},{"name":"appointment_book_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773088576,\\\"iat\\\":1773088276,\\\"jti\\\":\\\"b3eff45e8cb98c852cba228e279c99c1acda45b42213ced0b676fc7801c6ecf4\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773088579,\\\"iat\\\":1773088279,\\\"jti\\\":\\\"d320030e402202f722834d19565a6b0e80bc1aaa6a6ba9f0dc70b2e746b5eb0d\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773088579,\\\"iat\\\":1773088279,\\\"jti\\\":\\\"d320030e402202f722834d19565a6b0e80bc1aaa6a6ba9f0dc70b2e746b5eb0d\\\"}\"]"},{"name":"appointment_book_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_decode_auth_token","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.491-04:00"},{"id":"fb1b0f48-3229-42e7-a441-e87399d38f18","created_at":"2026-03-09T16:31:22.499-04:00","inputs":[{"name":"appointment_book_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"appointment_book_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"ed45693e-52a1-4914-bf22-52574c7d7991","direction":"outgoing","index":4500,"result_id":"fb1b0f48-3229-42e7-a441-e87399d38f18","status":200,"timestamp":"2026-03-09T16:31:22.500-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"9a3d8ba9-0cd7-4911-950d-83bc035e9420","direction":"outgoing","index":4501,"result_id":"fb1b0f48-3229-42e7-a441-e87399d38f18","status":200,"timestamp":"2026-03-09T16:31:22.504-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"f68d2410-c2cf-4f6d-8806-94f51520cf27","direction":"outgoing","index":4502,"result_id":"fb1b0f48-3229-42e7-a441-e87399d38f18","status":200,"timestamp":"2026-03-09T16:31:22.506-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_retrieve_jwks","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.499-04:00"},{"id":"d938de7d-3b40-4548-87f2-59799f90fcf1","created_at":"2026-03-09T16:31:22.510-04:00","inputs":[{"name":"appointment_book_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"appointment_book_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_header","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.510-04:00"},{"id":"d66c85a7-00e4-4f3c-89cc-3ab2f3f6a68b","created_at":"2026-03-09T16:31:22.515-04:00","inputs":[{"name":"appointment_book_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3NiwiaWF0IjoxNzczMDg4Mjc2LCJqdGkiOiJiM2VmZjQ1ZThjYjk4Yzg1MmNiYTIyOGUyNzljOTljMWFjZGE0NWI0MjIxM2NlZDBiNjc2ZmM3ODAxYzZlY2Y0In0.ERt9YN9MZJdNY59YtZi734HxvqYVXWz7D0KwNnyqZAjkcOcdiBf9KRk8GDQmqNIPthfW3h2ai9hJXsEbYWZcIH8pDuu5x8l-QvxPvXSEPXpHGe0c8NXxAkchAKy9LV-2\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\"]","type":"text"},{"name":"appointment_book_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.515-04:00"},{"id":"dc5598ac-8628-49f3-9936-2b579ba65103","created_at":"2026-03-09T16:31:22.520-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"id\":\"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\"meta\":{\"lastUpdated\":\"2024-05-10T03:56:46.942+00:00\"},\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.520-04:00"},{"id":"f93a7880-5dbd-4696-925b-f0636fb88bf4","created_at":"2026-03-09T16:31:22.525-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"appointment_book_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.525-04:00"},{"id":"1e1a5537-9158-4217-9384-bff0df532844","created_at":"2026-03-09T16:31:23.987-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"appointment_book_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"appointment_book_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"60204651-8274-4a94-b28d-c24982ca4d4f","direction":"outgoing","index":4503,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.006-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"0268b963-23ba-4461-97aa-1adc3e5a4960","direction":"outgoing","index":4504,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.020-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"9376ca15-254c-442e-b702-b54d6a672c1c","direction":"outgoing","index":4505,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.032-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"388998e6-83ba-4f97-ad2c-c540e290951a","direction":"outgoing","index":4506,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.051-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"f25d0815-8df6-4c79-9066-573250fc3401","direction":"outgoing","index":4507,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.068-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"16acb757-7f2e-4e42-868e-4632efe7dc03","direction":"outgoing","index":4508,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.080-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"c2c52123-907c-43f8-85e9-0fdeeff25285","direction":"outgoing","index":4509,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.094-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"18d57a00-4383-4d7c-8599-d96cf4e9edb1","direction":"outgoing","index":4510,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.104-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"9d4375c2-6a2c-4457-865d-d170f8275846","direction":"outgoing","index":4511,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.116-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:23.987-04:00"},{"id":"a0c95fb5-aa87-44b7-9279-657e12e161bc","created_at":"2026-03-09T16:31:24.247-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"id\":\"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\"meta\":{\"lastUpdated\":\"2024-05-10T03:56:46.942+00:00\"},\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_prefetch","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:24.247-04:00"},{"id":"073b140b-def6-4b53-a8e0-b5983633acb6","created_at":"2026-03-09T16:31:24.275-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"4a99f954-36e0-4701-8d2a-0d5a0310d667","direction":"outgoing","index":4485,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.569-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"3499237f-80db-4f01-931c-bf0f0661af41","direction":"outgoing","index":4486,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.691-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"16ce4e04-9c7e-4308-9c27-87d18496c53f","direction":"outgoing","index":4489,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.527-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Location/us-core-client-tests-location","verb":"GET"},{"id":"82b01034-db4f-4c69-9ed9-9ac99a4bc328","direction":"outgoing","index":4490,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.633-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"GET"},{"id":"c24bbacb-efc6-4005-b8ee-56304b61dc2f","direction":"outgoing","index":4491,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.734-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"9c14455b-6731-4144-8f6c-c5ba0a55ca4c","direction":"outgoing","index":4492,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.844-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"f8fcc4e0-29bf-4127-bf4e-84b8040748d5","direction":"outgoing","index":4494,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.984-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"8b238581-0714-4d1c-a992-66aa584eed63","direction":"outgoing","index":4495,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.086-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_fetched_data","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:24.275-04:00"},{"id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","created_at":"2026-03-09T16:31:24.970-04:00","inputs":[{"name":"appointment_book_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"appointment_book_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"appointment_book_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"f9b8dce0-012b-48bf-8526-aaad1359ebeb","direction":"outgoing","index":4512,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:24.977-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"9a3cc3de-498e-4962-b528-228ab0c3775d","direction":"outgoing","index":4513,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:24.992-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"c5a960b0-be32-4d58-a2cc-2c18f65c907e","direction":"outgoing","index":4514,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.001-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"929956e4-dfb7-4099-b554-0f09d7fe1779","direction":"outgoing","index":4515,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.012-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"7d125a5b-8f33-4373-a1ad-0fc134ffdfb5","direction":"outgoing","index":4516,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.024-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"123b3af5-aec6-4094-a354-1c97d378e012","direction":"outgoing","index":4517,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.033-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_prefetch_equals_queried","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:24.970-04:00"},{"id":"66b11c1d-f1e7-4f5a-ae9c-6a0d3492054a","created_at":"2026-03-09T16:31:25.052-04:00","inputs":[{"name":"appointment_book_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_inferno_response_validation","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:25.052-04:00"},{"id":"cdb0a82e-6c0b-4037-9ef4-64049ca452d9","created_at":"2026-03-09T16:31:25.084-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=0c696d703d490a71241d263a4bb1e2d260e4cb0e04c0c4f023a8f8cfa6aa8da8"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=0c696d703d490a71241d263a4bb1e2d260e4cb0e04c0c4f023a8f8cfa6aa8da8"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_card_display_attest_test","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:25.545-04:00"},{"id":"fb6d40bf-8b05-4a2f-a75e-a18c57d02594","created_at":"2026-03-09T16:31:25.555-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"appointment_book_selected_response_types","label":"Response types to return from appointment-book hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"appointment_book_custom_response_template","label":"Custom response for appointment-book hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"appointment_book_override_access_token","label":"appointment-book Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:25.555-04:00"},{"id":"8759ce4a-ead7-4d5b-9702-90089c18b635","created_at":"2026-03-09T16:31:28.744-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"encounter_start_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_start_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=encounter-start%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.865-04:00"},{"id":"ecdfae41-24e4-42ee-bcd6-112e9660df49","created_at":"2026-03-09T16:31:34.880-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1zdGFydC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NTkxLCJpYXQiOjE3NzMwODgyOTEsImp0aSI6IjRhYWJiZmYxZmY0YzMyZmZmMWJhMzhjNzliYTVhY2FhM2NmN2U5ZGJkOWRmMDcwMDM4ODEzY2NhNjA0NzNjY2YifQ.2eV5x3otO1Rhiq0q7MYd2WdvJ8dtnacsj0oB8qNTiuy3rF7rnq6WguC3DghtP8BijAHpj-SK6BXJTsadBiEoS455DrAAiKpKKzxS-dp2zTWYtmGP_157nlrCBwM16jfv\"]"},{"name":"encounter_start_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service\\\",\\\"exp\\\":1773088591,\\\"iat\\\":1773088291,\\\"jti\\\":\\\"4aabbff1ff4c32fff1ba38c79ba5acaa3cf7e9dbd9df070038813cca60473ccf\\\"}\"]"},{"name":"encounter_start_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_decode_auth_token","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.880-04:00"},{"id":"be39ba3f-8db5-499e-b0e7-b77e00c2d32c","created_at":"2026-03-09T16:31:34.886-04:00","inputs":[{"name":"encounter_start_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"encounter_start_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"c982f3b7-d783-48a9-b936-c8d980770007","direction":"outgoing","index":4525,"result_id":"be39ba3f-8db5-499e-b0e7-b77e00c2d32c","status":200,"timestamp":"2026-03-09T16:31:34.889-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_retrieve_jwks","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.886-04:00"},{"id":"f6317cee-67f9-462a-8fcb-0805d6308ee2","created_at":"2026-03-09T16:31:34.894-04:00","inputs":[{"name":"encounter_start_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"encounter_start_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_header","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.894-04:00"},{"id":"c68b9281-949d-46c8-a580-d6367d375347","created_at":"2026-03-09T16:31:34.897-04:00","inputs":[{"name":"encounter_start_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1zdGFydC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NTkxLCJpYXQiOjE3NzMwODgyOTEsImp0aSI6IjRhYWJiZmYxZmY0YzMyZmZmMWJhMzhjNzliYTVhY2FhM2NmN2U5ZGJkOWRmMDcwMDM4ODEzY2NhNjA0NzNjY2YifQ.2eV5x3otO1Rhiq0q7MYd2WdvJ8dtnacsj0oB8qNTiuy3rF7rnq6WguC3DghtP8BijAHpj-SK6BXJTsadBiEoS455DrAAiKpKKzxS-dp2zTWYtmGP_157nlrCBwM16jfv\"]","type":"text"},{"name":"encounter_start_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.897-04:00"},{"id":"52c484f2-ef5e-45ac-aa69-ee2f75371b84","created_at":"2026-03-09T16:31:34.900-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"},{"name":"prefetches","type":"text","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.900-04:00"},{"id":"6581203d-ba1d-4daa-a0d0-f099daec7c99","created_at":"2026-03-09T16:31:34.903-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"encounter_start_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.903-04:00"},{"id":"074a9145-9a56-4a97-b482-a92d71b262aa","created_at":"2026-03-09T16:31:35.322-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"encounter_start_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_start_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"91cd6783-b1f4-4c19-9c64-03e3805ac886","direction":"outgoing","index":4526,"result_id":"074a9145-9a56-4a97-b482-a92d71b262aa","status":200,"timestamp":"2026-03-09T16:31:35.331-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"fd9917da-3397-4645-9ffe-1416c12ab3a7","direction":"outgoing","index":4527,"result_id":"074a9145-9a56-4a97-b482-a92d71b262aa","status":200,"timestamp":"2026-03-09T16:31:35.348-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"b1ac6d95-c050-46ff-8c75-6ba7f7ba4f53","direction":"outgoing","index":4528,"result_id":"074a9145-9a56-4a97-b482-a92d71b262aa","status":200,"timestamp":"2026-03-09T16:31:35.361-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.322-04:00"},{"id":"c288c365-e305-4071-b029-042a46d94bf5","created_at":"2026-03-09T16:31:35.397-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"prefetches","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_prefetch","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.397-04:00"},{"id":"64b0a2ae-07c6-464b-aa28-0f246c872e58","created_at":"2026-03-09T16:31:35.413-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"48dcf1da-75ac-430e-a647-0372d114fc79","direction":"outgoing","index":4519,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:31.912-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"fd7bfe6f-b8f6-4f90-a065-39d6845646ac","direction":"outgoing","index":4520,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.015-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"9a249e8f-40df-491e-872e-1bdb5a9d92a6","direction":"outgoing","index":4521,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.119-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"GET"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_fetched_data","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.413-04:00"},{"id":"17081b07-f7ca-4b57-bbc7-f96e7050040a","created_at":"2026-03-09T16:31:35.521-04:00","inputs":[{"name":"encounter_start_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_start_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"encounter_start_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"04dc8333-157e-4787-a503-cf410debc8cc","direction":"outgoing","index":4529,"result_id":"17081b07-f7ca-4b57-bbc7-f96e7050040a","status":200,"timestamp":"2026-03-09T16:31:35.529-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_prefetch_equals_queried","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.521-04:00"},{"id":"f4a876c3-776a-4b20-8fe1-d018236872ae","created_at":"2026-03-09T16:31:35.545-04:00","inputs":[{"name":"encounter_start_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_inferno_response_validation","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.545-04:00"},{"id":"6a4d2cb7-dd89-4e61-af31-fe3bf527cf00","created_at":"2026-03-09T16:31:35.552-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=5b534ea23073afffc25a53e375386aff0c984b3b6cec1c14af461b61392cc0e6"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=5b534ea23073afffc25a53e375386aff0c984b3b6cec1c14af461b61392cc0e6"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_card_display_attest_test","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:37.924-04:00"},{"id":"2549d742-be67-42ce-8355-eede8dbba336","created_at":"2026-03-09T16:31:37.938-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"encounter_start_selected_response_types","label":"Response types to return from encounter-start hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_start_custom_response_template","label":"Custom response for encounter-start hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"encounter_start_override_access_token","label":"encounter-start Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:37.938-04:00"},{"id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","created_at":"2026-03-09T16:31:41.068-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"encounter_discharge_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_discharge_custom_response_template","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/9Tki84kElmT/results/ee69edb3-521b-4cdc-bea9-e8cbc98a58b0/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"textarea","is_large":true}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=encounter-discharge%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.191-04:00"},{"id":"494c9b49-9d33-4202-a175-c9b2f9c01e94","created_at":"2026-03-09T16:31:47.208-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1kaXNjaGFyZ2Utc2VydmljZSIsImV4cCI6MTc3MzA4ODYwNCwiaWF0IjoxNzczMDg4MzA0LCJqdGkiOiI2Mjk2NWI3ZDllZDcyNTlhNzUzNDBkMTU2OGE0Yzg4OGRlOWI0YzhmMGI3MWIwYzhiNjJjMWRiOTE5NGEzYzRhIn0.9bL15PqYQNq_Qms62A_8Ce9yNmjAjIjdSlY9xdEBMgQ1Y_CTOjN19cN7_9LIBYzWSmPdmrBOwawnbhwN9VU3YxcE0Q3k4WZkMa_fFAtvUAT8t4c3cd1ikEp3P2tZYTjX\"]"},{"name":"encounter_discharge_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service\\\",\\\"exp\\\":1773088604,\\\"iat\\\":1773088304,\\\"jti\\\":\\\"62965b7d9ed7259a75340d1568a4c888de9b4c8f0b71b0c8b62c1db9194a3c4a\\\"}\"]"},{"name":"encounter_discharge_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_decode_auth_token","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.208-04:00"},{"id":"5fd38a9a-882d-4022-a055-a1737fe8d791","created_at":"2026-03-09T16:31:47.214-04:00","inputs":[{"name":"encounter_discharge_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"encounter_discharge_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"3b755067-e0f1-4917-892d-4645ada3f78c","direction":"outgoing","index":4537,"result_id":"5fd38a9a-882d-4022-a055-a1737fe8d791","status":200,"timestamp":"2026-03-09T16:31:47.215-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_retrieve_jwks","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.214-04:00"},{"id":"490b4212-a0be-4184-9535-f04b76fa64d8","created_at":"2026-03-09T16:31:47.219-04:00","inputs":[{"name":"encounter_discharge_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"encounter_discharge_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_header","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.219-04:00"},{"id":"a80e9168-16c7-462a-a1bc-d92173113a5b","created_at":"2026-03-09T16:31:47.224-04:00","inputs":[{"name":"encounter_discharge_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1kaXNjaGFyZ2Utc2VydmljZSIsImV4cCI6MTc3MzA4ODYwNCwiaWF0IjoxNzczMDg4MzA0LCJqdGkiOiI2Mjk2NWI3ZDllZDcyNTlhNzUzNDBkMTU2OGE0Yzg4OGRlOWI0YzhmMGI3MWIwYzhiNjJjMWRiOTE5NGEzYzRhIn0.9bL15PqYQNq_Qms62A_8Ce9yNmjAjIjdSlY9xdEBMgQ1Y_CTOjN19cN7_9LIBYzWSmPdmrBOwawnbhwN9VU3YxcE0Q3k4WZkMa_fFAtvUAT8t4c3cd1ikEp3P2tZYTjX\"]","type":"text"},{"name":"encounter_discharge_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.224-04:00"},{"id":"4421e549-02b1-4b70-ad6f-54a7dd80a351","created_at":"2026-03-09T16:31:47.227-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"},{"name":"prefetches","type":"text","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.227-04:00"},{"id":"72f87561-fa30-406c-ab9d-665aaff8aa9d","created_at":"2026-03-09T16:31:47.231-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"encounter_discharge_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.231-04:00"},{"id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","created_at":"2026-03-09T16:31:47.649-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"encounter_discharge_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_discharge_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"b5628bf9-f64e-4029-8396-5dc56bd50743","direction":"outgoing","index":4538,"result_id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","status":200,"timestamp":"2026-03-09T16:31:47.659-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"9e93c858-35e6-4d57-acd3-e8d041c68e5c","direction":"outgoing","index":4539,"result_id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","status":200,"timestamp":"2026-03-09T16:31:47.673-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"11ef8f25-0971-4891-9a6a-f8374970750a","direction":"outgoing","index":4540,"result_id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","status":200,"timestamp":"2026-03-09T16:31:47.686-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.649-04:00"},{"id":"2b21ec0a-c44b-4116-95b5-3dddb6a96544","created_at":"2026-03-09T16:31:47.715-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"prefetches","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_prefetch","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.715-04:00"},{"id":"5dce88cc-c82a-4e5b-bf82-e68c7d63579b","created_at":"2026-03-09T16:31:47.722-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"36afcede-27fa-4d75-80d2-07bbecd4a589","direction":"outgoing","index":4531,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.250-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"7acb6eba-d616-452f-8fa5-704babeab234","direction":"outgoing","index":4532,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.351-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"0a71d1f2-1ec3-4a8a-b3f9-b6abc8610bf8","direction":"outgoing","index":4533,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.461-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"GET"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_fetched_data","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.722-04:00"},{"id":"952e80e9-b803-44be-9fa1-448f13dc53dd","created_at":"2026-03-09T16:31:47.835-04:00","inputs":[{"name":"encounter_discharge_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_discharge_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"encounter_discharge_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"25638ecd-ae30-4420-8896-2212d94730a4","direction":"outgoing","index":4541,"result_id":"952e80e9-b803-44be-9fa1-448f13dc53dd","status":200,"timestamp":"2026-03-09T16:31:47.838-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_prefetch_equals_queried","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.835-04:00"},{"id":"b9dbd92e-5465-4ec1-b4f2-e1a89f274d2c","created_at":"2026-03-09T16:31:47.852-04:00","inputs":[{"name":"encounter_discharge_custom_response_template","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/9Tki84kElmT/results/b9dbd92e-5465-4ec1-b4f2-e1a89f274d2c/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"text","is_large":true},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_inferno_response_validation","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.852-04:00"},{"id":"804071fa-60e6-494a-ad56-a00c1d901f25","created_at":"2026-03-09T16:31:47.859-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=08b0e58e585e83291175472e660f8fe4c13cef378d2ca4adc4a0159a1cf8a853"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=08b0e58e585e83291175472e660f8fe4c13cef378d2ca4adc4a0159a1cf8a853"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_card_display_attest_test","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:50.253-04:00"},{"id":"33e30978-3a35-4934-86a7-9ca2e9f23461","created_at":"2026-03-09T16:31:50.264-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"encounter_discharge_selected_response_types","label":"Response types to return from encounter-discharge hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_discharge_custom_response_template","label":"Custom response for encounter-discharge hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/9Tki84kElmT/results/33e30978-3a35-4934-86a7-9ca2e9f23461/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"textarea","is_large":true},{"name":"encounter_discharge_override_access_token","label":"encounter-discharge Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:50.264-04:00"},{"id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","created_at":"2026-03-09T16:31:53.402-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_select_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_select_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-select%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.514-04:00"},{"id":"bbcf8164-adca-4876-ab27-63f967a330c9","created_at":"2026-03-09T16:31:59.527-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\"]"},{"name":"order_select_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-select-service\\\",\\\"exp\\\":1773088616,\\\"iat\\\":1773088316,\\\"jti\\\":\\\"8ecad20499a785a52eb7d9d71637571651dddadffc59a228228c3e7290fefa3f\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-select-service\\\",\\\"exp\\\":1773088616,\\\"iat\\\":1773088316,\\\"jti\\\":\\\"8ecad20499a785a52eb7d9d71637571651dddadffc59a228228c3e7290fefa3f\\\"}\"]"},{"name":"order_select_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_decode_auth_token","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.527-04:00"},{"id":"3021e01c-13d0-4420-9fe6-b90d0987972c","created_at":"2026-03-09T16:31:59.536-04:00","inputs":[{"name":"order_select_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_select_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"566127a8-0c40-4a37-b1c0-2c868b24fb38","direction":"outgoing","index":4554,"result_id":"3021e01c-13d0-4420-9fe6-b90d0987972c","status":200,"timestamp":"2026-03-09T16:31:59.537-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"0309ec75-6d72-41d9-82cc-0293ea02d072","direction":"outgoing","index":4555,"result_id":"3021e01c-13d0-4420-9fe6-b90d0987972c","status":200,"timestamp":"2026-03-09T16:31:59.543-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_retrieve_jwks","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.536-04:00"},{"id":"7f07a0e1-56f0-4c5d-a0aa-bdd5b1332638","created_at":"2026-03-09T16:31:59.547-04:00","inputs":[{"name":"order_select_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_select_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_header","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.547-04:00"},{"id":"4fe40468-fee7-4df4-8ff3-ac3c20265f4a","created_at":"2026-03-09T16:31:59.551-04:00","inputs":[{"name":"order_select_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\"]","type":"text"},{"name":"order_select_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.551-04:00"},{"id":"f48be4d9-2d89-4902-a4d8-bff77a8e20c0","created_at":"2026-03-09T16:31:59.557-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.557-04:00"},{"id":"309236ed-a597-4184-832b-984bf304aad3","created_at":"2026-03-09T16:31:59.561-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":false,"outputs":[{"name":"order_select_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_select_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.561-04:00"},{"id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","created_at":"2026-03-09T16:32:00.456-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"order_select_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_select_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"693bdb66-30e7-44d8-8b0b-4497dbf594fb","direction":"outgoing","index":4556,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.472-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"bc900aa6-91da-439e-98cd-974087cbfc75","direction":"outgoing","index":4557,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.483-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"7c2df29e-7be7-4810-8f1b-8bc8121c9b0b","direction":"outgoing","index":4558,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.493-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"e435b4e1-d986-4042-9dc8-889a7dea6417","direction":"outgoing","index":4559,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.501-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"5abc68bf-fc15-486c-a5f8-795332e37cbd","direction":"outgoing","index":4560,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.511-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"f3bcd34a-1d73-4f45-aa3e-049f1758ffdc","direction":"outgoing","index":4561,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.522-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.456-04:00"},{"id":"0754d758-c3ea-4da8-b73e-4b85f85809d1","created_at":"2026-03-09T16:32:00.557-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_prefetch","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.557-04:00"},{"id":"b32f9a1c-2547-4bbe-9a87-a778e4d40708","created_at":"2026-03-09T16:32:00.568-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"2308e3ab-48e9-4f0f-8365-f5736e42ab34","direction":"outgoing","index":4543,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.588-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"90a5ad62-fc69-4caa-a558-7d83561b4027","direction":"outgoing","index":4544,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.691-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"36be797c-17aa-4d7a-9211-74422d5275e0","direction":"outgoing","index":4545,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.810-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"064e2812-f13c-4f4b-984e-730a5ec73a34","direction":"outgoing","index":4547,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.949-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"033cc0d4-18ab-49d1-8186-4bc72fbaab40","direction":"outgoing","index":4548,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.051-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"28753b83-73b5-4bd7-abf4-da7de339e5a6","direction":"outgoing","index":4549,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.170-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_fetched_data","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.568-04:00"},{"id":"6fddb55c-0766-4ac6-b9c8-757c18fe9b69","created_at":"2026-03-09T16:32:00.796-04:00","inputs":[{"name":"order_select_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_select_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_select_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"8de18d15-5d31-4bdb-9f4c-b0f196bb2b76","direction":"outgoing","index":4562,"result_id":"6fddb55c-0766-4ac6-b9c8-757c18fe9b69","status":200,"timestamp":"2026-03-09T16:32:00.801-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"4ab0de8a-7e3c-4db6-97fc-c09f103f58a3","direction":"outgoing","index":4563,"result_id":"6fddb55c-0766-4ac6-b9c8-757c18fe9b69","status":200,"timestamp":"2026-03-09T16:32:00.814-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_prefetch_equals_queried","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.796-04:00"},{"id":"89150e80-eede-4de1-9660-1064705ba249","created_at":"2026-03-09T16:32:00.827-04:00","inputs":[{"name":"order_select_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_inferno_response_validation","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.827-04:00"},{"id":"7e599d25-3afa-4170-9c76-d0c26e8ddcc1","created_at":"2026-03-09T16:32:00.840-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=5c08eb2ca7fc65e59655c2b65cd7de07c5696d70d7f7dbc0c46f7d763e79e6a2"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=5c08eb2ca7fc65e59655c2b65cd7de07c5696d70d7f7dbc0c46f7d763e79e6a2"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_card_display_attest_test","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:02.570-04:00"},{"id":"f3bdddd9-5a9e-4d78-9aa1-271835e2b3e9","created_at":"2026-03-09T16:32:02.581-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_select_selected_response_types","label":"Response types to return from order-select hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_select_custom_response_template","label":"Custom response for order-select hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_select_override_access_token","label":"order-select Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:02.581-04:00"},{"id":"784a5907-f44f-4cfc-8df6-78f847583c96","created_at":"2026-03-09T16:32:05.727-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_dispatch_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_dispatch_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-dispatch%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.864-04:00"},{"id":"f3f03179-3565-4b60-b555-b02b68170155","created_at":"2026-03-09T16:32:11.877-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\"]"},{"name":"order_dispatch_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service\\\",\\\"exp\\\":1773088628,\\\"iat\\\":1773088328,\\\"jti\\\":\\\"ac630b07fc80bfb0ca4e3e18676ef3b9572ff832b45578295a1be5fcbc32316d\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service\\\",\\\"exp\\\":1773088628,\\\"iat\\\":1773088328,\\\"jti\\\":\\\"ac630b07fc80bfb0ca4e3e18676ef3b9572ff832b45578295a1be5fcbc32316d\\\"}\"]"},{"name":"order_dispatch_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_decode_auth_token","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.877-04:00"},{"id":"17603891-5d89-4e30-bf66-65a7428f9a38","created_at":"2026-03-09T16:32:11.884-04:00","inputs":[{"name":"order_dispatch_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_dispatch_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"ef6d7398-2608-4f74-9254-19f5534d4a7c","direction":"outgoing","index":4572,"result_id":"17603891-5d89-4e30-bf66-65a7428f9a38","status":200,"timestamp":"2026-03-09T16:32:11.886-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"f367ba6b-7cf4-470b-a275-801a1c807db2","direction":"outgoing","index":4573,"result_id":"17603891-5d89-4e30-bf66-65a7428f9a38","status":200,"timestamp":"2026-03-09T16:32:11.889-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_retrieve_jwks","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.884-04:00"},{"id":"f930bd4f-c991-470b-b45d-c2390d9f21fd","created_at":"2026-03-09T16:32:11.895-04:00","inputs":[{"name":"order_dispatch_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_dispatch_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_header","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.895-04:00"},{"id":"1c8a7256-a657-497c-8e2d-cc748b763628","created_at":"2026-03-09T16:32:11.900-04:00","inputs":[{"name":"order_dispatch_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\"]","type":"text"},{"name":"order_dispatch_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.900-04:00"},{"id":"a14e7917-6e96-4ea1-a0c5-521269af3f20","created_at":"2026-03-09T16:32:11.905-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]"},{"name":"prefetches","type":"text","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"status\":\"draft\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"intent\":\"original-order\",\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"}},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}}]"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.905-04:00"},{"id":"8f06dd29-ae4f-4d9b-9a18-ea06b25f5951","created_at":"2026-03-09T16:32:11.910-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_dispatch_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.910-04:00"},{"id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","created_at":"2026-03-09T16:32:13.224-04:00","inputs":[{"name":"contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"order_dispatch_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_dispatch_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"d4aa0335-a36a-4c74-93f0-625427d72e06","direction":"outgoing","index":4574,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.235-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"ddd80a6a-a910-48f7-aa9b-42fd9e3abaa7","direction":"outgoing","index":4575,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.249-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"get"},{"id":"a1aacaa3-87c9-4050-90af-5cd778d1509d","direction":"outgoing","index":4576,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.265-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"79a73a44-a0d5-4bcf-85a4-ee1b56cd20d8","direction":"outgoing","index":4577,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.276-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"fea07c3a-85e9-4e56-ad12-bf0144e575f3","direction":"outgoing","index":4578,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.288-04:00","url":"https://inferno.healthit.gov/reference-server/r4/DeviceRequest/devreq015","verb":"get"},{"id":"5c3367c2-a6f8-4e9f-9e6e-893ee196771e","direction":"outgoing","index":4579,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.297-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:13.224-04:00"},{"id":"a8571bad-d117-49e5-8f38-1d61ec3d9397","created_at":"2026-03-09T16:32:13.407-04:00","inputs":[{"name":"contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"prefetches","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"status\":\"draft\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"intent\":\"original-order\",\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"}},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_prefetch","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:13.407-04:00"},{"id":"cd70f844-345b-43a5-a81a-7bd18bab27fb","created_at":"2026-03-09T16:32:13.434-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"693f7e7e-88f7-4466-994e-da2fa6263df5","direction":"outgoing","index":4565,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:08.911-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"9d69b38f-df64-4ce4-84e4-256702fbd07f","direction":"outgoing","index":4567,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.137-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_fetched_data","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:13.434-04:00"},{"id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","created_at":"2026-03-09T16:32:14.125-04:00","inputs":[{"name":"order_dispatch_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_dispatch_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_dispatch_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"3c8f5d11-c203-4135-bd6a-5d12b7b2a116","direction":"outgoing","index":4580,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.129-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"30bfba25-9561-4173-b144-1cd1150c792b","direction":"outgoing","index":4581,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.144-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"get"},{"id":"6dcda94c-7762-42bf-a756-5270db82f883","direction":"outgoing","index":4582,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.154-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"656a9b43-177a-4e72-af6e-efe104eef54c","direction":"outgoing","index":4583,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.164-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"48f58d6b-7571-43a5-94d1-7df22744df31","direction":"outgoing","index":4584,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.175-04:00","url":"https://inferno.healthit.gov/reference-server/r4/DeviceRequest/devreq015","verb":"get"},{"id":"45378dea-527a-42d2-9212-4664cdcf2cd8","direction":"outgoing","index":4585,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.185-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_prefetch_equals_queried","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.125-04:00"},{"id":"a662b002-8b19-4314-b58d-51cf4fbff24d","created_at":"2026-03-09T16:32:14.199-04:00","inputs":[{"name":"order_dispatch_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_inferno_response_validation","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.199-04:00"},{"id":"e8b6e926-73f6-40ee-a1dc-48a42352177d","created_at":"2026-03-09T16:32:14.212-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=4774f079144f6ce2217969da55788af23af2a3c6d5cb15f63ca492f8b3723116"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=4774f079144f6ce2217969da55788af23af2a3c6d5cb15f63ca492f8b3723116"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_card_display_attest_test","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.928-04:00"},{"id":"19a8f56b-cff9-4884-8418-2ae70d5ea05a","created_at":"2026-03-09T16:32:14.939-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_dispatch_selected_response_types","label":"Response types to return from order-dispatch hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_dispatch_custom_response_template","label":"Custom response for order-dispatch hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_dispatch_override_access_token","label":"order-dispatch Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.939-04:00"},{"id":"e9718df5-4a4f-46cb-b494-fec4930d9391","created_at":"2026-03-09T16:32:18.071-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_sign_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_sign_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-sign%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.196-04:00"},{"id":"1088c7a9-fcb4-455d-b9a5-2ba00bbc6ce1","created_at":"2026-03-09T16:32:24.210-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\"]"},{"name":"order_sign_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-sign-service\\\",\\\"exp\\\":1773088641,\\\"iat\\\":1773088341,\\\"jti\\\":\\\"0e7b52dac8bea94ae9885f0986c264db01a4237160eb8f557c30687847b78004\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-sign-service\\\",\\\"exp\\\":1773088641,\\\"iat\\\":1773088341,\\\"jti\\\":\\\"0e7b52dac8bea94ae9885f0986c264db01a4237160eb8f557c30687847b78004\\\"}\"]"},{"name":"order_sign_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_decode_auth_token","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.210-04:00"},{"id":"88f722d7-c7c8-443b-ba60-631b572faca4","created_at":"2026-03-09T16:32:24.217-04:00","inputs":[{"name":"order_sign_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_sign_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"0ea0722a-af68-4d36-bd38-df83e959df27","direction":"outgoing","index":4595,"result_id":"88f722d7-c7c8-443b-ba60-631b572faca4","status":200,"timestamp":"2026-03-09T16:32:24.218-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"fda34a4f-5d03-425c-ab3c-67f4d32ce474","direction":"outgoing","index":4596,"result_id":"88f722d7-c7c8-443b-ba60-631b572faca4","status":200,"timestamp":"2026-03-09T16:32:24.221-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_retrieve_jwks","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.217-04:00"},{"id":"399355a9-6774-4649-bfdf-6c8e7b9f2f8d","created_at":"2026-03-09T16:32:24.225-04:00","inputs":[{"name":"order_sign_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_sign_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_header","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.225-04:00"},{"id":"2b3a2a10-7674-4cf3-83e7-6e329e6948f2","created_at":"2026-03-09T16:32:24.230-04:00","inputs":[{"name":"order_sign_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\"]","type":"text"},{"name":"order_sign_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.230-04:00"},{"id":"d76967be-775a-485c-a860-2e4dd3f3a1c8","created_at":"2026-03-09T16:32:24.234-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"user\":{\"resourceType\":\"Practitioner\",\"id\":\"pra1234\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"]},\"identifier\":[{\"system\":\"http://hl7.org/fhir/sid/us-npi\",\"value\":\"1122334455\"}],\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"840 Seneca St\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"716-873-1557\"},{\"system\":\"email\",\"value\":\"jane.betty@myhospital.com\"}],\"name\":[{\"use\":\"official\",\"family\":\"Doe\",\"given\":[\"Jane\",\"Betty\"],\"prefix\":[\"Dr.\"]}],\"qualification\":[{\"code\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0360\",\"code\":\"MD\",\"display\":\"Doctor of Medicine\"}],\"text\":\"Doctor of Medicine\"},\"period\":{\"start\":\"1995\"},\"issuer\":{\"display\":\"Example University\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.234-04:00"},{"id":"fbb3c5db-65c9-4439-9d7b-7f775270f434","created_at":"2026-03-09T16:32:24.240-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":false,"outputs":[{"name":"order_sign_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_sign_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.240-04:00"},{"id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","created_at":"2026-03-09T16:32:25.129-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"order_sign_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_sign_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"09f7ebef-8baf-4bfa-94a9-6dec5cf4ab26","direction":"outgoing","index":4597,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.149-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"3e207a8d-fc26-43fa-ac82-c6188282d5d5","direction":"outgoing","index":4598,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.163-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"7cb49e4d-93c7-4288-9d46-0ece1be858c8","direction":"outgoing","index":4599,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.174-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"41bb4ed3-9ad9-47a9-bab8-3d7111f669d0","direction":"outgoing","index":4600,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.183-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"185f7b45-e41d-469d-a887-31fbcd7cdf0b","direction":"outgoing","index":4601,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.193-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"509e6038-08e9-4049-b454-40bc4c3a6a1a","direction":"outgoing","index":4602,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.204-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.129-04:00"},{"id":"c003f839-da67-4eb0-8bef-720ab700f05d","created_at":"2026-03-09T16:32:25.293-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"user\":{\"resourceType\":\"Practitioner\",\"id\":\"pra1234\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"]},\"identifier\":[{\"system\":\"http://hl7.org/fhir/sid/us-npi\",\"value\":\"1122334455\"}],\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"840 Seneca St\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"716-873-1557\"},{\"system\":\"email\",\"value\":\"jane.betty@myhospital.com\"}],\"name\":[{\"use\":\"official\",\"family\":\"Doe\",\"given\":[\"Jane\",\"Betty\"],\"prefix\":[\"Dr.\"]}],\"qualification\":[{\"code\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0360\",\"code\":\"MD\",\"display\":\"Doctor of Medicine\"}],\"text\":\"Doctor of Medicine\"},\"period\":{\"start\":\"1995\"},\"issuer\":{\"display\":\"Example University\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_prefetch","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.293-04:00"},{"id":"304b37f7-ac46-48cb-a0b9-976cd1d9a2b0","created_at":"2026-03-09T16:32:25.322-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"ad1dcdc7-76b7-437e-a1b6-68e12917e581","direction":"outgoing","index":4587,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.253-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"9c2edc66-c622-4a04-9d4c-dae204dc5bd4","direction":"outgoing","index":4589,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.392-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"c6f41656-fb19-4e46-a1ef-eb11e76c36bd","direction":"outgoing","index":4590,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.507-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_fetched_data","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.322-04:00"},{"id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","created_at":"2026-03-09T16:32:25.905-04:00","inputs":[{"name":"order_sign_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_sign_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_sign_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"87fd8c9a-291d-4cd5-948f-73a78cd31790","direction":"outgoing","index":4603,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.910-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"4084b19b-c67d-484e-a983-fccb0cfe8ad9","direction":"outgoing","index":4604,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.924-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"083178ad-15d9-484e-902b-97147ea67b5e","direction":"outgoing","index":4605,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.934-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"34ce9673-67e6-479c-9f81-040fe3ef43e1","direction":"outgoing","index":4606,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.946-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"73df8005-8269-4e84-b144-15046ca6ee0d","direction":"outgoing","index":4607,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.956-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_prefetch_equals_queried","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.905-04:00"},{"id":"61a93010-14c7-4df3-88d6-9c85a4d06214","created_at":"2026-03-09T16:32:25.969-04:00","inputs":[{"name":"order_sign_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_inferno_response_validation","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.969-04:00"},{"id":"4552eaed-90c4-4a7b-b3bb-e38b336a29b5","created_at":"2026-03-09T16:32:25.982-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=eaffeaf98d1440069b2f516781f4ce60609619c1513720d7e26f40d393929f88"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=eaffeaf98d1440069b2f516781f4ce60609619c1513720d7e26f40d393929f88"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_card_display_attest_test","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:27.260-04:00"},{"id":"0df5706f-cb85-46e8-a021-6ede6d3443c0","created_at":"2026-03-09T16:32:27.272-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_sign_selected_response_types","label":"Response types to return from order-sign hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_sign_custom_response_template","label":"Custom response for order-sign hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_sign_override_access_token","label":"order-sign Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:27.272-04:00"},{"id":"21cfe40b-e663-4e84-99fb-af110a9c2ae6","created_at":"2026-03-09T16:32:27.275-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:27.275-04:00"},{"id":"8a310e0d-a30c-4afd-9a31-f9da1ed7136a","created_at":"2026-03-09T16:32:30.523-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_coverage_information","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.523-04:00"},{"id":"cfee8e8a-cba3-4513-bd44-6d597908c1ed","created_at":"2026-03-09T16:32:30.541-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_external_reference","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.541-04:00"},{"id":"c4e2931a-7793-419b-88c4-11c14bee9b5c","created_at":"2026-03-09T16:32:30.554-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_instructions","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.554-04:00"},{"id":"8ebe5246-3354-4659-9e46-d697a3599c46","created_at":"2026-03-09T16:32:30.561-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.561-04:00"},{"id":"ec53784f-4ceb-4d61-8c03-600fe8c2c5b3","created_at":"2026-03-09T16:32:30.562-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.562-04:00"}] \ No newline at end of file diff --git a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_client_expected.json b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_client_expected.json index 3a50829d..f2b81fe0 100644 --- a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_client_expected.json +++ b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_client_expected.json @@ -1 +1 @@ -[{"id":"c7aa0bd4-bce2-4df2-9949-1dad41e8a1a7","created_at":"2026-03-09T16:31:07.000-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_registration_verification","test_run_id":"249fc058-a0e8-4eab-a6bd-3f9cd460c633","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:07.000-04:00"},{"id":"79bbaac4-5717-4648-8eac-40a2fda955ca","created_at":"2026-03-09T16:31:07.005-04:00","inputs":[],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=4e74e4cc265348a90909f761d93b40648898a7b3b87a7182bacb6c1f91bbefdc"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=4e74e4cc265348a90909f761d93b40648898a7b3b87a7182bacb6c1f91bbefdc"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_service_registration_attestation","test_run_id":"249fc058-a0e8-4eab-a6bd-3f9cd460c633","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:10.049-04:00"},{"id":"bc925b12-5061-44e8-9a50-da9cb8b2f39a","created_at":"2026-03-09T16:31:10.061-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n The `iss` claim of the JWT in the Authorization header sent by the CRD client under test on\n all CRD requests. This value will be used to associate incoming requests with this test\n session and any requests that use a different `iss` value will not be recognized.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The CRD client's JWK Set containing it's public key. May be either\n a publicly accessible url containing the JWKS, or the raw JWKS.\n This input is required for these tests to pass.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_registration","test_run_id":"249fc058-a0e8-4eab-a6bd-3f9cd460c633","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:10.061-04:00"},{"id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","created_at":"2026-03-09T16:31:10.177-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"appointment_book_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"appointment_book_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=appointment-book%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.476-04:00"},{"id":"17e86267-1e10-47ff-8dbf-1f6aa1dd1bc3","created_at":"2026-03-09T16:31:22.491-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3NiwiaWF0IjoxNzczMDg4Mjc2LCJqdGkiOiJiM2VmZjQ1ZThjYjk4Yzg1MmNiYTIyOGUyNzljOTljMWFjZGE0NWI0MjIxM2NlZDBiNjc2ZmM3ODAxYzZlY2Y0In0.ERt9YN9MZJdNY59YtZi734HxvqYVXWz7D0KwNnyqZAjkcOcdiBf9KRk8GDQmqNIPthfW3h2ai9hJXsEbYWZcIH8pDuu5x8l-QvxPvXSEPXpHGe0c8NXxAkchAKy9LV-2\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\"]"},{"name":"appointment_book_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773088576,\\\"iat\\\":1773088276,\\\"jti\\\":\\\"b3eff45e8cb98c852cba228e279c99c1acda45b42213ced0b676fc7801c6ecf4\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773088579,\\\"iat\\\":1773088279,\\\"jti\\\":\\\"d320030e402202f722834d19565a6b0e80bc1aaa6a6ba9f0dc70b2e746b5eb0d\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773088579,\\\"iat\\\":1773088279,\\\"jti\\\":\\\"d320030e402202f722834d19565a6b0e80bc1aaa6a6ba9f0dc70b2e746b5eb0d\\\"}\"]"},{"name":"appointment_book_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_decode_auth_token","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.491-04:00"},{"id":"fb1b0f48-3229-42e7-a441-e87399d38f18","created_at":"2026-03-09T16:31:22.499-04:00","inputs":[{"name":"appointment_book_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"appointment_book_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"ed45693e-52a1-4914-bf22-52574c7d7991","direction":"outgoing","index":4500,"result_id":"fb1b0f48-3229-42e7-a441-e87399d38f18","status":200,"timestamp":"2026-03-09T16:31:22.500-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"9a3d8ba9-0cd7-4911-950d-83bc035e9420","direction":"outgoing","index":4501,"result_id":"fb1b0f48-3229-42e7-a441-e87399d38f18","status":200,"timestamp":"2026-03-09T16:31:22.504-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"f68d2410-c2cf-4f6d-8806-94f51520cf27","direction":"outgoing","index":4502,"result_id":"fb1b0f48-3229-42e7-a441-e87399d38f18","status":200,"timestamp":"2026-03-09T16:31:22.506-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_retrieve_jwks","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.499-04:00"},{"id":"d938de7d-3b40-4548-87f2-59799f90fcf1","created_at":"2026-03-09T16:31:22.510-04:00","inputs":[{"name":"appointment_book_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"appointment_book_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_header","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.510-04:00"},{"id":"d66c85a7-00e4-4f3c-89cc-3ab2f3f6a68b","created_at":"2026-03-09T16:31:22.515-04:00","inputs":[{"name":"appointment_book_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3NiwiaWF0IjoxNzczMDg4Mjc2LCJqdGkiOiJiM2VmZjQ1ZThjYjk4Yzg1MmNiYTIyOGUyNzljOTljMWFjZGE0NWI0MjIxM2NlZDBiNjc2ZmM3ODAxYzZlY2Y0In0.ERt9YN9MZJdNY59YtZi734HxvqYVXWz7D0KwNnyqZAjkcOcdiBf9KRk8GDQmqNIPthfW3h2ai9hJXsEbYWZcIH8pDuu5x8l-QvxPvXSEPXpHGe0c8NXxAkchAKy9LV-2\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzA4ODU3OSwiaWF0IjoxNzczMDg4Mjc5LCJqdGkiOiJkMzIwMDMwZTQwMjIwMmY3MjI4MzRkMTk1NjVhNmIwZTgwYmMxYWFhNmE2YmE5ZjBkYzcwYjJlNzQ2YjVlYjBkIn0.Uq-Ndjp7g-JMB3PVoePm-VWLuK2DkvjX0N6yW_AbSa2qeU421HMdClmvljj5tzNcbKB67DrR3B3Q_GrRA2DEkixvtamCSezQEtE0GNyvBTphzsWRxeNnbI3zbDjyGYWF\"]","type":"text"},{"name":"appointment_book_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.515-04:00"},{"id":"dc5598ac-8628-49f3-9936-2b579ba65103","created_at":"2026-03-09T16:31:22.520-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"id\":\"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\"meta\":{\"lastUpdated\":\"2024-05-10T03:56:46.942+00:00\"},\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.520-04:00"},{"id":"f93a7880-5dbd-4696-925b-f0636fb88bf4","created_at":"2026-03-09T16:31:22.525-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"appointment_book_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:22.525-04:00"},{"id":"1e1a5537-9158-4217-9384-bff0df532844","created_at":"2026-03-09T16:31:23.987-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"appointment_book_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"appointment_book_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"60204651-8274-4a94-b28d-c24982ca4d4f","direction":"outgoing","index":4503,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.006-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"0268b963-23ba-4461-97aa-1adc3e5a4960","direction":"outgoing","index":4504,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.020-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"9376ca15-254c-442e-b702-b54d6a672c1c","direction":"outgoing","index":4505,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.032-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"388998e6-83ba-4f97-ad2c-c540e290951a","direction":"outgoing","index":4506,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.051-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"f25d0815-8df6-4c79-9066-573250fc3401","direction":"outgoing","index":4507,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.068-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"16acb757-7f2e-4e42-868e-4632efe7dc03","direction":"outgoing","index":4508,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.080-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"c2c52123-907c-43f8-85e9-0fdeeff25285","direction":"outgoing","index":4509,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.094-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"18d57a00-4383-4d7c-8599-d96cf4e9edb1","direction":"outgoing","index":4510,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.104-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"9d4375c2-6a2c-4457-865d-d170f8275846","direction":"outgoing","index":4511,"result_id":"1e1a5537-9158-4217-9384-bff0df532844","status":200,"timestamp":"2026-03-09T16:31:24.116-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:23.987-04:00"},{"id":"a0c95fb5-aa87-44b7-9279-657e12e161bc","created_at":"2026-03-09T16:31:24.247-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"id\":\"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\"meta\":{\"lastUpdated\":\"2024-05-10T03:56:46.942+00:00\"},\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_prefetch","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:24.247-04:00"},{"id":"073b140b-def6-4b53-a8e0-b5983633acb6","created_at":"2026-03-09T16:31:24.275-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"4a99f954-36e0-4701-8d2a-0d5a0310d667","direction":"outgoing","index":4485,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.569-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"3499237f-80db-4f01-931c-bf0f0661af41","direction":"outgoing","index":4486,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.691-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"16ce4e04-9c7e-4308-9c27-87d18496c53f","direction":"outgoing","index":4489,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.527-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Location/us-core-client-tests-location","verb":"GET"},{"id":"82b01034-db4f-4c69-9ed9-9ac99a4bc328","direction":"outgoing","index":4490,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.633-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"GET"},{"id":"c24bbacb-efc6-4005-b8ee-56304b61dc2f","direction":"outgoing","index":4491,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.734-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"9c14455b-6731-4144-8f6c-c5ba0a55ca4c","direction":"outgoing","index":4492,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.844-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"f8fcc4e0-29bf-4127-bf4e-84b8040748d5","direction":"outgoing","index":4494,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.984-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"8b238581-0714-4d1c-a992-66aa584eed63","direction":"outgoing","index":4495,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.086-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_fetched_data","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:24.275-04:00"},{"id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","created_at":"2026-03-09T16:31:24.970-04:00","inputs":[{"name":"appointment_book_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"appointment_book_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"appointment_book_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"f9b8dce0-012b-48bf-8526-aaad1359ebeb","direction":"outgoing","index":4512,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:24.977-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"9a3cc3de-498e-4962-b528-228ab0c3775d","direction":"outgoing","index":4513,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:24.992-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"c5a960b0-be32-4d58-a2cc-2c18f65c907e","direction":"outgoing","index":4514,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.001-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"929956e4-dfb7-4099-b554-0f09d7fe1779","direction":"outgoing","index":4515,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.012-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"7d125a5b-8f33-4373-a1ad-0fc134ffdfb5","direction":"outgoing","index":4516,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.024-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"123b3af5-aec6-4094-a354-1c97d378e012","direction":"outgoing","index":4517,"result_id":"b4b93d7a-6b00-4996-b1ae-29d14981b4aa","status":200,"timestamp":"2026-03-09T16:31:25.033-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_prefetch_equals_queried","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:24.970-04:00"},{"id":"66b11c1d-f1e7-4f5a-ae9c-6a0d3492054a","created_at":"2026-03-09T16:31:25.052-04:00","inputs":[{"name":"appointment_book_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_inferno_response_validation","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:25.052-04:00"},{"id":"cdb0a82e-6c0b-4037-9ef4-64049ca452d9","created_at":"2026-03-09T16:31:25.084-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=0c696d703d490a71241d263a4bb1e2d260e4cb0e04c0c4f023a8f8cfa6aa8da8"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=0c696d703d490a71241d263a4bb1e2d260e4cb0e04c0c4f023a8f8cfa6aa8da8"}],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_card_display_attest_test","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:25.545-04:00"},{"id":"fb6d40bf-8b05-4a2f-a75e-a18c57d02594","created_at":"2026-03-09T16:31:25.555-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"appointment_book_selected_response_types","label":"Response types to return from appointment-book hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"appointment_book_custom_response_template","label":"Custom response for appointment-book hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"appointment_book_override_access_token","label":"appointment-book Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book","test_run_id":"f04039a1-17f5-4f07-b3cf-63a26b01d60d","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:25.555-04:00"},{"id":"8759ce4a-ead7-4d5b-9702-90089c18b635","created_at":"2026-03-09T16:31:28.744-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"encounter_start_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_start_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=encounter-start%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.865-04:00"},{"id":"ecdfae41-24e4-42ee-bcd6-112e9660df49","created_at":"2026-03-09T16:31:34.880-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1zdGFydC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NTkxLCJpYXQiOjE3NzMwODgyOTEsImp0aSI6IjRhYWJiZmYxZmY0YzMyZmZmMWJhMzhjNzliYTVhY2FhM2NmN2U5ZGJkOWRmMDcwMDM4ODEzY2NhNjA0NzNjY2YifQ.2eV5x3otO1Rhiq0q7MYd2WdvJ8dtnacsj0oB8qNTiuy3rF7rnq6WguC3DghtP8BijAHpj-SK6BXJTsadBiEoS455DrAAiKpKKzxS-dp2zTWYtmGP_157nlrCBwM16jfv\"]"},{"name":"encounter_start_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service\\\",\\\"exp\\\":1773088591,\\\"iat\\\":1773088291,\\\"jti\\\":\\\"4aabbff1ff4c32fff1ba38c79ba5acaa3cf7e9dbd9df070038813cca60473ccf\\\"}\"]"},{"name":"encounter_start_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_decode_auth_token","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.880-04:00"},{"id":"be39ba3f-8db5-499e-b0e7-b77e00c2d32c","created_at":"2026-03-09T16:31:34.886-04:00","inputs":[{"name":"encounter_start_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"encounter_start_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"c982f3b7-d783-48a9-b936-c8d980770007","direction":"outgoing","index":4525,"result_id":"be39ba3f-8db5-499e-b0e7-b77e00c2d32c","status":200,"timestamp":"2026-03-09T16:31:34.889-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_retrieve_jwks","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.886-04:00"},{"id":"f6317cee-67f9-462a-8fcb-0805d6308ee2","created_at":"2026-03-09T16:31:34.894-04:00","inputs":[{"name":"encounter_start_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"encounter_start_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_header","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.894-04:00"},{"id":"c68b9281-949d-46c8-a580-d6367d375347","created_at":"2026-03-09T16:31:34.897-04:00","inputs":[{"name":"encounter_start_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1zdGFydC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NTkxLCJpYXQiOjE3NzMwODgyOTEsImp0aSI6IjRhYWJiZmYxZmY0YzMyZmZmMWJhMzhjNzliYTVhY2FhM2NmN2U5ZGJkOWRmMDcwMDM4ODEzY2NhNjA0NzNjY2YifQ.2eV5x3otO1Rhiq0q7MYd2WdvJ8dtnacsj0oB8qNTiuy3rF7rnq6WguC3DghtP8BijAHpj-SK6BXJTsadBiEoS455DrAAiKpKKzxS-dp2zTWYtmGP_157nlrCBwM16jfv\"]","type":"text"},{"name":"encounter_start_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.897-04:00"},{"id":"52c484f2-ef5e-45ac-aa69-ee2f75371b84","created_at":"2026-03-09T16:31:34.900-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"},{"name":"prefetches","type":"text","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.900-04:00"},{"id":"6581203d-ba1d-4daa-a0d0-f099daec7c99","created_at":"2026-03-09T16:31:34.903-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"encounter_start_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:34.903-04:00"},{"id":"074a9145-9a56-4a97-b482-a92d71b262aa","created_at":"2026-03-09T16:31:35.322-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"encounter_start_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_start_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"91cd6783-b1f4-4c19-9c64-03e3805ac886","direction":"outgoing","index":4526,"result_id":"074a9145-9a56-4a97-b482-a92d71b262aa","status":200,"timestamp":"2026-03-09T16:31:35.331-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"fd9917da-3397-4645-9ffe-1416c12ab3a7","direction":"outgoing","index":4527,"result_id":"074a9145-9a56-4a97-b482-a92d71b262aa","status":200,"timestamp":"2026-03-09T16:31:35.348-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"b1ac6d95-c050-46ff-8c75-6ba7f7ba4f53","direction":"outgoing","index":4528,"result_id":"074a9145-9a56-4a97-b482-a92d71b262aa","status":200,"timestamp":"2026-03-09T16:31:35.361-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.322-04:00"},{"id":"c288c365-e305-4071-b029-042a46d94bf5","created_at":"2026-03-09T16:31:35.397-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"prefetches","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_prefetch","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.397-04:00"},{"id":"64b0a2ae-07c6-464b-aa28-0f246c872e58","created_at":"2026-03-09T16:31:35.413-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"48dcf1da-75ac-430e-a647-0372d114fc79","direction":"outgoing","index":4519,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:31.912-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"fd7bfe6f-b8f6-4f90-a065-39d6845646ac","direction":"outgoing","index":4520,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.015-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"9a249e8f-40df-491e-872e-1bdb5a9d92a6","direction":"outgoing","index":4521,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.119-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"GET"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_fetched_data","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.413-04:00"},{"id":"17081b07-f7ca-4b57-bbc7-f96e7050040a","created_at":"2026-03-09T16:31:35.521-04:00","inputs":[{"name":"encounter_start_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_start_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"encounter_start_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"04dc8333-157e-4787-a503-cf410debc8cc","direction":"outgoing","index":4529,"result_id":"17081b07-f7ca-4b57-bbc7-f96e7050040a","status":200,"timestamp":"2026-03-09T16:31:35.529-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_prefetch_equals_queried","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.521-04:00"},{"id":"f4a876c3-776a-4b20-8fe1-d018236872ae","created_at":"2026-03-09T16:31:35.545-04:00","inputs":[{"name":"encounter_start_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_inferno_response_validation","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:35.545-04:00"},{"id":"6a4d2cb7-dd89-4e61-af31-fe3bf527cf00","created_at":"2026-03-09T16:31:35.552-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=5b534ea23073afffc25a53e375386aff0c984b3b6cec1c14af461b61392cc0e6"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=5b534ea23073afffc25a53e375386aff0c984b3b6cec1c14af461b61392cc0e6"}],"requests":[{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_card_display_attest_test","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:37.924-04:00"},{"id":"2549d742-be67-42ce-8355-eede8dbba336","created_at":"2026-03-09T16:31:37.938-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"encounter_start_selected_response_types","label":"Response types to return from encounter-start hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_start_custom_response_template","label":"Custom response for encounter-start hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"encounter_start_override_access_token","label":"encounter-start Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start","test_run_id":"c699e608-8018-4550-a1b4-99eed1d386b1","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:37.938-04:00"},{"id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","created_at":"2026-03-09T16:31:41.068-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"encounter_discharge_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_discharge_custom_response_template","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/9Tki84kElmT/results/ee69edb3-521b-4cdc-bea9-e8cbc98a58b0/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"textarea","is_large":true}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=encounter-discharge%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.191-04:00"},{"id":"494c9b49-9d33-4202-a175-c9b2f9c01e94","created_at":"2026-03-09T16:31:47.208-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1kaXNjaGFyZ2Utc2VydmljZSIsImV4cCI6MTc3MzA4ODYwNCwiaWF0IjoxNzczMDg4MzA0LCJqdGkiOiI2Mjk2NWI3ZDllZDcyNTlhNzUzNDBkMTU2OGE0Yzg4OGRlOWI0YzhmMGI3MWIwYzhiNjJjMWRiOTE5NGEzYzRhIn0.9bL15PqYQNq_Qms62A_8Ce9yNmjAjIjdSlY9xdEBMgQ1Y_CTOjN19cN7_9LIBYzWSmPdmrBOwawnbhwN9VU3YxcE0Q3k4WZkMa_fFAtvUAT8t4c3cd1ikEp3P2tZYTjX\"]"},{"name":"encounter_discharge_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service\\\",\\\"exp\\\":1773088604,\\\"iat\\\":1773088304,\\\"jti\\\":\\\"62965b7d9ed7259a75340d1568a4c888de9b4c8f0b71b0c8b62c1db9194a3c4a\\\"}\"]"},{"name":"encounter_discharge_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_decode_auth_token","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.208-04:00"},{"id":"5fd38a9a-882d-4022-a055-a1737fe8d791","created_at":"2026-03-09T16:31:47.214-04:00","inputs":[{"name":"encounter_discharge_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"encounter_discharge_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"3b755067-e0f1-4917-892d-4645ada3f78c","direction":"outgoing","index":4537,"result_id":"5fd38a9a-882d-4022-a055-a1737fe8d791","status":200,"timestamp":"2026-03-09T16:31:47.215-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_retrieve_jwks","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.214-04:00"},{"id":"490b4212-a0be-4184-9535-f04b76fa64d8","created_at":"2026-03-09T16:31:47.219-04:00","inputs":[{"name":"encounter_discharge_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"encounter_discharge_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_header","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.219-04:00"},{"id":"a80e9168-16c7-462a-a1bc-d92173113a5b","created_at":"2026-03-09T16:31:47.224-04:00","inputs":[{"name":"encounter_discharge_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1kaXNjaGFyZ2Utc2VydmljZSIsImV4cCI6MTc3MzA4ODYwNCwiaWF0IjoxNzczMDg4MzA0LCJqdGkiOiI2Mjk2NWI3ZDllZDcyNTlhNzUzNDBkMTU2OGE0Yzg4OGRlOWI0YzhmMGI3MWIwYzhiNjJjMWRiOTE5NGEzYzRhIn0.9bL15PqYQNq_Qms62A_8Ce9yNmjAjIjdSlY9xdEBMgQ1Y_CTOjN19cN7_9LIBYzWSmPdmrBOwawnbhwN9VU3YxcE0Q3k4WZkMa_fFAtvUAT8t4c3cd1ikEp3P2tZYTjX\"]","type":"text"},{"name":"encounter_discharge_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.224-04:00"},{"id":"4421e549-02b1-4b70-ad6f-54a7dd80a351","created_at":"2026-03-09T16:31:47.227-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"},{"name":"prefetches","type":"text","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.227-04:00"},{"id":"72f87561-fa30-406c-ab9d-665aaff8aa9d","created_at":"2026-03-09T16:31:47.231-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"encounter_discharge_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.231-04:00"},{"id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","created_at":"2026-03-09T16:31:47.649-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"encounter_discharge_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_discharge_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"b5628bf9-f64e-4029-8396-5dc56bd50743","direction":"outgoing","index":4538,"result_id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","status":200,"timestamp":"2026-03-09T16:31:47.659-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"9e93c858-35e6-4d57-acd3-e8d041c68e5c","direction":"outgoing","index":4539,"result_id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","status":200,"timestamp":"2026-03-09T16:31:47.673-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"11ef8f25-0971-4891-9a6a-f8374970750a","direction":"outgoing","index":4540,"result_id":"9893cb7c-6c02-4178-a1d8-8309d0d12cda","status":200,"timestamp":"2026-03-09T16:31:47.686-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.649-04:00"},{"id":"2b21ec0a-c44b-4116-95b5-3dddb6a96544","created_at":"2026-03-09T16:31:47.715-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"prefetches","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_prefetch","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.715-04:00"},{"id":"5dce88cc-c82a-4e5b-bf82-e68c7d63579b","created_at":"2026-03-09T16:31:47.722-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"36afcede-27fa-4d75-80d2-07bbecd4a589","direction":"outgoing","index":4531,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.250-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"7acb6eba-d616-452f-8fa5-704babeab234","direction":"outgoing","index":4532,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.351-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"0a71d1f2-1ec3-4a8a-b3f9-b6abc8610bf8","direction":"outgoing","index":4533,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.461-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"GET"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_fetched_data","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.722-04:00"},{"id":"952e80e9-b803-44be-9fa1-448f13dc53dd","created_at":"2026-03-09T16:31:47.835-04:00","inputs":[{"name":"encounter_discharge_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_discharge_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"encounter_discharge_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"25638ecd-ae30-4420-8896-2212d94730a4","direction":"outgoing","index":4541,"result_id":"952e80e9-b803-44be-9fa1-448f13dc53dd","status":200,"timestamp":"2026-03-09T16:31:47.838-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_prefetch_equals_queried","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.835-04:00"},{"id":"b9dbd92e-5465-4ec1-b4f2-e1a89f274d2c","created_at":"2026-03-09T16:31:47.852-04:00","inputs":[{"name":"encounter_discharge_custom_response_template","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/9Tki84kElmT/results/b9dbd92e-5465-4ec1-b4f2-e1a89f274d2c/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"text","is_large":true},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_inferno_response_validation","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:47.852-04:00"},{"id":"804071fa-60e6-494a-ad56-a00c1d901f25","created_at":"2026-03-09T16:31:47.859-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=08b0e58e585e83291175472e660f8fe4c13cef378d2ca4adc4a0159a1cf8a853"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=08b0e58e585e83291175472e660f8fe4c13cef378d2ca4adc4a0159a1cf8a853"}],"requests":[{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_card_display_attest_test","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:50.253-04:00"},{"id":"33e30978-3a35-4934-86a7-9ca2e9f23461","created_at":"2026-03-09T16:31:50.264-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"encounter_discharge_selected_response_types","label":"Response types to return from encounter-discharge hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_discharge_custom_response_template","label":"Custom response for encounter-discharge hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/9Tki84kElmT/results/33e30978-3a35-4934-86a7-9ca2e9f23461/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"textarea","is_large":true},{"name":"encounter_discharge_override_access_token","label":"encounter-discharge Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge","test_run_id":"10e6b2fe-33bc-4e57-b964-68a5bf00ba1c","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:50.264-04:00"},{"id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","created_at":"2026-03-09T16:31:53.402-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_select_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_select_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-select%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.514-04:00"},{"id":"bbcf8164-adca-4876-ab27-63f967a330c9","created_at":"2026-03-09T16:31:59.527-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\"]"},{"name":"order_select_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-select-service\\\",\\\"exp\\\":1773088616,\\\"iat\\\":1773088316,\\\"jti\\\":\\\"8ecad20499a785a52eb7d9d71637571651dddadffc59a228228c3e7290fefa3f\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-select-service\\\",\\\"exp\\\":1773088616,\\\"iat\\\":1773088316,\\\"jti\\\":\\\"8ecad20499a785a52eb7d9d71637571651dddadffc59a228228c3e7290fefa3f\\\"}\"]"},{"name":"order_select_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_decode_auth_token","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.527-04:00"},{"id":"3021e01c-13d0-4420-9fe6-b90d0987972c","created_at":"2026-03-09T16:31:59.536-04:00","inputs":[{"name":"order_select_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_select_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"566127a8-0c40-4a37-b1c0-2c868b24fb38","direction":"outgoing","index":4554,"result_id":"3021e01c-13d0-4420-9fe6-b90d0987972c","status":200,"timestamp":"2026-03-09T16:31:59.537-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"0309ec75-6d72-41d9-82cc-0293ea02d072","direction":"outgoing","index":4555,"result_id":"3021e01c-13d0-4420-9fe6-b90d0987972c","status":200,"timestamp":"2026-03-09T16:31:59.543-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_retrieve_jwks","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.536-04:00"},{"id":"7f07a0e1-56f0-4c5d-a0aa-bdd5b1332638","created_at":"2026-03-09T16:31:59.547-04:00","inputs":[{"name":"order_select_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_select_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_header","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.547-04:00"},{"id":"4fe40468-fee7-4df4-8ff3-ac3c20265f4a","created_at":"2026-03-09T16:31:59.551-04:00","inputs":[{"name":"order_select_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMDg4NjE2LCJpYXQiOjE3NzMwODgzMTYsImp0aSI6IjhlY2FkMjA0OTlhNzg1YTUyZWI3ZDlkNzE2Mzc1NzE2NTFkZGRhZGZmYzU5YTIyODIyOGMzZTcyOTBmZWZhM2YifQ.H_o_bAaavbfL7J43Fer3MD4wcqPXl5rHv_3SZJO7tF6ygbwGxQzP2iJUX-WbBhZb9Bz7IYTMkqAFA7dcHZjgSxuJR-QcjwXXoQSDraF8JG3wxyIgVG0WE9sVUkD0CUNR\"]","type":"text"},{"name":"order_select_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.551-04:00"},{"id":"f48be4d9-2d89-4902-a4d8-bff77a8e20c0","created_at":"2026-03-09T16:31:59.557-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.557-04:00"},{"id":"309236ed-a597-4184-832b-984bf304aad3","created_at":"2026-03-09T16:31:59.561-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":false,"outputs":[{"name":"order_select_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_select_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:31:59.561-04:00"},{"id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","created_at":"2026-03-09T16:32:00.456-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"order_select_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_select_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"693bdb66-30e7-44d8-8b0b-4497dbf594fb","direction":"outgoing","index":4556,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.472-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"bc900aa6-91da-439e-98cd-974087cbfc75","direction":"outgoing","index":4557,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.483-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"7c2df29e-7be7-4810-8f1b-8bc8121c9b0b","direction":"outgoing","index":4558,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.493-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"e435b4e1-d986-4042-9dc8-889a7dea6417","direction":"outgoing","index":4559,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.501-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"5abc68bf-fc15-486c-a5f8-795332e37cbd","direction":"outgoing","index":4560,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.511-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"f3bcd34a-1d73-4f45-aa3e-049f1758ffdc","direction":"outgoing","index":4561,"result_id":"96708f8a-adbb-49b7-811f-f6f7b2f7a3ba","status":200,"timestamp":"2026-03-09T16:32:00.522-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.456-04:00"},{"id":"0754d758-c3ea-4da8-b73e-4b85f85809d1","created_at":"2026-03-09T16:32:00.557-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_prefetch","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.557-04:00"},{"id":"b32f9a1c-2547-4bbe-9a87-a778e4d40708","created_at":"2026-03-09T16:32:00.568-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"2308e3ab-48e9-4f0f-8365-f5736e42ab34","direction":"outgoing","index":4543,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.588-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"90a5ad62-fc69-4caa-a558-7d83561b4027","direction":"outgoing","index":4544,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.691-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"36be797c-17aa-4d7a-9211-74422d5275e0","direction":"outgoing","index":4545,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.810-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"064e2812-f13c-4f4b-984e-730a5ec73a34","direction":"outgoing","index":4547,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.949-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"033cc0d4-18ab-49d1-8186-4bc72fbaab40","direction":"outgoing","index":4548,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.051-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"28753b83-73b5-4bd7-abf4-da7de339e5a6","direction":"outgoing","index":4549,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.170-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_fetched_data","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.568-04:00"},{"id":"6fddb55c-0766-4ac6-b9c8-757c18fe9b69","created_at":"2026-03-09T16:32:00.796-04:00","inputs":[{"name":"order_select_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_select_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_select_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"8de18d15-5d31-4bdb-9f4c-b0f196bb2b76","direction":"outgoing","index":4562,"result_id":"6fddb55c-0766-4ac6-b9c8-757c18fe9b69","status":200,"timestamp":"2026-03-09T16:32:00.801-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"4ab0de8a-7e3c-4db6-97fc-c09f103f58a3","direction":"outgoing","index":4563,"result_id":"6fddb55c-0766-4ac6-b9c8-757c18fe9b69","status":200,"timestamp":"2026-03-09T16:32:00.814-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_prefetch_equals_queried","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.796-04:00"},{"id":"89150e80-eede-4de1-9660-1064705ba249","created_at":"2026-03-09T16:32:00.827-04:00","inputs":[{"name":"order_select_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_inferno_response_validation","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:00.827-04:00"},{"id":"7e599d25-3afa-4170-9c76-d0c26e8ddcc1","created_at":"2026-03-09T16:32:00.840-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=5c08eb2ca7fc65e59655c2b65cd7de07c5696d70d7f7dbc0c46f7d763e79e6a2"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=5c08eb2ca7fc65e59655c2b65cd7de07c5696d70d7f7dbc0c46f7d763e79e6a2"}],"requests":[{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_card_display_attest_test","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:02.570-04:00"},{"id":"f3bdddd9-5a9e-4d78-9aa1-271835e2b3e9","created_at":"2026-03-09T16:32:02.581-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_select_selected_response_types","label":"Response types to return from order-select hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_select_custom_response_template","label":"Custom response for order-select hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_select_override_access_token","label":"order-select Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select","test_run_id":"1b552554-74cd-48a2-9e83-eb8c743ba91a","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:02.581-04:00"},{"id":"784a5907-f44f-4cfc-8df6-78f847583c96","created_at":"2026-03-09T16:32:05.727-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_dispatch_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_dispatch_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-dispatch%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.864-04:00"},{"id":"f3f03179-3565-4b60-b555-b02b68170155","created_at":"2026-03-09T16:32:11.877-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\"]"},{"name":"order_dispatch_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service\\\",\\\"exp\\\":1773088628,\\\"iat\\\":1773088328,\\\"jti\\\":\\\"ac630b07fc80bfb0ca4e3e18676ef3b9572ff832b45578295a1be5fcbc32316d\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service\\\",\\\"exp\\\":1773088628,\\\"iat\\\":1773088328,\\\"jti\\\":\\\"ac630b07fc80bfb0ca4e3e18676ef3b9572ff832b45578295a1be5fcbc32316d\\\"}\"]"},{"name":"order_dispatch_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_decode_auth_token","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.877-04:00"},{"id":"17603891-5d89-4e30-bf66-65a7428f9a38","created_at":"2026-03-09T16:32:11.884-04:00","inputs":[{"name":"order_dispatch_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_dispatch_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"ef6d7398-2608-4f74-9254-19f5534d4a7c","direction":"outgoing","index":4572,"result_id":"17603891-5d89-4e30-bf66-65a7428f9a38","status":200,"timestamp":"2026-03-09T16:32:11.886-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"f367ba6b-7cf4-470b-a275-801a1c807db2","direction":"outgoing","index":4573,"result_id":"17603891-5d89-4e30-bf66-65a7428f9a38","status":200,"timestamp":"2026-03-09T16:32:11.889-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_retrieve_jwks","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.884-04:00"},{"id":"f930bd4f-c991-470b-b45d-c2390d9f21fd","created_at":"2026-03-09T16:32:11.895-04:00","inputs":[{"name":"order_dispatch_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_dispatch_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_header","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.895-04:00"},{"id":"1c8a7256-a657-497c-8e2d-cc748b763628","created_at":"2026-03-09T16:32:11.900-04:00","inputs":[{"name":"order_dispatch_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMwODg2MjgsImlhdCI6MTc3MzA4ODMyOCwianRpIjoiYWM2MzBiMDdmYzgwYmZiMGNhNGUzZTE4Njc2ZWYzYjk1NzJmZjgzMmI0NTU3ODI5NWExYmU1ZmNiYzMyMzE2ZCJ9.8k0TFQFPWONE2RBoOYBYTF1h3pT8YmRV14G3pgW0PLrhx0AipBXeEk69fDEQ3qshx6pHiFdZaRK0YaRL5VpmRpgScyGtC-UgJiTvBTVF4IGOIxAzSajqGISZYb5Mkc4f\"]","type":"text"},{"name":"order_dispatch_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.900-04:00"},{"id":"a14e7917-6e96-4ea1-a0c5-521269af3f20","created_at":"2026-03-09T16:32:11.905-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]"},{"name":"prefetches","type":"text","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"status\":\"draft\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"intent\":\"original-order\",\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"}},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}}]"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.905-04:00"},{"id":"8f06dd29-ae4f-4d9b-9a18-ea06b25f5951","created_at":"2026-03-09T16:32:11.910-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_dispatch_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:11.910-04:00"},{"id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","created_at":"2026-03-09T16:32:13.224-04:00","inputs":[{"name":"contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"order_dispatch_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_dispatch_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"d4aa0335-a36a-4c74-93f0-625427d72e06","direction":"outgoing","index":4574,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.235-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"ddd80a6a-a910-48f7-aa9b-42fd9e3abaa7","direction":"outgoing","index":4575,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.249-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"get"},{"id":"a1aacaa3-87c9-4050-90af-5cd778d1509d","direction":"outgoing","index":4576,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.265-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"79a73a44-a0d5-4bcf-85a4-ee1b56cd20d8","direction":"outgoing","index":4577,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.276-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"fea07c3a-85e9-4e56-ad12-bf0144e575f3","direction":"outgoing","index":4578,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.288-04:00","url":"https://inferno.healthit.gov/reference-server/r4/DeviceRequest/devreq015","verb":"get"},{"id":"5c3367c2-a6f8-4e9f-9e6e-893ee196771e","direction":"outgoing","index":4579,"result_id":"9a3827b5-da82-45c0-bad3-cd92320e9d6d","status":200,"timestamp":"2026-03-09T16:32:13.297-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:13.224-04:00"},{"id":"a8571bad-d117-49e5-8f38-1d61ec3d9397","created_at":"2026-03-09T16:32:13.407-04:00","inputs":[{"name":"contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"prefetches","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"status\":\"draft\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"intent\":\"original-order\",\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"}},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_prefetch","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:13.407-04:00"},{"id":"cd70f844-345b-43a5-a81a-7bd18bab27fb","created_at":"2026-03-09T16:32:13.434-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"693f7e7e-88f7-4466-994e-da2fa6263df5","direction":"outgoing","index":4565,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:08.911-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"9d69b38f-df64-4ce4-84e4-256702fbd07f","direction":"outgoing","index":4567,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.137-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_fetched_data","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:13.434-04:00"},{"id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","created_at":"2026-03-09T16:32:14.125-04:00","inputs":[{"name":"order_dispatch_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_dispatch_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_dispatch_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"3c8f5d11-c203-4135-bd6a-5d12b7b2a116","direction":"outgoing","index":4580,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.129-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"30bfba25-9561-4173-b144-1cd1150c792b","direction":"outgoing","index":4581,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.144-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"get"},{"id":"6dcda94c-7762-42bf-a756-5270db82f883","direction":"outgoing","index":4582,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.154-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"656a9b43-177a-4e72-af6e-efe104eef54c","direction":"outgoing","index":4583,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.164-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"48f58d6b-7571-43a5-94d1-7df22744df31","direction":"outgoing","index":4584,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.175-04:00","url":"https://inferno.healthit.gov/reference-server/r4/DeviceRequest/devreq015","verb":"get"},{"id":"45378dea-527a-42d2-9212-4664cdcf2cd8","direction":"outgoing","index":4585,"result_id":"6cc7526c-744d-4522-a6a9-0a6be5caaa5a","status":200,"timestamp":"2026-03-09T16:32:14.185-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_prefetch_equals_queried","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.125-04:00"},{"id":"a662b002-8b19-4314-b58d-51cf4fbff24d","created_at":"2026-03-09T16:32:14.199-04:00","inputs":[{"name":"order_dispatch_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_inferno_response_validation","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.199-04:00"},{"id":"e8b6e926-73f6-40ee-a1dc-48a42352177d","created_at":"2026-03-09T16:32:14.212-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=4774f079144f6ce2217969da55788af23af2a3c6d5cb15f63ca492f8b3723116"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=4774f079144f6ce2217969da55788af23af2a3c6d5cb15f63ca492f8b3723116"}],"requests":[{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_card_display_attest_test","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.928-04:00"},{"id":"19a8f56b-cff9-4884-8418-2ae70d5ea05a","created_at":"2026-03-09T16:32:14.939-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_dispatch_selected_response_types","label":"Response types to return from order-dispatch hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_dispatch_custom_response_template","label":"Custom response for order-dispatch hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_dispatch_override_access_token","label":"order-dispatch Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch","test_run_id":"0dd09572-3f18-4181-ae60-1749cfe6020e","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:14.939-04:00"},{"id":"e9718df5-4a4f-46cb-b494-fec4930d9391","created_at":"2026-03-09T16:32:18.071-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_sign_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_sign_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-sign%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.196-04:00"},{"id":"1088c7a9-fcb4-455d-b9a5-2ba00bbc6ce1","created_at":"2026-03-09T16:32:24.210-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\"]"},{"name":"order_sign_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-sign-service\\\",\\\"exp\\\":1773088641,\\\"iat\\\":1773088341,\\\"jti\\\":\\\"0e7b52dac8bea94ae9885f0986c264db01a4237160eb8f557c30687847b78004\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-sign-service\\\",\\\"exp\\\":1773088641,\\\"iat\\\":1773088341,\\\"jti\\\":\\\"0e7b52dac8bea94ae9885f0986c264db01a4237160eb8f557c30687847b78004\\\"}\"]"},{"name":"order_sign_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_decode_auth_token","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.210-04:00"},{"id":"88f722d7-c7c8-443b-ba60-631b572faca4","created_at":"2026-03-09T16:32:24.217-04:00","inputs":[{"name":"order_sign_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_sign_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"0ea0722a-af68-4d36-bd38-df83e959df27","direction":"outgoing","index":4595,"result_id":"88f722d7-c7c8-443b-ba60-631b572faca4","status":200,"timestamp":"2026-03-09T16:32:24.218-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"fda34a4f-5d03-425c-ab3c-67f4d32ce474","direction":"outgoing","index":4596,"result_id":"88f722d7-c7c8-443b-ba60-631b572faca4","status":200,"timestamp":"2026-03-09T16:32:24.221-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_retrieve_jwks","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.217-04:00"},{"id":"399355a9-6774-4649-bfdf-6c8e7b9f2f8d","created_at":"2026-03-09T16:32:24.225-04:00","inputs":[{"name":"order_sign_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_sign_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_header","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.225-04:00"},{"id":"2b3a2a10-7674-4cf3-83e7-6e329e6948f2","created_at":"2026-03-09T16:32:24.230-04:00","inputs":[{"name":"order_sign_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzA4ODY0MSwiaWF0IjoxNzczMDg4MzQxLCJqdGkiOiIwZTdiNTJkYWM4YmVhOTRhZTk4ODVmMDk4NmMyNjRkYjAxYTQyMzcxNjBlYjhmNTU3YzMwNjg3ODQ3Yjc4MDA0In0._bumxnNAWfWKTh91wW4he77gzzJRyEfS8tcoSD2nA9Ljb-W0SZ0n3ZWc-1m3jhC4Sh6HoaSc6knmvBTWjg927OCKyOc6yBNO8Y2rrWDKKOplEVk0W5L-f2Ej3rpNIAU1\"]","type":"text"},{"name":"order_sign_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.230-04:00"},{"id":"d76967be-775a-485c-a860-2e4dd3f3a1c8","created_at":"2026-03-09T16:32:24.234-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"user\":{\"resourceType\":\"Practitioner\",\"id\":\"pra1234\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"]},\"identifier\":[{\"system\":\"http://hl7.org/fhir/sid/us-npi\",\"value\":\"1122334455\"}],\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"840 Seneca St\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"716-873-1557\"},{\"system\":\"email\",\"value\":\"jane.betty@myhospital.com\"}],\"name\":[{\"use\":\"official\",\"family\":\"Doe\",\"given\":[\"Jane\",\"Betty\"],\"prefix\":[\"Dr.\"]}],\"qualification\":[{\"code\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0360\",\"code\":\"MD\",\"display\":\"Doctor of Medicine\"}],\"text\":\"Doctor of Medicine\"},\"period\":{\"start\":\"1995\"},\"issuer\":{\"display\":\"Example University\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.234-04:00"},{"id":"fbb3c5db-65c9-4439-9d7b-7f775270f434","created_at":"2026-03-09T16:32:24.240-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":false,"outputs":[{"name":"order_sign_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_sign_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:24.240-04:00"},{"id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","created_at":"2026-03-09T16:32:25.129-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"order_sign_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_sign_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"09f7ebef-8baf-4bfa-94a9-6dec5cf4ab26","direction":"outgoing","index":4597,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.149-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"3e207a8d-fc26-43fa-ac82-c6188282d5d5","direction":"outgoing","index":4598,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.163-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"7cb49e4d-93c7-4288-9d46-0ece1be858c8","direction":"outgoing","index":4599,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.174-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"41bb4ed3-9ad9-47a9-bab8-3d7111f669d0","direction":"outgoing","index":4600,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.183-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"185f7b45-e41d-469d-a887-31fbcd7cdf0b","direction":"outgoing","index":4601,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.193-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"509e6038-08e9-4049-b454-40bc4c3a6a1a","direction":"outgoing","index":4602,"result_id":"6de0aa61-82a3-49f8-a0ee-f819faa914a9","status":200,"timestamp":"2026-03-09T16:32:25.204-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.129-04:00"},{"id":"c003f839-da67-4eb0-8bef-720ab700f05d","created_at":"2026-03-09T16:32:25.293-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"user\":{\"resourceType\":\"Practitioner\",\"id\":\"pra1234\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"]},\"identifier\":[{\"system\":\"http://hl7.org/fhir/sid/us-npi\",\"value\":\"1122334455\"}],\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"840 Seneca St\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"716-873-1557\"},{\"system\":\"email\",\"value\":\"jane.betty@myhospital.com\"}],\"name\":[{\"use\":\"official\",\"family\":\"Doe\",\"given\":[\"Jane\",\"Betty\"],\"prefix\":[\"Dr.\"]}],\"qualification\":[{\"code\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0360\",\"code\":\"MD\",\"display\":\"Doctor of Medicine\"}],\"text\":\"Doctor of Medicine\"},\"period\":{\"start\":\"1995\"},\"issuer\":{\"display\":\"Example University\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient.address[0].state: The value provided ('NY') was not found in the value set 'USPS Two Letter Alphabetic Codes' (http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1), and a code should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (error message = Error from http://tx.fhir.org/r4: Error: A definition for the value Set 'http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state|3.1.1' could not be found)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_prefetch","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.293-04:00"},{"id":"304b37f7-ac46-48cb-a0b9-976cd1d9a2b0","created_at":"2026-03-09T16:32:25.322-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"ad1dcdc7-76b7-437e-a1b6-68e12917e581","direction":"outgoing","index":4587,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.253-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"9c2edc66-c622-4a04-9d4c-dae204dc5bd4","direction":"outgoing","index":4589,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.392-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"c6f41656-fb19-4e46-a1ef-eb11e76c36bd","direction":"outgoing","index":4590,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.507-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_fetched_data","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.322-04:00"},{"id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","created_at":"2026-03-09T16:32:25.905-04:00","inputs":[{"name":"order_sign_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_sign_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_sign_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"87fd8c9a-291d-4cd5-948f-73a78cd31790","direction":"outgoing","index":4603,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.910-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"4084b19b-c67d-484e-a983-fccb0cfe8ad9","direction":"outgoing","index":4604,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.924-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"083178ad-15d9-484e-902b-97147ea67b5e","direction":"outgoing","index":4605,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.934-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"34ce9673-67e6-479c-9f81-040fe3ef43e1","direction":"outgoing","index":4606,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.946-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"73df8005-8269-4e84-b144-15046ca6ee0d","direction":"outgoing","index":4607,"result_id":"9ec9f75f-693a-42de-80cb-b15d44779cd3","status":200,"timestamp":"2026-03-09T16:32:25.956-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_prefetch_equals_queried","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.905-04:00"},{"id":"61a93010-14c7-4df3-88d6-9c85a4d06214","created_at":"2026-03-09T16:32:25.969-04:00","inputs":[{"name":"order_sign_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_inferno_response_validation","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:25.969-04:00"},{"id":"4552eaed-90c4-4a7b-b3bb-e38b336a29b5","created_at":"2026-03-09T16:32:25.982-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=eaffeaf98d1440069b2f516781f4ce60609619c1513720d7e26f40d393929f88"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=eaffeaf98d1440069b2f516781f4ce60609619c1513720d7e26f40d393929f88"}],"requests":[{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_card_display_attest_test","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:27.260-04:00"},{"id":"0df5706f-cb85-46e8-a021-6ede6d3443c0","created_at":"2026-03-09T16:32:27.272-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_sign_selected_response_types","label":"Response types to return from order-sign hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_sign_custom_response_template","label":"Custom response for order-sign hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_sign_override_access_token","label":"order-sign Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:27.272-04:00"},{"id":"21cfe40b-e663-4e84-99fb-af110a9c2ae6","created_at":"2026-03-09T16:32:27.275-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks","test_run_id":"c12814bd-b51c-463b-95d3-6009547c5288","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:27.275-04:00"},{"id":"8a310e0d-a30c-4afd-9a31-f9da1ed7136a","created_at":"2026-03-09T16:32:30.523-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_coverage_information","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.523-04:00"},{"id":"cfee8e8a-cba3-4513-bd44-6d597908c1ed","created_at":"2026-03-09T16:32:30.541-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_external_reference","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.541-04:00"},{"id":"c4e2931a-7793-419b-88c4-11c14bee9b5c","created_at":"2026-03-09T16:32:30.554-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"a656af3e-bada-46d3-8a15-c573d34551b4","direction":"incoming","index":4487,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:16.718-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"3a607e0f-aef1-42b4-a2c3-17b8f8a2b242","direction":"incoming","index":4493,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:19.869-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"82bb7f12-1087-41e9-8f2b-0c016149cdb5","direction":"incoming","index":4496,"result_id":"03da89aa-2908-4552-bc2d-70ee4be7c18c","status":200,"timestamp":"2026-03-09T16:31:20.104-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"e9dad717-821f-46b2-ac55-e0259f2a9812","direction":"incoming","index":4522,"result_id":"8759ce4a-ead7-4d5b-9702-90089c18b635","status":200,"timestamp":"2026-03-09T16:31:32.266-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"f0f10178-394f-4e89-a15a-0027cd336355","direction":"incoming","index":4534,"result_id":"ee69edb3-521b-4cdc-bea9-e8cbc98a58b0","status":200,"timestamp":"2026-03-09T16:31:44.485-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"2e21aeb8-4a8d-4d82-b133-9fcdd0de667c","direction":"incoming","index":4546,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:56.833-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1ea0b5ce-87f9-4f74-b8af-4eaf40498a8f","direction":"incoming","index":4550,"result_id":"b1b65d45-08b2-44b4-8add-1b34c5ae1087","status":200,"timestamp":"2026-03-09T16:31:57.188-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e80ffe57-0d1d-466c-82e2-69661859e7fb","direction":"incoming","index":4566,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.018-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"311cf14d-59cb-4a96-9f73-2ac16b3005f6","direction":"incoming","index":4568,"result_id":"784a5907-f44f-4cfc-8df6-78f847583c96","status":200,"timestamp":"2026-03-09T16:32:09.256-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"8d965e7a-1ee5-4ea8-8d5e-f307fbe70764","direction":"incoming","index":4588,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.275-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"100716fd-e286-422b-b2fe-71b46fed896e","direction":"incoming","index":4591,"result_id":"e9718df5-4a4f-46cb-b494-fec4930d9391","status":200,"timestamp":"2026-03-09T16:32:21.528-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_instructions","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.554-04:00"},{"id":"8ebe5246-3354-4659-9e46-d697a3599c46","created_at":"2026-03-09T16:32:30.561-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.561-04:00"},{"id":"ec53784f-4ceb-4d61-8c03-600fe8c2c5b3","created_at":"2026-03-09T16:32:30.562-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation","test_run_id":"aa6115c2-34de-4ee1-916e-fc5d397a6cea","test_session_id":"9Tki84kElmT","updated_at":"2026-03-09T16:32:30.562-04:00"}] \ No newline at end of file +[{"id":"9ed3575b-7efe-41e9-8655-a80eac32851b","created_at":"2026-03-12T13:39:34.095-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_registration_verification","test_run_id":"a5c2eb18-f576-4f15-a26f-0aab22fdd970","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:34.095-04:00"},{"id":"ab2ac9a5-c210-4334-8726-d0a41033bc6b","created_at":"2026-03-12T13:39:34.099-04:00","inputs":[],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=60657987e3cdb31be63908ee2e62cc6bac1808de117aae9a89966544b93d192f"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=60657987e3cdb31be63908ee2e62cc6bac1808de117aae9a89966544b93d192f"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_service_registration_attestation","test_run_id":"a5c2eb18-f576-4f15-a26f-0aab22fdd970","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:37.139-04:00"},{"id":"76e3837c-c2d3-44d3-b47a-486672fd0bd0","created_at":"2026-03-12T13:39:37.162-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n The `iss` claim of the JWT in the Authorization header sent by the CRD client under test on\n all CRD requests. This value will be used to associate incoming requests with this test\n session and any requests that use a different `iss` value will not be recognized.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The CRD client's JWK Set containing it's public key. May be either\n a publicly accessible url containing the JWKS, or the raw JWKS.\n This input is required for these tests to pass.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_registration","test_run_id":"a5c2eb18-f576-4f15-a26f-0aab22fdd970","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:37.162-04:00"},{"id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","created_at":"2026-03-12T13:39:40.275-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"appointment_book_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"appointment_book_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=appointment-book%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:55.544-04:00"},{"id":"139241a0-d7a8-4ce8-b6c6-7daf4c2a59ea","created_at":"2026-03-12T13:39:55.563-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzMzNzQ4NiwiaWF0IjoxNzczMzM3MTg2LCJqdGkiOiI4NWZlODcxYWIxOTBmNDE2MzUxN2E1YzA3ZjA4MDZmNDc1MmE1OTgyN2FlOWYzODFjYTA2ODIxZjc1ZDEyYThlIn0.j2oPRAQ1dDw2J3C3B4MnHGwupg79Tz7H7TDEDOHTGefb6lMrRlJsketFN9fea9e0mukgjkhr0UNLsXT2ucGX3WsWKTAycFuMiDh1q9a2aVhcZPnjpYVPCLDNs2zT_PiP\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzMzNzQ4OSwiaWF0IjoxNzczMzM3MTg5LCJqdGkiOiJkNTZhZjc4YjNmN2E0NTU4MTIwYmFlYWVlNGE1OTdiMjU5OWYzNDAwZmZiNjZmZmVjNjU4MDZkZjg5YTYyZmI5In0.-0KhJGVzCRtf8ItEOReWhNSog_RcWmblPBhyGW-0gWg5_AWgYfqXWxjMlgOljiRuB6pnwnL-6RO43kleRO_leKlfdYr7ybbETK2-UpUYYcJ4pD4KaCiKT9qk1eO0GYOz\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzMzNzQ4OSwiaWF0IjoxNzczMzM3MTg5LCJqdGkiOiJkNTZhZjc4YjNmN2E0NTU4MTIwYmFlYWVlNGE1OTdiMjU5OWYzNDAwZmZiNjZmZmVjNjU4MDZkZjg5YTYyZmI5In0.-0KhJGVzCRtf8ItEOReWhNSog_RcWmblPBhyGW-0gWg5_AWgYfqXWxjMlgOljiRuB6pnwnL-6RO43kleRO_leKlfdYr7ybbETK2-UpUYYcJ4pD4KaCiKT9qk1eO0GYOz\"]"},{"name":"appointment_book_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773337486,\\\"iat\\\":1773337186,\\\"jti\\\":\\\"85fe871ab190f4163517a5c07f0806f4752a59827ae9f381ca06821f75d12a8e\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773337489,\\\"iat\\\":1773337189,\\\"jti\\\":\\\"d56af78b3f7a4558120baeaee4a597b2599f3400ffb66ffec65806df89a62fb9\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service\\\",\\\"exp\\\":1773337489,\\\"iat\\\":1773337189,\\\"jti\\\":\\\"d56af78b3f7a4558120baeaee4a597b2599f3400ffb66ffec65806df89a62fb9\\\"}\"]"},{"name":"appointment_book_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_decode_auth_token","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:55.563-04:00"},{"id":"d9cf9859-c5dc-4e35-9a87-2db209cb2d62","created_at":"2026-03-12T13:39:55.573-04:00","inputs":[{"name":"appointment_book_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"appointment_book_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"ece1b511-eea4-4f89-9d69-44b82d6252b6","direction":"outgoing","index":6233,"result_id":"d9cf9859-c5dc-4e35-9a87-2db209cb2d62","status":200,"timestamp":"2026-03-12T13:39:55.574-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"4a1cc564-8a6a-4248-8192-50e2b5686948","direction":"outgoing","index":6234,"result_id":"d9cf9859-c5dc-4e35-9a87-2db209cb2d62","status":200,"timestamp":"2026-03-12T13:39:55.580-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"c23c431e-4366-413c-939d-7b25c86f3813","direction":"outgoing","index":6235,"result_id":"d9cf9859-c5dc-4e35-9a87-2db209cb2d62","status":200,"timestamp":"2026-03-12T13:39:55.587-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_retrieve_jwks","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:55.573-04:00"},{"id":"c2499895-d761-4c1e-b1ea-238dfdc3ce7c","created_at":"2026-03-12T13:39:55.592-04:00","inputs":[{"name":"appointment_book_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"appointment_book_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_header","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:55.592-04:00"},{"id":"f5c6506d-abd3-48b3-bc47-2a39845374c4","created_at":"2026-03-12T13:39:55.598-04:00","inputs":[{"name":"appointment_book_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzMzNzQ4NiwiaWF0IjoxNzczMzM3MTg2LCJqdGkiOiI4NWZlODcxYWIxOTBmNDE2MzUxN2E1YzA3ZjA4MDZmNDc1MmE1OTgyN2FlOWYzODFjYTA2ODIxZjc1ZDEyYThlIn0.j2oPRAQ1dDw2J3C3B4MnHGwupg79Tz7H7TDEDOHTGefb6lMrRlJsketFN9fea9e0mukgjkhr0UNLsXT2ucGX3WsWKTAycFuMiDh1q9a2aVhcZPnjpYVPCLDNs2zT_PiP\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzMzNzQ4OSwiaWF0IjoxNzczMzM3MTg5LCJqdGkiOiJkNTZhZjc4YjNmN2E0NTU4MTIwYmFlYWVlNGE1OTdiMjU5OWYzNDAwZmZiNjZmZmVjNjU4MDZkZjg5YTYyZmI5In0.-0KhJGVzCRtf8ItEOReWhNSog_RcWmblPBhyGW-0gWg5_AWgYfqXWxjMlgOljiRuB6pnwnL-6RO43kleRO_leKlfdYr7ybbETK2-UpUYYcJ4pD4KaCiKT9qk1eO0GYOz\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2FwcG9pbnRtZW50LWJvb2stc2VydmljZSIsImV4cCI6MTc3MzMzNzQ4OSwiaWF0IjoxNzczMzM3MTg5LCJqdGkiOiJkNTZhZjc4YjNmN2E0NTU4MTIwYmFlYWVlNGE1OTdiMjU5OWYzNDAwZmZiNjZmZmVjNjU4MDZkZjg5YTYyZmI5In0.-0KhJGVzCRtf8ItEOReWhNSog_RcWmblPBhyGW-0gWg5_AWgYfqXWxjMlgOljiRuB6pnwnL-6RO43kleRO_leKlfdYr7ybbETK2-UpUYYcJ4pD4KaCiKT9qk1eO0GYOz\"]","type":"text"},{"name":"appointment_book_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:55.598-04:00"},{"id":"55f87be6-eea9-40bf-a1ad-e279d277235e","created_at":"2026-03-12T13:39:55.604-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"id\":\"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\"meta\":{\"lastUpdated\":\"2024-05-10T03:56:46.942+00:00\"},\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:55.604-04:00"},{"id":"92a31667-a5be-409d-b778-bd021fbf09cd","created_at":"2026-03-12T13:39:55.610-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"appointment_book_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:39:55.610-04:00"},{"id":"eba0608a-94d5-48f9-9137-b874d4d519e8","created_at":"2026-03-12T13:40:00.291-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"appointment_book_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"appointment_book_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"db306492-51b6-4927-b638-10b9428ea1e5","direction":"outgoing","index":6236,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.311-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"d72245d1-77c2-49a8-a0d4-27439bdfcb22","direction":"outgoing","index":6237,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.327-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"8aaca328-68cf-48e5-9ec6-d19e80b90fe1","direction":"outgoing","index":6238,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.343-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"b2c29555-b600-4ac9-9c90-b61c6c9157eb","direction":"outgoing","index":6239,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.355-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"124eca8a-67f7-4489-ae1b-bbef95a569ce","direction":"outgoing","index":6240,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.369-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"1cc80265-e0fa-493a-8fad-1ee9a7eaf8a7","direction":"outgoing","index":6241,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.384-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"3d22cd64-a80e-41c7-a83b-db006184bddf","direction":"outgoing","index":6242,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.397-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"d5325294-8ab2-4ac7-b921-5efeb8504240","direction":"outgoing","index":6243,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.412-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"603096cc-1017-49bd-8b3f-312d833fa255","direction":"outgoing","index":6244,"result_id":"eba0608a-94d5-48f9-9137-b874d4d519e8","status":200,"timestamp":"2026-03-12T13:40:00.425-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:00.291-04:00"},{"id":"488530d3-9645-4744-8822-ed384fd2479c","created_at":"2026-03-12T13:40:00.548-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"id\":\"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\"meta\":{\"lastUpdated\":\"2024-05-10T03:56:46.942+00:00\"},\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_prefetch","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:00.548-04:00"},{"id":"ecc035a1-3e4a-4800-9798-7246e2f7a56b","created_at":"2026-03-12T13:40:00.598-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"2c151831-6f84-4a2b-a1fb-ede349235bcc","direction":"outgoing","index":6218,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.572-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"8d30e9c5-5d1c-44f9-ab94-3cfceb25cf5f","direction":"outgoing","index":6219,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.706-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"4665a4ec-760d-4538-889d-678098dfaacb","direction":"outgoing","index":6222,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:49.611-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Location/us-core-client-tests-location","verb":"GET"},{"id":"222a1b0f-7ea5-4f81-871a-dd6c06682dce","direction":"outgoing","index":6223,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:49.733-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"GET"},{"id":"37a12993-af4a-4cce-94e8-bf7938a28c0b","direction":"outgoing","index":6224,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:49.860-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"48e56a9b-a205-43de-a508-02b6547ab86f","direction":"outgoing","index":6225,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:49.986-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"a9fa591c-aa0c-4536-851b-a57d4316ae07","direction":"outgoing","index":6227,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.149-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"e14952d8-42df-4710-8fb5-fc64b873403e","direction":"outgoing","index":6228,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.277-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_fetched_data","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:00.598-04:00"},{"id":"fa7e3242-d190-4a62-9250-dc128bd1c6ed","created_at":"2026-03-12T13:40:01.382-04:00","inputs":[{"name":"appointment_book_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"appointment_book_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"appointment_book_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"f6eabe97-bc32-41b3-91d5-513e275b092b","direction":"outgoing","index":6245,"result_id":"fa7e3242-d190-4a62-9250-dc128bd1c6ed","status":200,"timestamp":"2026-03-12T13:40:01.389-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"2b06827a-1adb-4773-aa09-9534f3e19448","direction":"outgoing","index":6246,"result_id":"fa7e3242-d190-4a62-9250-dc128bd1c6ed","status":200,"timestamp":"2026-03-12T13:40:01.403-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"a25441f2-1bea-4b9b-8f10-95b1dbffc6c0","direction":"outgoing","index":6247,"result_id":"fa7e3242-d190-4a62-9250-dc128bd1c6ed","status":200,"timestamp":"2026-03-12T13:40:01.415-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"a3c63884-d1f6-4b5f-a91d-2a1211d420dc","direction":"outgoing","index":6248,"result_id":"fa7e3242-d190-4a62-9250-dc128bd1c6ed","status":200,"timestamp":"2026-03-12T13:40:01.427-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"0916faf6-fda8-4e5c-ace9-99d422347a15","direction":"outgoing","index":6249,"result_id":"fa7e3242-d190-4a62-9250-dc128bd1c6ed","status":200,"timestamp":"2026-03-12T13:40:01.438-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"f0d81513-3680-4d8e-985f-1ddb397b08b5","direction":"outgoing","index":6250,"result_id":"fa7e3242-d190-4a62-9250-dc128bd1c6ed","status":200,"timestamp":"2026-03-12T13:40:01.453-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_prefetch_equals_queried","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:01.382-04:00"},{"id":"42c94173-c5ba-4325-b36a-15bf7838d948","created_at":"2026-03-12T13:40:01.473-04:00","inputs":[{"name":"appointment_book_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_inferno_response_validation","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:01.473-04:00"},{"id":"d57e5c2f-5b9f-4bf7-85dd-5554314e56fa","created_at":"2026-03-12T13:40:01.490-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=67465ff91317523f3dc20bd1b1d2a4f3a198c60deb9f75dc09874d901e4f61a4"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=67465ff91317523f3dc20bd1b1d2a4f3a198c60deb9f75dc09874d901e4f61a4"}],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_card_display_attest_test","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:01.622-04:00"},{"id":"1fca8e76-a864-4047-88a8-c19da9865f07","created_at":"2026-03-12T13:40:01.635-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"appointment_book_selected_response_types","label":"Response types to return from appointment-book hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"appointment_book_custom_response_template","label":"Custom response for appointment-book hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"appointment_book_override_access_token","label":"appointment-book Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book","test_run_id":"504f4ced-5d7f-42d5-9e0c-c4f5226ce1f9","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:01.635-04:00"},{"id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","created_at":"2026-03-12T13:40:04.775-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"encounter_start_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_start_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=encounter-start%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:10.913-04:00"},{"id":"01ac75d7-a95e-4880-bd23-a898db27e027","created_at":"2026-03-12T13:40:10.930-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1zdGFydC1zZXJ2aWNlIiwiZXhwIjoxNzczMzM3NTA3LCJpYXQiOjE3NzMzMzcyMDcsImp0aSI6ImZhNGY0NmUwZDA1OTU3MjJlODJhOTNmM2Y0YTU2MWMwMTgzZDZmOTYzODYzNWEyYWFjMWViZjgwOWFlZjM4N2EifQ.5OX1J9yn4-iEeZzueuGcFmZrdxveVxlhNRo0Nn-xEsDcmbEYt9pSyZFJUfCx4ffJspzUfSF7CrGJfbu51plESfpT2UD4hzv0EV3SmyX6w8R8aHHKecfYByza-aC4cfXN\"]"},{"name":"encounter_start_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service\\\",\\\"exp\\\":1773337507,\\\"iat\\\":1773337207,\\\"jti\\\":\\\"fa4f46e0d0595722e82a93f3f4a561c0183d6f9638635a2aac1ebf809aef387a\\\"}\"]"},{"name":"encounter_start_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_decode_auth_token","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:10.930-04:00"},{"id":"e8bea752-33b9-4cfb-9e7d-5969854ce7d2","created_at":"2026-03-12T13:40:10.935-04:00","inputs":[{"name":"encounter_start_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"encounter_start_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"b84daad5-e845-401c-bff4-2850f10e898d","direction":"outgoing","index":6258,"result_id":"e8bea752-33b9-4cfb-9e7d-5969854ce7d2","status":200,"timestamp":"2026-03-12T13:40:10.937-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_retrieve_jwks","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:10.935-04:00"},{"id":"fbe4c5c5-b54c-4930-82b7-87b895296804","created_at":"2026-03-12T13:40:10.942-04:00","inputs":[{"name":"encounter_start_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"encounter_start_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_header","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:10.942-04:00"},{"id":"24ff7a90-af55-4556-a8dc-529e7898c1ed","created_at":"2026-03-12T13:40:10.945-04:00","inputs":[{"name":"encounter_start_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1zdGFydC1zZXJ2aWNlIiwiZXhwIjoxNzczMzM3NTA3LCJpYXQiOjE3NzMzMzcyMDcsImp0aSI6ImZhNGY0NmUwZDA1OTU3MjJlODJhOTNmM2Y0YTU2MWMwMTgzZDZmOTYzODYzNWEyYWFjMWViZjgwOWFlZjM4N2EifQ.5OX1J9yn4-iEeZzueuGcFmZrdxveVxlhNRo0Nn-xEsDcmbEYt9pSyZFJUfCx4ffJspzUfSF7CrGJfbu51plESfpT2UD4hzv0EV3SmyX6w8R8aHHKecfYByza-aC4cfXN\"]","type":"text"},{"name":"encounter_start_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:10.945-04:00"},{"id":"6b96dc3a-919e-4101-96f8-5ce5111c5cdf","created_at":"2026-03-12T13:40:10.948-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"},{"name":"prefetches","type":"text","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]"}],"requests":[{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:10.948-04:00"},{"id":"38bec37e-c8ca-4d33-8f48-dabd7d8eab1f","created_at":"2026-03-12T13:40:10.951-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"encounter_start_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:10.951-04:00"},{"id":"87316128-e0b6-43b8-8d87-ab4449793ace","created_at":"2026-03-12T13:40:11.402-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"encounter_start_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_start_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"61c82f95-2b8b-4f09-9657-33d8b2e47c20","direction":"outgoing","index":6259,"result_id":"87316128-e0b6-43b8-8d87-ab4449793ace","status":200,"timestamp":"2026-03-12T13:40:11.407-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"63305bfe-e783-4dfe-abef-4ca84273370e","direction":"outgoing","index":6260,"result_id":"87316128-e0b6-43b8-8d87-ab4449793ace","status":200,"timestamp":"2026-03-12T13:40:11.422-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"a7562b0d-31b7-4e68-9333-1e6688d02afd","direction":"outgoing","index":6261,"result_id":"87316128-e0b6-43b8-8d87-ab4449793ace","status":200,"timestamp":"2026-03-12T13:40:11.439-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:11.402-04:00"},{"id":"f32380d4-80a1-467d-a3f2-3efbad684c3d","created_at":"2026-03-12T13:40:11.471-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"prefetches","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_prefetch","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:11.471-04:00"},{"id":"012ac9a0-4635-46eb-8676-1cc769fa2007","created_at":"2026-03-12T13:40:11.502-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e2a6227d-fa2e-4cb8-b5b9-562f33be24ce","direction":"outgoing","index":6252,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:07.978-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"c2359d00-d4c2-4a99-a43f-e4b8089b10ad","direction":"outgoing","index":6253,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.101-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"ebe0bae4-e17c-4bcb-9a04-a94a19185290","direction":"outgoing","index":6254,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.232-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"GET"},{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_fetched_data","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:11.502-04:00"},{"id":"a69fc530-cd3a-4e01-a5c4-920507bf120c","created_at":"2026-03-12T13:40:11.625-04:00","inputs":[{"name":"encounter_start_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_start_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"encounter_start_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"488ed34a-16ee-4b4e-952a-6bc57604c536","direction":"outgoing","index":6262,"result_id":"a69fc530-cd3a-4e01-a5c4-920507bf120c","status":200,"timestamp":"2026-03-12T13:40:11.628-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_prefetch_equals_queried","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:11.625-04:00"},{"id":"ad86971f-89e0-4192-ba91-8ed9969fd973","created_at":"2026-03-12T13:40:11.645-04:00","inputs":[{"name":"encounter_start_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_inferno_response_validation","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:11.645-04:00"},{"id":"9b921cf0-de9e-40da-96db-9bdd82c1507d","created_at":"2026-03-12T13:40:11.653-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=7aa9c4e59a395d4c6a4fdd8bec32c23d191d98b618f4c1b282aafdabfe01266f"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=7aa9c4e59a395d4c6a4fdd8bec32c23d191d98b618f4c1b282aafdabfe01266f"}],"requests":[{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_card_display_attest_test","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:13.977-04:00"},{"id":"1340357d-e5f7-4975-973e-457d9c44ec52","created_at":"2026-03-12T13:40:13.991-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"encounter_start_selected_response_types","label":"Response types to return from encounter-start hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_start_custom_response_template","label":"Custom response for encounter-start hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"encounter_start_override_access_token","label":"encounter-start Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start","test_run_id":"d7c6015a-1a12-4797-990e-944749c85f9f","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:13.991-04:00"},{"id":"3169f475-4003-4155-a1af-804446148eba","created_at":"2026-03-12T13:40:17.130-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"encounter_discharge_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_discharge_custom_response_template","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/hagCIl0B7iH/results/3169f475-4003-4155-a1af-804446148eba/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"textarea","is_large":true}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=encounter-discharge%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.255-04:00"},{"id":"72bb9459-c5ff-4bf9-b12b-5db2ac4dfdb6","created_at":"2026-03-12T13:40:23.273-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1kaXNjaGFyZ2Utc2VydmljZSIsImV4cCI6MTc3MzMzNzUyMCwiaWF0IjoxNzczMzM3MjIwLCJqdGkiOiIxZGJhNjU4OGJkNjQzMWZiNTZmZWUyZGFmZDc4ZjgzYmIxMGJiYjc3YWI3OTkyNzUxM2ZlNjQwMDQzNTUwMzA4In0.Zt5EvRaBQr4u9f2vrwCZNXL3DL3SInJIeJPIbTtAapjIkOykRuXdTZm9SNbaRVKkUKrtJymxkQs56O0nTKyZE2oi3SHm5korGVnzTdCvct0RoLsYEy4D8YsVv5Z9wYm6\"]"},{"name":"encounter_discharge_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service\\\",\\\"exp\\\":1773337520,\\\"iat\\\":1773337220,\\\"jti\\\":\\\"1dba6588bd6431fb56fee2dafd78f83bb10bbb77ab79927513fe640043550308\\\"}\"]"},{"name":"encounter_discharge_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_decode_auth_token","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.273-04:00"},{"id":"277aba51-d08b-42e6-a6f0-53dc6801ba2c","created_at":"2026-03-12T13:40:23.278-04:00","inputs":[{"name":"encounter_discharge_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"encounter_discharge_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"3835dfc4-8f16-47bf-9288-8771478c53d8","direction":"outgoing","index":6270,"result_id":"277aba51-d08b-42e6-a6f0-53dc6801ba2c","status":200,"timestamp":"2026-03-12T13:40:23.279-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_retrieve_jwks","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.278-04:00"},{"id":"0facb5a6-e335-419a-88b1-ca6c3fbb5e09","created_at":"2026-03-12T13:40:23.286-04:00","inputs":[{"name":"encounter_discharge_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"encounter_discharge_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_header","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.286-04:00"},{"id":"b1c48c38-50c8-47de-94b9-e64aa08746c4","created_at":"2026-03-12T13:40:23.291-04:00","inputs":[{"name":"encounter_discharge_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL2VuY291bnRlci1kaXNjaGFyZ2Utc2VydmljZSIsImV4cCI6MTc3MzMzNzUyMCwiaWF0IjoxNzczMzM3MjIwLCJqdGkiOiIxZGJhNjU4OGJkNjQzMWZiNTZmZWUyZGFmZDc4ZjgzYmIxMGJiYjc3YWI3OTkyNzUxM2ZlNjQwMDQzNTUwMzA4In0.Zt5EvRaBQr4u9f2vrwCZNXL3DL3SInJIeJPIbTtAapjIkOykRuXdTZm9SNbaRVKkUKrtJymxkQs56O0nTKyZE2oi3SHm5korGVnzTdCvct0RoLsYEy4D8YsVv5Z9wYm6\"]","type":"text"},{"name":"encounter_discharge_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.291-04:00"},{"id":"29399bd4-998c-427b-a5da-4ac19151368e","created_at":"2026-03-12T13:40:23.295-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"},{"name":"prefetches","type":"text","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]"}],"requests":[{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.295-04:00"},{"id":"ffdcac1c-b78d-49c8-8dfd-e999e15a4f8e","created_at":"2026-03-12T13:40:23.298-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"encounter_discharge_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.298-04:00"},{"id":"05cfbaa7-ce8d-490e-810a-d61ab4d8cd87","created_at":"2026-03-12T13:40:23.760-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"encounter_discharge_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_discharge_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"7cd4b734-14a0-4404-824e-8a762775c4a3","direction":"outgoing","index":6271,"result_id":"05cfbaa7-ce8d-490e-810a-d61ab4d8cd87","status":200,"timestamp":"2026-03-12T13:40:23.767-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"066a26c5-f156-4869-9d47-16fb6d8fadc3","direction":"outgoing","index":6272,"result_id":"05cfbaa7-ce8d-490e-810a-d61ab4d8cd87","status":200,"timestamp":"2026-03-12T13:40:23.785-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"9cf6c246-f0b4-4e0e-ba73-8c1c34790dea","direction":"outgoing","index":6273,"result_id":"05cfbaa7-ce8d-490e-810a-d61ab4d8cd87","status":200,"timestamp":"2026-03-12T13:40:23.799-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.760-04:00"},{"id":"f1f5d242-b266-459c-a8af-a6d8f8e37d6f","created_at":"2026-03-12T13:40:23.829-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"prefetches","value":"[{\"encounter\":{\"resourceType\":\"Encounter\",\"id\":\"pat015-rad-encounter\",\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"},\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}]}],\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_prefetch","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.829-04:00"},{"id":"23eccdaa-5ee8-4150-bea9-cf1b4b8e4e98","created_at":"2026-03-12T13:40:23.857-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"c490062b-d072-4c90-89fb-c484c1bd97bc","direction":"outgoing","index":6264,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.331-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"7cae36ab-395c-4287-85ac-c2b6a5bf0839","direction":"outgoing","index":6265,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.451-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"91f1bb4a-fa84-4587-81cf-f6147422e621","direction":"outgoing","index":6266,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.583-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"GET"},{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_fetched_data","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.857-04:00"},{"id":"d8ae5018-a20d-411f-aa6d-87ac13f03f57","created_at":"2026-03-12T13:40:23.982-04:00","inputs":[{"name":"encounter_discharge_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"encounter_discharge_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"encounter_discharge_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"bc5e8aff-0fa8-4cf2-9a99-8d706854b3a6","direction":"outgoing","index":6274,"result_id":"d8ae5018-a20d-411f-aa6d-87ac13f03f57","status":200,"timestamp":"2026-03-12T13:40:23.986-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_prefetch_equals_queried","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:23.982-04:00"},{"id":"e939cf1f-b308-47a6-8a32-e4e0df2c6cd9","created_at":"2026-03-12T13:40:24.006-04:00","inputs":[{"name":"encounter_discharge_custom_response_template","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/hagCIl0B7iH/results/e939cf1f-b308-47a6-8a32-e4e0df2c6cd9/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"text","is_large":true},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_inferno_response_validation","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:24.006-04:00"},{"id":"a9f639c8-9a51-493e-b0ec-ef1045cd167f","created_at":"2026-03-12T13:40:24.014-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=a5dd9250a772a11f9202c699ee0dfb54c56604931303ab60680ea467b930c13a"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=a5dd9250a772a11f9202c699ee0dfb54c56604931303ab60680ea467b930c13a"}],"requests":[{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_card_display_attest_test","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:26.317-04:00"},{"id":"dadf989b-e5f9-4c10-ae2f-7cb014a0a6fc","created_at":"2026-03-12T13:40:26.329-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"encounter_discharge_selected_response_types","label":"Response types to return from encounter-discharge hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app"],"type":"checkbox"},{"name":"encounter_discharge_custom_response_template","label":"Custom response for encounter-discharge hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/hagCIl0B7iH/results/dadf989b-e5f9-4c10-ae2f-7cb014a0a6fc/io/inputs/encounter_discharge_custom_response_template\nfor details\n","type":"textarea","is_large":true},{"name":"encounter_discharge_override_access_token","label":"encounter-discharge Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge","test_run_id":"3295638f-b0f6-4edb-9d07-a40a012bdc1e","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:26.329-04:00"},{"id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","created_at":"2026-03-12T13:40:29.457-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_select_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_select_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-select%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:35.589-04:00"},{"id":"2c8b0966-c750-4000-89f8-d64f3470ad53","created_at":"2026-03-12T13:40:35.604-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMzM3NTMyLCJpYXQiOjE3NzMzMzcyMzIsImp0aSI6IjFkZTMzNDdkYTM3NGJiMTAxYWYzZjI1N2IyNjQ4YTMzZTdkMWU4YjBlZmFkZjM1MjM5Y2IyYThmZWY4MjBkOGEifQ.u49l3wXWS6cyXdAnliJBlHbbItaC3kHv8jLBBwPLA06YzbgMVAWSyHJfYu2lP-4wVAum_UFb5Cey8J47pwoB7ZSTlre_r6-kMZIu46VWOPtMurrbj-x9JmAO1PErllYY\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMzM3NTMyLCJpYXQiOjE3NzMzMzcyMzIsImp0aSI6IjFkZTMzNDdkYTM3NGJiMTAxYWYzZjI1N2IyNjQ4YTMzZTdkMWU4YjBlZmFkZjM1MjM5Y2IyYThmZWY4MjBkOGEifQ.u49l3wXWS6cyXdAnliJBlHbbItaC3kHv8jLBBwPLA06YzbgMVAWSyHJfYu2lP-4wVAum_UFb5Cey8J47pwoB7ZSTlre_r6-kMZIu46VWOPtMurrbj-x9JmAO1PErllYY\"]"},{"name":"order_select_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-select-service\\\",\\\"exp\\\":1773337532,\\\"iat\\\":1773337232,\\\"jti\\\":\\\"1de3347da374bb101af3f257b2648a33e7d1e8b0efadf35239cb2a8fef820d8a\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-select-service\\\",\\\"exp\\\":1773337532,\\\"iat\\\":1773337232,\\\"jti\\\":\\\"1de3347da374bb101af3f257b2648a33e7d1e8b0efadf35239cb2a8fef820d8a\\\"}\"]"},{"name":"order_select_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_decode_auth_token","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:35.604-04:00"},{"id":"2ca3ff47-b070-4fac-9d52-749f9205c295","created_at":"2026-03-12T13:40:35.611-04:00","inputs":[{"name":"order_select_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_select_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"91cdb550-afba-485c-aec1-c02b46d00aad","direction":"outgoing","index":6287,"result_id":"2ca3ff47-b070-4fac-9d52-749f9205c295","status":200,"timestamp":"2026-03-12T13:40:35.612-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"280e114d-df11-4973-b1ec-f438e6137033","direction":"outgoing","index":6288,"result_id":"2ca3ff47-b070-4fac-9d52-749f9205c295","status":200,"timestamp":"2026-03-12T13:40:35.616-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_retrieve_jwks","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:35.611-04:00"},{"id":"27c4a88d-6f0c-4f48-87a2-e1861cc34db6","created_at":"2026-03-12T13:40:35.622-04:00","inputs":[{"name":"order_select_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_select_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_select_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_header","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:35.622-04:00"},{"id":"9ad87588-53fd-4c5a-abe0-95b8f71116b8","created_at":"2026-03-12T13:40:35.627-04:00","inputs":[{"name":"order_select_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMzM3NTMyLCJpYXQiOjE3NzMzMzcyMzIsImp0aSI6IjFkZTMzNDdkYTM3NGJiMTAxYWYzZjI1N2IyNjQ4YTMzZTdkMWU4YjBlZmFkZjM1MjM5Y2IyYThmZWY4MjBkOGEifQ.u49l3wXWS6cyXdAnliJBlHbbItaC3kHv8jLBBwPLA06YzbgMVAWSyHJfYu2lP-4wVAum_UFb5Cey8J47pwoB7ZSTlre_r6-kMZIu46VWOPtMurrbj-x9JmAO1PErllYY\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNlbGVjdC1zZXJ2aWNlIiwiZXhwIjoxNzczMzM3NTMyLCJpYXQiOjE3NzMzMzcyMzIsImp0aSI6IjFkZTMzNDdkYTM3NGJiMTAxYWYzZjI1N2IyNjQ4YTMzZTdkMWU4YjBlZmFkZjM1MjM5Y2IyYThmZWY4MjBkOGEifQ.u49l3wXWS6cyXdAnliJBlHbbItaC3kHv8jLBBwPLA06YzbgMVAWSyHJfYu2lP-4wVAum_UFb5Cey8J47pwoB7ZSTlre_r6-kMZIu46VWOPtMurrbj-x9JmAO1PErllYY\"]","type":"text"},{"name":"order_select_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:35.627-04:00"},{"id":"48273320-71f5-4e6c-8078-4de5c199d5db","created_at":"2026-03-12T13:40:35.631-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:35.631-04:00"},{"id":"a7861d88-e8da-4f26-b801-0900cf2cc9d9","created_at":"2026-03-12T13:40:35.636-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":false,"outputs":[{"name":"order_select_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_select_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:35.636-04:00"},{"id":"2f429617-c3cb-40e1-b668-30f0c59d07c9","created_at":"2026-03-12T13:40:37.384-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"order_select_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_select_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"83628446-ae0d-42eb-856f-5b9aea5c2df3","direction":"outgoing","index":6289,"result_id":"2f429617-c3cb-40e1-b668-30f0c59d07c9","status":200,"timestamp":"2026-03-12T13:40:37.398-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"99a63cbd-3233-4caa-a357-881ba9fa4807","direction":"outgoing","index":6290,"result_id":"2f429617-c3cb-40e1-b668-30f0c59d07c9","status":200,"timestamp":"2026-03-12T13:40:37.412-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"d3972a76-5a1b-4d6d-b40c-335fa3a7681c","direction":"outgoing","index":6291,"result_id":"2f429617-c3cb-40e1-b668-30f0c59d07c9","status":200,"timestamp":"2026-03-12T13:40:37.424-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"3009be49-ed3a-4d71-8eb8-b65681276b8e","direction":"outgoing","index":6292,"result_id":"2f429617-c3cb-40e1-b668-30f0c59d07c9","status":200,"timestamp":"2026-03-12T13:40:37.436-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"01f79abb-19df-4b58-b528-d79be26a4a1c","direction":"outgoing","index":6293,"result_id":"2f429617-c3cb-40e1-b668-30f0c59d07c9","status":200,"timestamp":"2026-03-12T13:40:37.450-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"e62e6177-450d-4677-a702-50c368f4c6e0","direction":"outgoing","index":6294,"result_id":"2f429617-c3cb-40e1-b668-30f0c59d07c9","status":200,"timestamp":"2026-03-12T13:40:37.463-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:37.384-04:00"},{"id":"a55e15b4-1711-48e0-941f-ae02bb29b47f","created_at":"2026-03-12T13:40:37.508-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_prefetch","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:37.508-04:00"},{"id":"3718ff3b-e5b9-4b74-bd68-a3c0ad294363","created_at":"2026-03-12T13:40:37.539-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e95ca660-3dfb-4d8d-8dd1-c1b434d02bb5","direction":"outgoing","index":6276,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.668-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"5dc86bd9-7f61-4c3a-beb0-2e71ebda5ed7","direction":"outgoing","index":6277,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.801-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"653f2cdb-309c-454f-9a99-a507435edfcc","direction":"outgoing","index":6278,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.926-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"81980c93-e7dd-4dce-89af-71ad2d67b8be","direction":"outgoing","index":6280,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.091-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"7f85bf24-935a-4daf-b94a-11f6f11dcf9a","direction":"outgoing","index":6281,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.207-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"b960df12-c75d-4ef0-8a1d-5e56bddef16e","direction":"outgoing","index":6282,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.327-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"GET"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_fetched_data","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:37.539-04:00"},{"id":"75b33216-b158-49dc-b3d2-33b4de3717ab","created_at":"2026-03-12T13:40:37.792-04:00","inputs":[{"name":"order_select_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_select_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_select_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"9c542a13-4a81-49b0-9329-9b34604aa7e0","direction":"outgoing","index":6295,"result_id":"75b33216-b158-49dc-b3d2-33b4de3717ab","status":200,"timestamp":"2026-03-12T13:40:37.797-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"b5a3adf1-d31a-4139-bab9-d6380aa31cf8","direction":"outgoing","index":6296,"result_id":"75b33216-b158-49dc-b3d2-33b4de3717ab","status":200,"timestamp":"2026-03-12T13:40:37.812-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_prefetch_equals_queried","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:37.792-04:00"},{"id":"dc9f58f9-1dda-40f2-8f3d-a3a0c4ad49c9","created_at":"2026-03-12T13:40:37.829-04:00","inputs":[{"name":"order_select_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_inferno_response_validation","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:37.829-04:00"},{"id":"16463fd5-e5db-4a99-bdc5-ddf3074c8c0e","created_at":"2026-03-12T13:40:37.844-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=da146807f71f21519078b2472c45c3d62b31c8d88b2bf5f7a68af2c47cac4a2d"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=da146807f71f21519078b2472c45c3d62b31c8d88b2bf5f7a68af2c47cac4a2d"}],"requests":[{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_card_display_attest_test","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:38.651-04:00"},{"id":"16c6d9dc-6b67-4f92-a424-f8087055dc2b","created_at":"2026-03-12T13:40:38.663-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_select_selected_response_types","label":"Response types to return from order-select hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Instructions` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_select_custom_response_template","label":"Custom response for order-select hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_select_override_access_token","label":"order-select Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select","test_run_id":"7de0b365-08ad-40a2-a4f8-de2684d94254","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:38.663-04:00"},{"id":"5defa26b-4112-4fe6-a836-acadbd500d41","created_at":"2026-03-12T13:40:41.793-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_dispatch_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_dispatch_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-dispatch%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:47.922-04:00"},{"id":"4d1e597d-69e1-441b-b997-eb12f2120c44","created_at":"2026-03-12T13:40:47.942-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMzMzc1NDQsImlhdCI6MTc3MzMzNzI0NCwianRpIjoiYTA2MWUzMWJhZGE2ODQzMzk3ZmUzNWI2ZWVkMzM1MGIyOTRmMDBmMGI4MzFlYjJjYzAwMTdjYjVmZTZjNjYxMiJ9.XMzmfeJAoHTCU1jW7O06NoCswJr5U4bu6gGjQ-J0D-7rEDwihBIdl00JmdQE5kvfhXx_VGe98XmnSeowxxYfCya2bVboJtyAyshzUf89excz7ntER97uHP1GmL4VMCXK\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMzMzc1NDQsImlhdCI6MTc3MzMzNzI0NCwianRpIjoiYTA2MWUzMWJhZGE2ODQzMzk3ZmUzNWI2ZWVkMzM1MGIyOTRmMDBmMGI4MzFlYjJjYzAwMTdjYjVmZTZjNjYxMiJ9.XMzmfeJAoHTCU1jW7O06NoCswJr5U4bu6gGjQ-J0D-7rEDwihBIdl00JmdQE5kvfhXx_VGe98XmnSeowxxYfCya2bVboJtyAyshzUf89excz7ntER97uHP1GmL4VMCXK\"]"},{"name":"order_dispatch_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service\\\",\\\"exp\\\":1773337544,\\\"iat\\\":1773337244,\\\"jti\\\":\\\"a061e31bada6843397fe35b6eed3350b294f00f0b831eb2cc0017cb5fe6c6612\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service\\\",\\\"exp\\\":1773337544,\\\"iat\\\":1773337244,\\\"jti\\\":\\\"a061e31bada6843397fe35b6eed3350b294f00f0b831eb2cc0017cb5fe6c6612\\\"}\"]"},{"name":"order_dispatch_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_decode_auth_token","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:47.942-04:00"},{"id":"b7587220-0d93-4a8e-bb1d-2e7286864d0b","created_at":"2026-03-12T13:40:47.949-04:00","inputs":[{"name":"order_dispatch_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_dispatch_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"9175e03f-8615-4ffb-8e95-b019be774a80","direction":"outgoing","index":6305,"result_id":"b7587220-0d93-4a8e-bb1d-2e7286864d0b","status":200,"timestamp":"2026-03-12T13:40:47.950-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"fe20bd0c-7fff-4403-a82a-83d07dae1c36","direction":"outgoing","index":6306,"result_id":"b7587220-0d93-4a8e-bb1d-2e7286864d0b","status":200,"timestamp":"2026-03-12T13:40:47.954-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_retrieve_jwks","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:47.949-04:00"},{"id":"697f46a2-6e69-47df-b65b-7425f7fbfc90","created_at":"2026-03-12T13:40:47.959-04:00","inputs":[{"name":"order_dispatch_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_dispatch_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_header","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:47.959-04:00"},{"id":"550b2864-f99e-4d04-91bd-cbf28691d0f4","created_at":"2026-03-12T13:40:47.963-04:00","inputs":[{"name":"order_dispatch_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMzMzc1NDQsImlhdCI6MTc3MzMzNzI0NCwianRpIjoiYTA2MWUzMWJhZGE2ODQzMzk3ZmUzNWI2ZWVkMzM1MGIyOTRmMDBmMGI4MzFlYjJjYzAwMTdjYjVmZTZjNjYxMiJ9.XMzmfeJAoHTCU1jW7O06NoCswJr5U4bu6gGjQ-J0D-7rEDwihBIdl00JmdQE5kvfhXx_VGe98XmnSeowxxYfCya2bVboJtyAyshzUf89excz7ntER97uHP1GmL4VMCXK\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLWRpc3BhdGNoLXNlcnZpY2UiLCJleHAiOjE3NzMzMzc1NDQsImlhdCI6MTc3MzMzNzI0NCwianRpIjoiYTA2MWUzMWJhZGE2ODQzMzk3ZmUzNWI2ZWVkMzM1MGIyOTRmMDBmMGI4MzFlYjJjYzAwMTdjYjVmZTZjNjYxMiJ9.XMzmfeJAoHTCU1jW7O06NoCswJr5U4bu6gGjQ-J0D-7rEDwihBIdl00JmdQE5kvfhXx_VGe98XmnSeowxxYfCya2bVboJtyAyshzUf89excz7ntER97uHP1GmL4VMCXK\"]","type":"text"},{"name":"order_dispatch_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:47.963-04:00"},{"id":"f698ea1e-91e1-43a2-a571-309e61052759","created_at":"2026-03-12T13:40:47.968-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]"},{"name":"prefetches","type":"text","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"status\":\"draft\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"intent\":\"original-order\",\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"}},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}}]"}],"requests":[{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:47.968-04:00"},{"id":"1f40dc91-b259-4c1e-9e63-516acc204ef0","created_at":"2026-03-12T13:40:47.973-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_dispatch_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:47.973-04:00"},{"id":"5e5a5649-c239-41d6-b41a-e3b3ef049b2a","created_at":"2026-03-12T13:40:49.501-04:00","inputs":[{"name":"contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"order_dispatch_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_dispatch_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"f6705742-cecd-4ce3-9992-944e44bf8839","direction":"outgoing","index":6307,"result_id":"5e5a5649-c239-41d6-b41a-e3b3ef049b2a","status":200,"timestamp":"2026-03-12T13:40:49.515-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"629e3c97-2688-48dd-ba71-49034557d07a","direction":"outgoing","index":6308,"result_id":"5e5a5649-c239-41d6-b41a-e3b3ef049b2a","status":200,"timestamp":"2026-03-12T13:40:49.530-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"get"},{"id":"6c890e37-a1d3-4c52-a574-e24487e89c69","direction":"outgoing","index":6309,"result_id":"5e5a5649-c239-41d6-b41a-e3b3ef049b2a","status":200,"timestamp":"2026-03-12T13:40:49.545-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"a01fc52c-a4ac-416d-9ca4-a8c9df22c2c1","direction":"outgoing","index":6310,"result_id":"5e5a5649-c239-41d6-b41a-e3b3ef049b2a","status":200,"timestamp":"2026-03-12T13:40:49.558-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"76fdca1a-3807-46db-aed9-6a95c6da3396","direction":"outgoing","index":6311,"result_id":"5e5a5649-c239-41d6-b41a-e3b3ef049b2a","status":200,"timestamp":"2026-03-12T13:40:49.570-04:00","url":"https://inferno.healthit.gov/reference-server/r4/DeviceRequest/devreq015","verb":"get"},{"id":"cbed558e-43eb-431c-a267-5ce0554e2eaa","direction":"outgoing","index":6312,"result_id":"5e5a5649-c239-41d6-b41a-e3b3ef049b2a","status":200,"timestamp":"2026-03-12T13:40:49.584-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:49.501-04:00"},{"id":"354f586e-3f50-47bf-84d8-aaf3d6726a0f","created_at":"2026-03-12T13:40:49.705-04:00","inputs":[{"name":"contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"prefetches","value":"[{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}},{\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"order\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"status\":\"draft\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"intent\":\"original-order\",\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"}},\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"info"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_prefetch","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:49.705-04:00"},{"id":"484963fb-d13a-4fcb-bcd6-36151639a12e","created_at":"2026-03-12T13:40:49.744-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"638ead24-b23c-4f58-944b-0c5e968dec2e","direction":"outgoing","index":6298,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:44.988-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"aa64b43a-4acd-442b-846a-96c400985c3b","direction":"outgoing","index":6300,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.236-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_fetched_data","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:49.744-04:00"},{"id":"b3aa8ddc-855b-44d0-9673-2a2d51a9ba84","created_at":"2026-03-12T13:40:50.486-04:00","inputs":[{"name":"order_dispatch_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_dispatch_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_dispatch_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"4f9f109c-0b54-4316-be45-0b2fa3ec8250","direction":"outgoing","index":6313,"result_id":"b3aa8ddc-855b-44d0-9673-2a2d51a9ba84","status":200,"timestamp":"2026-03-12T13:40:50.493-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"12bbedc1-3858-495a-8229-be9409272122","direction":"outgoing","index":6314,"result_id":"b3aa8ddc-855b-44d0-9673-2a2d51a9ba84","status":200,"timestamp":"2026-03-12T13:40:50.504-04:00","url":"https://inferno.healthit.gov/reference-server/r4/ServiceRequest/servreq-g0180-1","verb":"get"},{"id":"dbe11b58-8d9a-48ea-82f2-977649a1c3ca","direction":"outgoing","index":6315,"result_id":"b3aa8ddc-855b-44d0-9673-2a2d51a9ba84","status":200,"timestamp":"2026-03-12T13:40:50.518-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"a4fae792-5a0c-45ff-b304-dc8192bca72e","direction":"outgoing","index":6316,"result_id":"b3aa8ddc-855b-44d0-9673-2a2d51a9ba84","status":200,"timestamp":"2026-03-12T13:40:50.529-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"6d657be4-6a3d-4d4c-a24e-0463db974e61","direction":"outgoing","index":6317,"result_id":"b3aa8ddc-855b-44d0-9673-2a2d51a9ba84","status":200,"timestamp":"2026-03-12T13:40:50.540-04:00","url":"https://inferno.healthit.gov/reference-server/r4/DeviceRequest/devreq015","verb":"get"},{"id":"0991944a-7e6d-44e3-9ef4-ba5f7d733523","direction":"outgoing","index":6318,"result_id":"b3aa8ddc-855b-44d0-9673-2a2d51a9ba84","status":200,"timestamp":"2026-03-12T13:40:50.551-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_prefetch_equals_queried","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:50.486-04:00"},{"id":"bac1b4b1-8f27-429c-87ee-f3b67345aec1","created_at":"2026-03-12T13:40:50.565-04:00","inputs":[{"name":"order_dispatch_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_inferno_response_validation","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:50.565-04:00"},{"id":"37ad3176-d351-4eb2-b029-a199111a4b78","created_at":"2026-03-12T13:40:50.580-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=71354602b67860c070f2514947a5e302ee74bf650b72b493122668bdb5181c33"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=71354602b67860c070f2514947a5e302ee74bf650b72b493122668bdb5181c33"}],"requests":[{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_card_display_attest_test","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:50.987-04:00"},{"id":"17322c0c-0710-4a03-8098-a7a453236daf","created_at":"2026-03-12T13:40:51.001-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_dispatch_selected_response_types","label":"Response types to return from order-dispatch hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_dispatch_custom_response_template","label":"Custom response for order-dispatch hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_dispatch_override_access_token","label":"order-dispatch Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch","test_run_id":"6c2b9fb4-3b63-4a15-8557-d5709f911245","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:40:51.001-04:00"},{"id":"721195c2-025e-45fc-9036-42d2e88539be","created_at":"2026-03-12T13:40:54.136-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"order_sign_selected_response_types","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_sign_custom_response_template","value":null,"type":"textarea"}],"optional":false,"outputs":[{"name":"continuation_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=order-sign%20http://localhost:4567/custom/crd_server"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:00.286-04:00"},{"id":"e8177fef-bbd1-43ec-9a7b-83608a9ae73f","created_at":"2026-03-12T13:41:00.306-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_auth_tokens","type":"text","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzMzNzU1NywiaWF0IjoxNzczMzM3MjU3LCJqdGkiOiJjOWRhMGU0NzkxZDljMDhjNjhiNTIzMzYzZmI4YTJiNDdkMzk1Y2UxZmE3MmFmYzQ4MWEzYjM4YzhhNGE5ZDkxIn0.YJE44_bTDHzN7gz5SnxFIoq560VlfuavBTrC9-_V_QA_kIOS-UiTtQMkW-hoWY0C6Qce6lwzdSwfUm4U7iJMZq6clpc2ykgn3FGRcRUmP43EMixGhdXYl0yL7jBKr-F4\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzMzNzU1NywiaWF0IjoxNzczMzM3MjU3LCJqdGkiOiJjOWRhMGU0NzkxZDljMDhjNjhiNTIzMzYzZmI4YTJiNDdkMzk1Y2UxZmE3MmFmYzQ4MWEzYjM4YzhhNGE5ZDkxIn0.YJE44_bTDHzN7gz5SnxFIoq560VlfuavBTrC9-_V_QA_kIOS-UiTtQMkW-hoWY0C6Qce6lwzdSwfUm4U7iJMZq6clpc2ykgn3FGRcRUmP43EMixGhdXYl0yL7jBKr-F4\"]"},{"name":"order_sign_auth_token_payloads_json","type":"text","value":"[\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-sign-service\\\",\\\"exp\\\":1773337557,\\\"iat\\\":1773337257,\\\"jti\\\":\\\"c9da0e4791d9c08c68b523363fb8a2b47d395ce1fa72afc481a3b38c8a4a9d91\\\"}\",\"{\\\"iss\\\":\\\"http://localhost:4567/custom/crd_server\\\",\\\"aud\\\":\\\"http://localhost:4567/custom/crd_client/cds-services/order-sign-service\\\",\\\"exp\\\":1773337557,\\\"iat\\\":1773337257,\\\"jti\\\":\\\"c9da0e4791d9c08c68b523363fb8a2b47d395ce1fa72afc481a3b38c8a4a9d91\\\"}\"]"},{"name":"order_sign_auth_token_headers_json","type":"text","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]"}],"requests":[{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_decode_auth_token","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:00.306-04:00"},{"id":"24c3e95e-82d5-42ee-af04-598b73f37024","created_at":"2026-03-12T13:41:00.313-04:00","inputs":[{"name":"order_sign_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"cds_jwk_set","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_crd_jwks_json","type":"text","value":"[\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\",\"{\\n \\\"keys\\\": [\\n {\\n \\\"kty\\\": \\\"EC\\\",\\n \\\"crv\\\": \\\"P-384\\\",\\n \\\"x\\\": \\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\n \\\"y\\\": \\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\n \\\"alg\\\": \\\"ES384\\\"\\n },\\n {\\n \\\"kty\\\": \\\"RSA\\\",\\n \\\"alg\\\": \\\"RS384\\\",\\n \\\"n\\\": \\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\n \\\"e\\\": \\\"AQAB\\\",\\n \\\"use\\\": \\\"sig\\\",\\n \\\"key_ops\\\": [\\n \\\"verify\\\"\\n ],\\n \\\"ext\\\": true,\\n \\\"kid\\\": \\\"b41528b6f37a9500edb8a905a595bdd7\\\"\\n }\\n ]\\n}\"]"},{"name":"order_sign_crd_jwks_keys_json","type":"text","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]"}],"requests":[{"id":"24cd3092-76e3-447c-b4bf-ff2ed25c3e58","direction":"outgoing","index":6328,"result_id":"24c3e95e-82d5-42ee-af04-598b73f37024","status":200,"timestamp":"2026-03-12T13:41:00.316-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"},{"id":"c5ef4a9d-5f79-4144-8490-e8556e8c79a3","direction":"outgoing","index":6329,"result_id":"24c3e95e-82d5-42ee-af04-598b73f37024","status":200,"timestamp":"2026-03-12T13:41:00.320-04:00","url":"http://localhost:4567/custom/crd_server/jwks.json","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_retrieve_jwks","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:00.313-04:00"},{"id":"df9bef94-a497-46b7-a04d-aa9a1a99c8a7","created_at":"2026-03-12T13:41:00.326-04:00","inputs":[{"name":"order_sign_auth_token_headers_json","value":"[\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\",\"{\\\"alg\\\":\\\"ES384\\\",\\\"typ\\\":\\\"JWT\\\",\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"jku\\\":\\\"http://localhost:4567/custom/crd_server/jwks.json\\\"}\"]","type":"text"},{"name":"order_sign_crd_jwks_keys_json","value":"[\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\",\"[{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"},{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS384\\\",\\\"n\\\":\\\"vjbIzTqiY8K8zApeNng5ekNNIxJfXAue9BjoMrZ9Qy9m7yIA-tf6muEupEXWhq70tC7vIGLqJJ4O8m7yiH8H2qklX2mCAMg3xG3nbykY2X7JXtW9P8VIdG0sAMt5aZQnUGCgSS3n0qaooGn2LUlTGIR88Qi-4Nrao9_3Ki3UCiICeCiAE224jGCg0OlQU6qj2gEB3o-DWJFlG_dz1y-Mxo5ivaeM0vWuodjDrp-aiabJcSF_dx26sdC9dZdBKXFDq0t19I9S9AyGpGDJwzGRtWHY6LsskNHLvo8Zb5AsJ9eRZKpnh30SYBZI9WHtzU85M9WQqdScR69Vyp-6Uhfbvw\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"b41528b6f37a9500edb8a905a595bdd7\\\"}]\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_auth_tokens_jwk_json","type":"text","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]"}],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_header","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:00.326-04:00"},{"id":"03f76c43-293f-4b9b-84bc-ea67c700bfab","created_at":"2026-03-12T13:41:00.330-04:00","inputs":[{"name":"order_sign_auth_tokens","value":"[\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzMzNzU1NywiaWF0IjoxNzczMzM3MjU3LCJqdGkiOiJjOWRhMGU0NzkxZDljMDhjNjhiNTIzMzYzZmI4YTJiNDdkMzk1Y2UxZmE3MmFmYzQ4MWEzYjM4YzhhNGE5ZDkxIn0.YJE44_bTDHzN7gz5SnxFIoq560VlfuavBTrC9-_V_QA_kIOS-UiTtQMkW-hoWY0C6Qce6lwzdSwfUm4U7iJMZq6clpc2ykgn3FGRcRUmP43EMixGhdXYl0yL7jBKr-F4\",\"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjRiNDlhNzM5ZDFlYjExNWIzMjI1ZjRjZjliZWI2ZDFiIiwiamt1IjoiaHR0cDovL2xvY2FsaG9zdDo0NTY3L2N1c3RvbS9jcmRfc2VydmVyL2p3a3MuanNvbiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9zZXJ2ZXIiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjQ1NjcvY3VzdG9tL2NyZF9jbGllbnQvY2RzLXNlcnZpY2VzL29yZGVyLXNpZ24tc2VydmljZSIsImV4cCI6MTc3MzMzNzU1NywiaWF0IjoxNzczMzM3MjU3LCJqdGkiOiJjOWRhMGU0NzkxZDljMDhjNjhiNTIzMzYzZmI4YTJiNDdkMzk1Y2UxZmE3MmFmYzQ4MWEzYjM4YzhhNGE5ZDkxIn0.YJE44_bTDHzN7gz5SnxFIoq560VlfuavBTrC9-_V_QA_kIOS-UiTtQMkW-hoWY0C6Qce6lwzdSwfUm4U7iJMZq6clpc2ykgn3FGRcRUmP43EMixGhdXYl0yL7jBKr-F4\"]","type":"text"},{"name":"order_sign_auth_tokens_jwk_json","value":"[\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\",\"{\\\"kty\\\":\\\"EC\\\",\\\"crv\\\":\\\"P-384\\\",\\\"x\\\":\\\"JQKTsV6PT5Szf4QtDA1qrs0EJ1pbimQmM2SKvzOlIAqlph3h1OHmZ2i7MXahIF2C\\\",\\\"y\\\":\\\"bRWWQRJBgDa6CTgwofYrHjVGcO-A7WNEnu4oJA5OUJPPPpczgx1g2NsfinK-D2Rw\\\",\\\"use\\\":\\\"sig\\\",\\\"key_ops\\\":[\\\"verify\\\"],\\\"ext\\\":true,\\\"kid\\\":\\\"4b49a739d1eb115b3225f4cf9beb6d1b\\\",\\\"alg\\\":\\\"ES384\\\"}\"]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:00.330-04:00"},{"id":"67f6aacc-478f-41cf-8537-bcbd810bee8b","created_at":"2026-03-12T13:41:00.335-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]"},{"name":"prefetches","type":"text","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"user\":{\"resourceType\":\"Practitioner\",\"id\":\"pra1234\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"]},\"identifier\":[{\"system\":\"http://hl7.org/fhir/sid/us-npi\",\"value\":\"1122334455\"}],\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"840 Seneca St\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"716-873-1557\"},{\"system\":\"email\",\"value\":\"jane.betty@myhospital.com\"}],\"name\":[{\"use\":\"official\",\"family\":\"Doe\",\"given\":[\"Jane\",\"Betty\"],\"prefix\":[\"Dr.\"]}],\"qualification\":[{\"code\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0360\",\"code\":\"MD\",\"display\":\"Doctor of Medicine\"}],\"text\":\"Doctor of Medicine\"},\"period\":{\"start\":\"1995\"},\"issuer\":{\"display\":\"Example University\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:00.335-04:00"},{"id":"c63ddf31-9306-4625-959f-d2e46f9f7e4d","created_at":"2026-03-12T13:41:00.340-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":false,"outputs":[{"name":"order_sign_client_fhir_server","type":"text","value":"https://inferno.healthit.gov/reference-server/r4"},{"name":"order_sign_client_access_token","type":"text","value":"SAMPLE_TOKEN"}],"requests":[{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:00.340-04:00"},{"id":"4d6881e9-020b-4a58-a25f-8bd57c6ad18a","created_at":"2026-03-12T13:41:01.250-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"order_sign_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_sign_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[{"id":"cc919fc0-8b27-4c55-b36d-9991361b331b","direction":"outgoing","index":6330,"result_id":"4d6881e9-020b-4a58-a25f-8bd57c6ad18a","status":200,"timestamp":"2026-03-12T13:41:01.266-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"981b7022-9318-421e-9727-34d3fa07f51e","direction":"outgoing","index":6331,"result_id":"4d6881e9-020b-4a58-a25f-8bd57c6ad18a","status":200,"timestamp":"2026-03-12T13:41:01.279-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"e1f638fa-2668-4ff8-a84a-c4199752a222","direction":"outgoing","index":6332,"result_id":"4d6881e9-020b-4a58-a25f-8bd57c6ad18a","status":200,"timestamp":"2026-03-12T13:41:01.292-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"d2a167ab-6dca-47b7-aaef-12a89d5803d5","direction":"outgoing","index":6333,"result_id":"4d6881e9-020b-4a58-a25f-8bd57c6ad18a","status":200,"timestamp":"2026-03-12T13:41:01.305-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"get"},{"id":"c9ac72ab-83ea-4c15-9994-9e4697d70b42","direction":"outgoing","index":6334,"result_id":"4d6881e9-020b-4a58-a25f-8bd57c6ad18a","status":200,"timestamp":"2026-03-12T13:41:01.318-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"c5fd6ef1-42f5-492d-b42f-9a34b13cf3f3","direction":"outgoing","index":6335,"result_id":"4d6881e9-020b-4a58-a25f-8bd57c6ad18a","status":200,"timestamp":"2026-03-12T13:41:01.331-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:01.250-04:00"},{"id":"52a24a46-8d06-4de1-aa5f-9bb687ad3fe2","created_at":"2026-03-12T13:41:01.421-04:00","inputs":[{"name":"contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"prefetches","value":"[{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]},\"user\":{\"resourceType\":\"Practitioner\",\"id\":\"pra1234\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner\"]},\"identifier\":[{\"system\":\"http://hl7.org/fhir/sid/us-npi\",\"value\":\"1122334455\"}],\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"840 Seneca St\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"716-873-1557\"},{\"system\":\"email\",\"value\":\"jane.betty@myhospital.com\"}],\"name\":[{\"use\":\"official\",\"family\":\"Doe\",\"given\":[\"Jane\",\"Betty\"],\"prefix\":[\"Dr.\"]}],\"qualification\":[{\"code\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0360\",\"code\":\"MD\",\"display\":\"Doctor of Medicine\"}],\"text\":\"Doctor of Medicine\"},\"period\":{\"start\":\"1995\"},\"issuer\":{\"display\":\"Example University\"}}]}},{\"patient\":{\"resourceType\":\"Patient\",\"id\":\"pat015\",\"gender\":\"male\",\"birthDate\":\"2015-02-23\",\"address\":[{\"use\":\"home\",\"type\":\"both\",\"state\":\"NY\",\"city\":\"Buffalo\",\"postalCode\":\"14210\",\"line\":[\"202 Burlington Road\"]}],\"name\":[{\"use\":\"official\",\"family\":\"Oster\",\"given\":[\"William\",\"Hale\",\"Oster\"]}],\"telecom\":[{\"system\":\"phone\",\"value\":\"(781) 555-5555\",\"use\":\"home\",\"rank\":1},{\"system\":\"phone\",\"value\":\"(781) 555 5613\",\"use\":\"work\",\"rank\":2},{\"system\":\"phone\",\"value\":\"(781) 555 8834\",\"use\":\"old\",\"period\":{\"end\":\"2014\"}}],\"identifier\":[{\"use\":\"usual\",\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"MR\"}],\"text\":\"Medical Record Number\"},\"system\":\"http://hl7.org/fhir/sid/us-medicare\",\"value\":\"0M34355006FW\"}]},\"coverage\":{\"resourceType\":\"Bundle\",\"type\":\"searchset\",\"total\":1,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\"resource\":{\"resourceType\":\"Coverage\",\"id\":\"cov015\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"status\":\"active\",\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"payor\":[{\"reference\":\"Organization/org1234\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"messages":[{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Practitioner/pra1234: Practitioner: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Patient/pat015: Patient: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_prefetch","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:01.421-04:00"},{"id":"69c7fb4e-c6a5-4450-8bf8-09e56e62a10c","created_at":"2026-03-12T13:41:01.458-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"e792e62e-18dd-43a9-9c16-981e122097f0","direction":"outgoing","index":6320,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.335-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"8af07d15-cf56-4825-9d4e-6c85c4dbf1ca","direction":"outgoing","index":6322,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.476-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"GET"},{"id":"b3e78bca-bd56-49e1-b7d5-c15071334e4a","direction":"outgoing","index":6323,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.591-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Encounter/pat015-rad-encounter","verb":"GET"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_fetched_data","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:01.458-04:00"},{"id":"34485c6a-e31c-4bbb-bf10-8a8eb7a4f4d4","created_at":"2026-03-12T13:41:02.128-04:00","inputs":[{"name":"order_sign_client_fhir_server","value":"https://inferno.healthit.gov/reference-server/r4","type":"text"},{"name":"order_sign_client_access_token","value":"SAMPLE_TOKEN","type":"text"},{"name":"order_sign_override_access_token","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"c83502aa-bf90-47a9-a7b4-635500be62a9","direction":"outgoing","index":6336,"result_id":"34485c6a-e31c-4bbb-bf10-8a8eb7a4f4d4","status":200,"timestamp":"2026-03-12T13:41:02.136-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"028d5d89-e938-4661-be6f-0dd1290c3a86","direction":"outgoing","index":6337,"result_id":"34485c6a-e31c-4bbb-bf10-8a8eb7a4f4d4","status":200,"timestamp":"2026-03-12T13:41:02.151-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"},{"id":"4c825b13-2c58-4157-a048-02acad2bb218","direction":"outgoing","index":6338,"result_id":"34485c6a-e31c-4bbb-bf10-8a8eb7a4f4d4","status":200,"timestamp":"2026-03-12T13:41:02.164-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Practitioner/pra1234","verb":"get"},{"id":"8c2f60b5-e988-4918-950f-360e533b78e0","direction":"outgoing","index":6339,"result_id":"34485c6a-e31c-4bbb-bf10-8a8eb7a4f4d4","status":200,"timestamp":"2026-03-12T13:41:02.178-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Patient/pat015","verb":"get"},{"id":"1fc50bd2-a5a3-4d60-a678-69abc1caa912","direction":"outgoing","index":6340,"result_id":"34485c6a-e31c-4bbb-bf10-8a8eb7a4f4d4","status":200,"timestamp":"2026-03-12T13:41:02.192-04:00","url":"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\u0026status=active","verb":"get"}],"result":"pass","result_message":"Prefetched data matches the requested queries.","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_prefetch_equals_queried","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:02.128-04:00"},{"id":"0c66c263-65e2-4a01-a49a-46f22e9fe15e","created_at":"2026-03-12T13:41:02.207-04:00","inputs":[{"name":"order_sign_custom_response_template","value":null,"type":"text"},{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[],"requests":[{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_inferno_response_validation","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:02.207-04:00"},{"id":"80fed4cd-3339-40a4-b3dc-6a701006fb9b","created_at":"2026-03-12T13:41:02.222-04:00","inputs":[{"name":"cds_jwt_iss","value":"http://localhost:4567/custom/crd_server","type":"text"}],"optional":false,"outputs":[{"name":"attest_true_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_pass?token=5ad26c38acf5ab3b4691fade266deeeafea407451f608a8c125e7b006e0a9d7b"},{"name":"attest_false_url","type":"text","value":"http://localhost:4567/custom/crd_client/resume_fail?token=5ad26c38acf5ab3b4691fade266deeeafea407451f608a8c125e7b006e0a9d7b"}],"requests":[{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_card_display_attest_test","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:03.351-04:00"},{"id":"8a9923d0-3aec-4bfc-b21a-aeb70e4e4e8b","created_at":"2026-03-12T13:41:03.365-04:00","inputs":[{"name":"cds_jwt_iss","label":"CRD JWT Issuer","description":"\n Value of the `iss` claim that must be sent on the Bearer token in the `Authorization`\n header of all requests. Run or re-run the **Client Registration** group to set or\n change this value.\n ","value":"http://localhost:4567/custom/crd_server","type":"text"},{"name":"cds_jwk_set","label":"CRD JSON Web Key Set (JWKS)","description":"\n The client's registered JWK Set containing it's public key, either\n as a publicly accessible url containing the JWKS, or the raw JWKS.\n Run or re-run the **Client Registration** group to set or\n change this value. Used if the `jku` header is not found in the auth token jwt.\n ","value":"http://localhost:4567/custom/crd_server/jwks.json","type":"textarea"},{"name":"order_sign_selected_response_types","label":"Response types to return from order-sign hook requests","description":"\n Select the cards/action response types that the Inferno hook request endpoints will return. The default\n response type that will be returned for this hook is the `Coverage Information` card type.\n ","value":["external_reference","instructions","coverage_information","request_form_completion","create_update_coverage_info","launch_smart_app","propose_alternate_request","companions_prerequisites"],"type":"checkbox"},{"name":"order_sign_custom_response_template","label":"Custom response for order-sign hook requests","description":"\n A JSON string may be provided here to replace the normal response\n from the hook request endpoint\n ","value":null,"type":"textarea"},{"name":"order_sign_override_access_token","label":"order-sign Prefetch Validation Override Bearer Token","description":"\n Optionally provide a bearer token to use in place of the one provided in the hook request\n when checking that the prefetched data is equivalent to what can be access via FHIR.\n Use only if the bearer token in the request will not be valid even right after the hook\n request is made. If provided it must have the same scope as the bearer token provided\n in the hook request.\n ","value":null,"type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:03.365-04:00"},{"id":"37d5a67a-de08-487c-9ef9-2ef40cf20fc4","created_at":"2026-03-12T13:41:03.370-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_hooks","test_run_id":"996fb82e-2e86-40a8-a88c-7151d699c3cf","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:03.370-04:00"},{"id":"9cb664d4-57da-4b62-b2c2-0dd56239f031","created_at":"2026-03-12T13:41:06.578-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_coverage_information","test_run_id":"7631349f-e960-4d8e-93f4-8bbbb101e966","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:06.578-04:00"},{"id":"cbb26d70-90b1-417c-9de2-d152fdfea1c1","created_at":"2026-03-12T13:41:06.595-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_external_reference","test_run_id":"7631349f-e960-4d8e-93f4-8bbbb101e966","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:06.595-04:00"},{"id":"f15818ea-4c90-42a3-bcf2-2fc85d813bac","created_at":"2026-03-12T13:41:06.612-04:00","inputs":[],"optional":false,"outputs":[],"requests":[{"id":"bc825ea7-553d-44a3-8ce0-ac346b8fab3f","direction":"incoming","index":6220,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:46.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"b53fdb3e-9a46-4768-b91f-d4ca8d096ed6","direction":"incoming","index":6226,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.006-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"7defe9c0-f631-4190-9d39-15e8720d5c79","direction":"incoming","index":6229,"result_id":"17ee2931-63bf-42ad-9288-f4e8ae359e71","status":200,"timestamp":"2026-03-12T13:39:50.303-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"POST"},{"id":"01ae94f9-b3d4-49d2-9f3d-97a90bf37232","direction":"incoming","index":6255,"result_id":"47a23ef4-8a14-41e4-8b58-2ac1671a3eeb","status":200,"timestamp":"2026-03-12T13:40:08.375-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"POST"},{"id":"1e1a8ee5-2ef7-49c5-8c22-e9b1a47fbe34","direction":"incoming","index":6267,"result_id":"3169f475-4003-4155-a1af-804446148eba","status":200,"timestamp":"2026-03-12T13:40:20.602-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"POST"},{"id":"89a207ef-cb48-4937-ada6-222014dc5db1","direction":"incoming","index":6279,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:32.956-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"e55832b1-81d2-4a3e-a77b-ff8575f67b74","direction":"incoming","index":6283,"result_id":"ec4a1305-b8e6-4b77-ad2d-6f61d7111531","status":200,"timestamp":"2026-03-12T13:40:33.352-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"POST"},{"id":"1c1b06a1-7fbe-434d-b863-0068b780afed","direction":"incoming","index":6299,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.105-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"32f55e5a-95d6-4bb7-99fc-9800af6352fe","direction":"incoming","index":6301,"result_id":"5defa26b-4112-4fe6-a836-acadbd500d41","status":200,"timestamp":"2026-03-12T13:40:45.373-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"POST"},{"id":"09465a67-820a-40db-8c00-26c4f9b3c627","direction":"incoming","index":6321,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.353-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"},{"id":"a8055b40-8b3a-45b1-8dce-6177ac3f83c9","direction":"incoming","index":6324,"result_id":"721195c2-025e-45fc-9036-42d2e88539be","status":200,"timestamp":"2026-03-12T13:40:57.612-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"POST"}],"result":"pass","test_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support-crd_client_card_must_support_instructions","test_run_id":"7631349f-e960-4d8e-93f4-8bbbb101e966","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:06.612-04:00"},{"id":"624e1b2d-cc8e-4740-aa0b-50d456b8f707","created_at":"2026-03-12T13:41:06.619-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation-crd_client_card_must_support","test_run_id":"7631349f-e960-4d8e-93f4-8bbbb101e966","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:06.619-04:00"},{"id":"2a2f4d1f-17c1-474f-9650-e7815e38b6be","created_at":"2026-03-12T13:41:06.622-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_client-crd_client_hook_invocation","test_run_id":"7631349f-e960-4d8e-93f4-8bbbb101e966","test_session_id":"hagCIl0B7iH","updated_at":"2026-03-12T13:41:06.622-04:00"}] \ No newline at end of file diff --git a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_server_expected-old-tx-server-errors?.json b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_server_expected-old-tx-server-errors?.json new file mode 100644 index 00000000..539a6279 --- /dev/null +++ b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_server_expected-old-tx-server-errors?.json @@ -0,0 +1 @@ +[{"id":"061cf614-7717-42ce-8e58-e8b266926463","created_at":"2026-03-09T16:31:13.254-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"http://localhost:4567/custom/crd_client correctly denied SSL 2.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied SSL 3.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied TLS 1.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied TLS 1.1 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client denied TLS 1.2 connection.","type":"info"},{"message":"http://localhost:4567/custom/crd_client denied TLS 1.3 connection.","type":"info"}],"optional":false,"outputs":[],"requests":[],"result":"fail","result_message":"Server did not support any allowed TLS versions.","test_id":"crd_server-crd_server_discovery_group-crd_server_tls_version_stu2","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.254-04:00"},{"id":"3fdefa40-cd36-4b27-9b4a-1aafdb35c397","created_at":"2026-03-09T16:31:13.266-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"authentication_required","value":"no","type":"radio"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"cds_services","type":"text","value":"\n{\n \"services\": [\n {\n \"hook\": \"appointment-book\",\n \"title\": \"Appointment Booking CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when user of a CRD Client books a future appointment for a patient\",\n \"id\": \"appointment-book-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-start\",\n \"title\": \"Encounter Start CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when the user is initiating a new encounter.\",\n \"id\": \"encounter-start-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-discharge\",\n \"title\": \"Encounter Disharge CDS Service Example\",\n \"description\": \"An example of a CDS Service that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.\",\n \"id\": \"encounter-discharge-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-dispatch\",\n \"title\": \"Order Dispatch CDS Service Example\",\n \"description\": \"An example of a CDS Service that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer\",\n \"id\": \"order-dispatch-service\",\n \"prefetch\": {\n \"patient\": \"Patient/{{context.patientId}}\",\n \"performer\": \"{{context.performer}}\",\n \"order\": \"{{context.order}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-select\",\n \"title\": \"Order Select CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician selects one or more orders to place for a patient\",\n \"id\": \"order-select-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-sign\",\n \"title\": \"Order Sign CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician is ready to sign one or more orders for a patient\",\n \"id\": \"order-sign-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n }\n ]\n}"}],"requests":[{"id":"bbd13d61-1a7b-40f7-a659-704262db2048","direction":"outgoing","index":4484,"result_id":"3fdefa40-cd36-4b27-9b4a-1aafdb35c397","status":200,"timestamp":"2026-03-09T16:31:13.268-04:00","url":"http://localhost:4567/custom/crd_client/cds-services","verb":"get"}],"result":"pass","test_id":"crd_server-crd_server_discovery_group-crd_discovery_endpoint_test","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.266-04:00"},{"id":"40bb2306-d69c-4a53-9b60-0f2b8a64281d","created_at":"2026-03-09T16:31:13.277-04:00","inputs":[{"name":"cds_services","value":"\n{\n \"services\": [\n {\n \"hook\": \"appointment-book\",\n \"title\": \"Appointment Booking CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when user of a CRD Client books a future appointment for a patient\",\n \"id\": \"appointment-book-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-start\",\n \"title\": \"Encounter Start CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when the user is initiating a new encounter.\",\n \"id\": \"encounter-start-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-discharge\",\n \"title\": \"Encounter Disharge CDS Service Example\",\n \"description\": \"An example of a CDS Service that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.\",\n \"id\": \"encounter-discharge-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-dispatch\",\n \"title\": \"Order Dispatch CDS Service Example\",\n \"description\": \"An example of a CDS Service that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer\",\n \"id\": \"order-dispatch-service\",\n \"prefetch\": {\n \"patient\": \"Patient/{{context.patientId}}\",\n \"performer\": \"{{context.performer}}\",\n \"order\": \"{{context.order}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-select\",\n \"title\": \"Order Select CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician selects one or more orders to place for a patient\",\n \"id\": \"order-select-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-sign\",\n \"title\": \"Order Sign CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician is ready to sign one or more orders for a patient\",\n \"id\": \"order-sign-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n }\n ]\n}","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_service_ids","type":"text","value":"appointment-book-service"},{"name":"encounter_start_service_ids","type":"text","value":"encounter-start-service"},{"name":"encounter_discharge_service_ids","type":"text","value":"encounter-discharge-service"},{"name":"order_dispatch_service_ids","type":"text","value":"order-dispatch-service"},{"name":"order_select_service_ids","type":"text","value":"order-select-service"},{"name":"order_sign_service_ids","type":"text","value":"order-sign-service"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_discovery_group-crd_discovery_services_validation","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.277-04:00"},{"id":"1977065a-7212-4f3f-b11b-3bda0dc9bf4f","created_at":"2026-03-09T16:31:13.278-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"authentication_required","label":"Discovery endpoint requires authentication?","description":null,"value":"no","type":"radio"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"fail","test_group_id":"crd_server-crd_server_discovery_group","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.278-04:00"},{"id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","created_at":"2026-03-09T16:31:16.730-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"any_hook_service_ids","value":null,"type":"text"},{"name":"any_hook_request_body","value":"{\n \"hookInstance\": \"d1577c69-dfbe-11ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Observation.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"total\": 2,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"125\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:52:09.983+00:00\",\n \"source\": \"#KIaKP1Pfw7EVpLjl\"\n },\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n },\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"126\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:55:17.405+00:00\",\n \"source\": \"#RTJWuip7OTKyTjG7\"\n },\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"CHECKUP\",\n \"display\": \"A routine check-up, such as an annual physical\"\n }\n ]\n },\n \"description\": \"Regular physical\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"prefetch\": { \n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"id\": \"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\n \"meta\": {\n \"lastUpdated\": \"2024-05-10T03:56:46.942+00:00\"\n },\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n }\n }\n}","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"appointment-book"}],"requests":[{"id":"bbd13d61-1a7b-40f7-a659-704262db2048","direction":"outgoing","index":4484,"result_id":"3fdefa40-cd36-4b27-9b4a-1aafdb35c397","status":200,"timestamp":"2026-03-09T16:31:13.268-04:00","url":"http://localhost:4567/custom/crd_client/cds-services","verb":"get"},{"id":"3d4faf47-1107-4d08-9e62-2f359de27e4e","direction":"outgoing","index":4488,"result_id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","status":200,"timestamp":"2026-03-09T16:31:16.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_call_test","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.730-04:00"},{"id":"46ca086b-056a-4b30-b75e-ad1aea11d8bf","created_at":"2026-03-09T16:31:16.748-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"any_hook_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"3d4faf47-1107-4d08-9e62-2f359de27e4e","direction":"outgoing","index":4488,"result_id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","status":200,"timestamp":"2026-03-09T16:31:16.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_request_required_fields_validation","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.748-04:00"},{"id":"ffd80285-9c07-4879-a29f-33bb37bfacf9","created_at":"2026-03-09T16:31:16.795-04:00","inputs":[{"name":"any_hook_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_request_context_validation","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.795-04:00"},{"id":"59efe7ae-129f-4842-be68-8272bafba807","created_at":"2026-03-09T16:31:16.803-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"any_hook_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"6548f2526e0aacd281e8c87e527eb9de432bd8dec5c9333a28b32b06be211074\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"227783cab0a9d2ee01e30c94964cb023fe8369508cc28200c64ffb355b2f50a2\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"},{"name":"any_hook_valid_cards","type":"text","value":"[{\"summary\":\"Appointment Book Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"a64911cc-7632-4f84-8997-73d8d5961b0f\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"478743dd-0c1c-4548-b9a6-7a21ac01fa06\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"de3c7cc0-2f70-4be6-bdbd-a30613cfd536\"},{\"summary\":\"Appointment Book Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"7782957f-a407-430f-9fff-e06cfc52fd24\"},{\"summary\":\"Appointment Book Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"6b1bef9f-b893-4d46-8617-3febed339b77\"}]"}],"requests":[{"id":"3d4faf47-1107-4d08-9e62-2f359de27e4e","direction":"outgoing","index":4488,"result_id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","status":200,"timestamp":"2026-03-09T16:31:16.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_response_validation","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.803-04:00"},{"id":"2c0cb848-5917-4010-9224-b041147a7966","created_at":"2026-03-09T16:31:16.806-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"any_hook_service_ids","label":"Service id to use for the \"Demonstrate a Hook Response\" test","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the hook indicated in the provided request body. If it cannot be inferred,\n the tests will be skipped.\n ","value":null,"type":"text"},{"name":"any_hook_request_body","label":"Request body to use for the \"Demonstrate a Hook Response\" test","description":"\n Provide a single JSON request body to submit for the hook invocation. The type of hook invoked\n will be inferred based on the `hook` element in the request.\n ","value":"{\n \"hookInstance\": \"d1577c69-dfbe-11ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Observation.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"total\": 2,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"125\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:52:09.983+00:00\",\n \"source\": \"#KIaKP1Pfw7EVpLjl\"\n },\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n },\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"126\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:55:17.405+00:00\",\n \"source\": \"#RTJWuip7OTKyTjG7\"\n },\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"CHECKUP\",\n \"display\": \"A routine check-up, such as an annual physical\"\n }\n ]\n },\n \"description\": \"Regular physical\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"prefetch\": { \n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"id\": \"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\n \"meta\": {\n \"lastUpdated\": \"2024-05-10T03:56:46.942+00:00\"\n },\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n }\n }\n}","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_demonstrate_hook_response","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.806-04:00"},{"id":"473dbd90-0228-498b-9d96-7772da798304","created_at":"2026-03-09T16:31:20.115-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"appointment_book_service_ids","value":"appointment-book-service","type":"text"},{"name":"appointment_book_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/473dbd90-0228-498b-9d96-7772da798304/io/inputs/appointment_book_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"appointment-book"}],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_call_test","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.115-04:00"},{"id":"34c7421f-1843-4cf1-8d47-553e79bc8929","created_at":"2026-03-09T16:31:20.154-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]"}],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_required_fields_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.154-04:00"},{"id":"6729f5c1-da67-45a5-9ffa-48f95c3404bd","created_at":"2026-03-09T16:31:20.211-04:00","inputs":[{"name":"appointment_book_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_context_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.211-04:00"},{"id":"7d2987a9-a339-4e44-9410-42d73d85a9be","created_at":"2026-03-09T16:31:20.218-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_optional_fields_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.218-04:00"},{"id":"305f7849-22d6-40b7-bc03-09cca0c79684","created_at":"2026-03-09T16:31:20.226-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"},{"name":"appointment_book_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/305f7849-22d6-40b7-bc03-09cca0c79684/io/outputs/appointment_book_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_response_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.226-04:00"},{"id":"c063e2a8-aed8-466b-970d-e83635e3dbd4","created_at":"2026-03-09T16:31:20.233-04:00","inputs":[{"name":"appointment_book_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/c063e2a8-aed8-466b-970d-e83635e3dbd4/io/inputs/appointment_book_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"appointment_book_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c274144e-bee1-481e-9bfa-2ae8fc96c24b\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"b8ecdea6-207b-4f8e-8ef5-c3f1eb50bead\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"7b83835f-e630-4108-badd-f09019015605\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"ccf9f652-8c3b-4070-ac87-d4ed1cbdbe31\"}]"},{"name":"appointment_book_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/c063e2a8-aed8-466b-970d-e83635e3dbd4/io/outputs/appointment_book_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_card_optional_fields_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.233-04:00"},{"id":"88fc469a-0b5f-4544-a2db-dae38ea01050","created_at":"2026-03-09T16:31:20.234-04:00","inputs":[{"name":"appointment_book_valid_cards_with_links","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c274144e-bee1-481e-9bfa-2ae8fc96c24b\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"b8ecdea6-207b-4f8e-8ef5-c3f1eb50bead\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"7b83835f-e630-4108-badd-f09019015605\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"ccf9f652-8c3b-4070-ac87-d4ed1cbdbe31\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_external_reference_card_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.234-04:00"},{"id":"2cc7ea56-8e80-4e13-889c-9fd7b15220d5","created_at":"2026-03-09T16:31:20.235-04:00","inputs":[{"name":"appointment_book_valid_cards_with_links","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c274144e-bee1-481e-9bfa-2ae8fc96c24b\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"b8ecdea6-207b-4f8e-8ef5-c3f1eb50bead\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"7b83835f-e630-4108-badd-f09019015605\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"ccf9f652-8c3b-4070-ac87-d4ed1cbdbe31\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_launch_smart_app_card_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.235-04:00"},{"id":"cda7092c-cb6b-4f10-a49b-09a51190f266","created_at":"2026-03-09T16:31:20.237-04:00","inputs":[{"name":"appointment_book_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/cda7092c-cb6b-4f10-a49b-09a51190f266/io/inputs/appointment_book_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_valid_instructions_card_received","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.237-04:00"},{"id":"604222b4-e6e8-444e-9b8f-409e0aa0b8d3","created_at":"2026-03-09T16:31:20.240-04:00","inputs":[{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.240-04:00"},{"id":"e72d8fc7-cfa7-4378-b5d7-e75e23f2f197","created_at":"2026-03-09T16:31:20.301-04:00","inputs":[{"name":"appointment_book_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.301-04:00"},{"id":"a6b92b02-766b-4d53-bd15-82a70631126a","created_at":"2026-03-09T16:31:20.338-04:00","inputs":[{"name":"appointment_book_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/a6b92b02-766b-4d53-bd15-82a70631126a/io/inputs/appointment_book_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_request_form_completion_response_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.338-04:00"},{"id":"f0337950-2ba9-4b17-90c1-08d99de9c289","created_at":"2026-03-09T16:31:20.376-04:00","inputs":[{"name":"appointment_book_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/f0337950-2ba9-4b17-90c1-08d99de9c289/io/inputs/appointment_book_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_create_or_update_coverage_info_response_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.376-04:00"},{"id":"672302c4-8f92-481b-a360-bafc29e32f44","created_at":"2026-03-09T16:31:20.379-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"appointment_book_service_ids","label":"Service id for the service that implements the `appointment-book` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"appointment-book-service","type":"text"},{"name":"appointment_book_request_bodies","label":"Request body or bodies for invoking the `appointment-book` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/672302c4-8f92-481b-a360-bafc29e32f44/io/inputs/appointment_book_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_appointment_book","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.379-04:00"},{"id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","created_at":"2026-03-09T16:31:32.290-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encounter_start_service_ids","value":"encounter-start-service","type":"text"},{"name":"encounter_start_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"encounter-start"}],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_call_test","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.290-04:00"},{"id":"51bbfd35-1e92-40d3-b2a7-b663a2e901b7","created_at":"2026-03-09T16:31:32.308-04:00","inputs":[{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"}],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_required_fields_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.308-04:00"},{"id":"f9112bc1-e7fa-49e0-b6e5-67f89fc3820e","created_at":"2026-03-09T16:31:32.310-04:00","inputs":[{"name":"encounter_start_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_context_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.310-04:00"},{"id":"aa01f723-a9e3-409c-9f53-b39c7a2822d9","created_at":"2026-03-09T16:31:32.314-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_optional_fields_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.314-04:00"},{"id":"c01015f9-77ac-486a-beb7-7a14478dc112","created_at":"2026-03-09T16:31:32.320-04:00","inputs":[{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"},{"name":"encounter_start_valid_cards","type":"text","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"8e78de7e-b0c0-45ca-ae12-7e47ede6174e\"}]"}],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_response_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.320-04:00"},{"id":"c18210a6-b386-41b1-8920-b4bd65dc6134","created_at":"2026-03-09T16:31:32.325-04:00","inputs":[{"name":"encounter_start_valid_cards","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"8e78de7e-b0c0-45ca-ae12-7e47ede6174e\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_start_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"}]"},{"name":"encounter_start_valid_cards_with_suggestions","type":"text","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_card_optional_fields_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.325-04:00"},{"id":"47fcb0a9-8b6f-439f-9853-80e87d5e19b7","created_at":"2026-03-09T16:31:32.327-04:00","inputs":[{"name":"encounter_start_valid_cards_with_links","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_external_reference_card_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.327-04:00"},{"id":"cb7c4566-ed88-4cd1-a1a3-95551df87a98","created_at":"2026-03-09T16:31:32.328-04:00","inputs":[{"name":"encounter_start_valid_cards_with_links","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_launch_smart_app_card_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.328-04:00"},{"id":"403d289c-b976-49ed-be25-981c38a2b982","created_at":"2026-03-09T16:31:32.330-04:00","inputs":[{"name":"encounter_start_valid_cards","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"8e78de7e-b0c0-45ca-ae12-7e47ede6174e\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_valid_instructions_card_received","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.330-04:00"},{"id":"bf42821b-3dac-4a10-a8b0-11d3f581a74f","created_at":"2026-03-09T16:31:32.335-04:00","inputs":[{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_start_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.335-04:00"},{"id":"164c02de-75d2-4c03-b6c1-0bc674170103","created_at":"2026-03-09T16:31:32.375-04:00","inputs":[{"name":"encounter_start_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.375-04:00"},{"id":"418256b5-1c7c-4309-aa07-820f781e3acb","created_at":"2026-03-09T16:31:32.397-04:00","inputs":[{"name":"encounter_start_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"}]","type":"text"},{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_request_form_completion_response_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.397-04:00"},{"id":"cbcf9dc3-7bea-404c-80b5-dae508e5c5ec","created_at":"2026-03-09T16:31:32.424-04:00","inputs":[{"name":"encounter_start_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"}]","type":"text"},{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_create_or_update_coverage_info_response_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.424-04:00"},{"id":"afc45c8c-be28-4d69-b80f-17baf15a2a12","created_at":"2026-03-09T16:31:32.427-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"encounter_start_service_ids","label":"Service id for the service that implements the `encounter-start` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"encounter-start-service","type":"text"},{"name":"encounter_start_request_bodies","label":"Request body or bodies for invoking the `encounter-start` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_encounter_start","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.427-04:00"},{"id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","created_at":"2026-03-09T16:31:44.487-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encounter_discharge_service_ids","value":"encounter-discharge-service","type":"text"},{"name":"encounter_discharge_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"encounter-discharge"}],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_call_test","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.487-04:00"},{"id":"535f090e-aa5a-42ab-990c-facc8607d9dd","created_at":"2026-03-09T16:31:44.504-04:00","inputs":[{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"}],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_required_fields_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.504-04:00"},{"id":"d6130fd6-4b9d-4db0-b128-50ff2ef3200b","created_at":"2026-03-09T16:31:44.506-04:00","inputs":[{"name":"encounter_discharge_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_context_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.506-04:00"},{"id":"74aaee61-0ff3-46a0-92da-da779a3c5fee","created_at":"2026-03-09T16:31:44.510-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_optional_fields_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.510-04:00"},{"id":"ee9af4d6-fbbc-4d0c-ad19-26fd78477138","created_at":"2026-03-09T16:31:44.527-04:00","inputs":[{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"},{"name":"encounter_discharge_valid_cards","type":"text","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"b3b4af8f-12f7-42fb-95d9-1f3da6697d1f\"}]"}],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_response_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.527-04:00"},{"id":"a7385eef-0659-460e-a1ac-6affe720d4b2","created_at":"2026-03-09T16:31:44.531-04:00","inputs":[{"name":"encounter_discharge_valid_cards","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"b3b4af8f-12f7-42fb-95d9-1f3da6697d1f\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_discharge_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"}]"},{"name":"encounter_discharge_valid_cards_with_suggestions","type":"text","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_card_optional_fields_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.531-04:00"},{"id":"29cce23e-7e19-4224-bbb7-2b468b01be32","created_at":"2026-03-09T16:31:44.533-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_links","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_external_reference_card_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.533-04:00"},{"id":"60c3af62-65c2-434c-97f0-f3fd1138d1fa","created_at":"2026-03-09T16:31:44.534-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_links","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_launch_smart_app_card_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.534-04:00"},{"id":"cf391f33-b4f2-426f-bc14-a57e72029a53","created_at":"2026-03-09T16:31:44.535-04:00","inputs":[{"name":"encounter_discharge_valid_cards","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"b3b4af8f-12f7-42fb-95d9-1f3da6697d1f\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_valid_instructions_card_received","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.535-04:00"},{"id":"c7b0d85e-59cb-4913-9800-1fbe393d2230","created_at":"2026-03-09T16:31:44.538-04:00","inputs":[{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_discharge_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.538-04:00"},{"id":"ff007ec3-e734-4aac-b6e9-905549b54181","created_at":"2026-03-09T16:31:44.574-04:00","inputs":[{"name":"encounter_discharge_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.574-04:00"},{"id":"77b56347-3aed-490d-9a0b-b9cb628afdbb","created_at":"2026-03-09T16:31:44.595-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"}]","type":"text"},{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_request_form_completion_response_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.595-04:00"},{"id":"de2fbae5-06f0-4500-98f8-cc907866b77a","created_at":"2026-03-09T16:31:44.630-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"}]","type":"text"},{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_create_or_update_coverage_info_response_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.630-04:00"},{"id":"d330dc68-8608-45ee-a456-e323245649f8","created_at":"2026-03-09T16:31:44.632-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"encounter_discharge_service_ids","label":"Service id for the service that implements the `encounter-discharge` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"encounter-discharge-service","type":"text"},{"name":"encounter_discharge_request_bodies","label":"Request body or bodies for invoking the `encounter-discharge` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.632-04:00"},{"id":"5c733716-9891-4d70-80fc-ca7af9ab2254","created_at":"2026-03-09T16:31:57.200-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_select_service_ids","value":"order-select-service","type":"text"},{"name":"order_select_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/5c733716-9891-4d70-80fc-ca7af9ab2254/io/inputs/order_select_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-select"}],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_call_test","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.200-04:00"},{"id":"ba567c0e-e160-462d-876f-514aeeee5c56","created_at":"2026-03-09T16:31:57.222-04:00","inputs":[{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_select_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]"}],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_required_fields_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.222-04:00"},{"id":"9774289b-cce1-4d65-b09b-7fd6980f5798","created_at":"2026-03-09T16:31:57.261-04:00","inputs":[{"name":"order_select_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_context_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.261-04:00"},{"id":"838e4205-a4b7-4514-bb9a-b6adf813f943","created_at":"2026-03-09T16:31:57.269-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":true,"outputs":[],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_optional_fields_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.269-04:00"},{"id":"6874b4a6-0b78-4167-a988-c0666af1d5c4","created_at":"2026-03-09T16:31:57.278-04:00","inputs":[{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_select_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]"},{"name":"order_select_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/6874b4a6-0b78-4167-a988-c0666af1d5c4/io/outputs/order_select_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_response_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.278-04:00"},{"id":"7483cc64-c76f-4ce4-9a0e-76afa379ba61","created_at":"2026-03-09T16:31:57.287-04:00","inputs":[{"name":"order_select_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/7483cc64-c76f-4ce4-9a0e-76afa379ba61/io/inputs/order_select_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_select_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"ccf8035f-d87c-4e09-8a0e-fc1a54515fee\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"d5d777c7-5ac1-4bd3-8299-14439be02605\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3abc5701-815f-41cf-b6cd-3329d822de02\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e3d6e93f-f42b-4b3d-b059-c64143dda90b\"}]"},{"name":"order_select_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/7483cc64-c76f-4ce4-9a0e-76afa379ba61/io/outputs/order_select_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_card_optional_fields_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.287-04:00"},{"id":"1c43fe34-76e5-4556-a2e5-c8adf689dd3e","created_at":"2026-03-09T16:31:57.288-04:00","inputs":[{"name":"order_select_valid_cards_with_links","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"ccf8035f-d87c-4e09-8a0e-fc1a54515fee\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"d5d777c7-5ac1-4bd3-8299-14439be02605\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3abc5701-815f-41cf-b6cd-3329d822de02\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e3d6e93f-f42b-4b3d-b059-c64143dda90b\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_external_reference_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.288-04:00"},{"id":"7cf00b5c-87d0-49bd-aa5f-e0b4a9d434a3","created_at":"2026-03-09T16:31:57.290-04:00","inputs":[{"name":"order_select_valid_cards_with_links","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"ccf8035f-d87c-4e09-8a0e-fc1a54515fee\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"d5d777c7-5ac1-4bd3-8299-14439be02605\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3abc5701-815f-41cf-b6cd-3329d822de02\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e3d6e93f-f42b-4b3d-b059-c64143dda90b\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_launch_smart_app_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.290-04:00"},{"id":"bc97cd2e-3902-4cfe-93c8-7c1f2797dc60","created_at":"2026-03-09T16:31:57.291-04:00","inputs":[{"name":"order_select_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/bc97cd2e-3902-4cfe-93c8-7c1f2797dc60/io/inputs/order_select_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_valid_instructions_card_received","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.291-04:00"},{"id":"eb08d0d0-af15-42ed-860b-c1e6839b6ef0","created_at":"2026-03-09T16:31:57.295-04:00","inputs":[{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_select_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.295-04:00"},{"id":"ed6c2a41-f9ef-464d-afe2-ec29c73e8bea","created_at":"2026-03-09T16:31:57.335-04:00","inputs":[{"name":"order_select_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.335-04:00"},{"id":"438631dd-9b91-4232-948e-271d0971f3ec","created_at":"2026-03-09T16:31:57.375-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/438631dd-9b91-4232-948e-271d0971f3ec/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_propose_alternate_request_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.375-04:00"},{"id":"0f888e44-b9dd-4885-9088-7e70384a8529","created_at":"2026-03-09T16:31:57.407-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/0f888e44-b9dd-4885-9088-7e70384a8529/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_additional_orders_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.407-04:00"},{"id":"05d3d7e8-3997-4987-8d6a-f2f4da76686b","created_at":"2026-03-09T16:31:57.444-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/05d3d7e8-3997-4987-8d6a-f2f4da76686b/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_request_form_completion_response_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.444-04:00"},{"id":"1e0176f1-c8fe-49c0-b120-a2cac859c3af","created_at":"2026-03-09T16:31:57.488-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/1e0176f1-c8fe-49c0-b120-a2cac859c3af/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_create_or_update_coverage_info_response_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.488-04:00"},{"id":"180dd38f-b610-425b-b3ed-bd9ff60364af","created_at":"2026-03-09T16:31:57.492-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_select_service_ids","label":"Service id for the service that implements the `order-select` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-select-service","type":"text"},{"name":"order_select_request_bodies","label":"Request body or bodies for invoking the `order-select` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/180dd38f-b610-425b-b3ed-bd9ff60364af/io/inputs/order_select_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_select","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.492-04:00"},{"id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","created_at":"2026-03-09T16:32:09.262-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_dispatch_service_ids","value":"order-dispatch-service","type":"text"},{"name":"order_dispatch_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"ServiceRequest/servreq-g0180-1\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"servreq-g0180-1\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"occurrenceDateTime\": \"2017-10-01\",\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/pra1234\"\n }\n ],\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ]\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"DeviceRequest/devreq015\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"devreq015\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"\n ]\n },\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ],\n \"status\": \"draft\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0424\",\n \"display\": \"Stationary Compressed Gaseous Oxygen System, Rental\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"intent\": \"original-order\",\n \"occurrenceTiming\": {\n \"repeat\": {\n \"boundsDuration\": {\n \"value\": 8,\n \"unit\": \"mo\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"mo\"\n }\n },\n \"code\": {\n \"text\": \"During sleep AND During exertion\"\n }\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/pra1234\"\n }\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-dispatch"}],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_call_test","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.262-04:00"},{"id":"e3c816cb-57c5-4b11-871d-545e89c9e6c0","created_at":"2026-03-09T16:32:09.299-04:00","inputs":[{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_contexts","type":"text","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]"}],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_required_fields_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.299-04:00"},{"id":"40ceff7a-23c8-4f2a-a5a3-5f2af60ddee2","created_at":"2026-03-09T16:32:09.302-04:00","inputs":[{"name":"order_dispatch_contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_context_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.302-04:00"},{"id":"fc22a42e-fe86-4508-a400-470a5d8ea7bd","created_at":"2026-03-09T16:32:09.305-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_optional_fields_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.305-04:00"},{"id":"e18ac60e-c955-414b-b07c-464a9ddcd049","created_at":"2026-03-09T16:32:09.316-04:00","inputs":[{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]"},{"name":"order_dispatch_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/e18ac60e-c955-414b-b07c-464a9ddcd049/io/outputs/order_dispatch_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_response_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.316-04:00"},{"id":"b471a3ee-dd04-4ea2-912a-74951e8911fe","created_at":"2026-03-09T16:32:09.323-04:00","inputs":[{"name":"order_dispatch_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b471a3ee-dd04-4ea2-912a-74951e8911fe/io/inputs/order_dispatch_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_dispatch_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d30febea-0a6b-4731-8d69-d6eb814e3a7d\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"2eebb852-36fa-4b80-9264-9b06637ae3e3\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"78d38315-1b44-4c9f-9d96-20f4e5644d26\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"59cc5363-4808-4921-accc-c448a7dfe477\"}]"},{"name":"order_dispatch_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b471a3ee-dd04-4ea2-912a-74951e8911fe/io/outputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_card_optional_fields_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.323-04:00"},{"id":"f59ca277-7044-4830-89f6-18e1307e2179","created_at":"2026-03-09T16:32:09.325-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_links","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d30febea-0a6b-4731-8d69-d6eb814e3a7d\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"2eebb852-36fa-4b80-9264-9b06637ae3e3\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"78d38315-1b44-4c9f-9d96-20f4e5644d26\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"59cc5363-4808-4921-accc-c448a7dfe477\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_external_reference_card_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.325-04:00"},{"id":"5c2deb35-200b-437b-9b8b-93fc2f62e789","created_at":"2026-03-09T16:32:09.327-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_links","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d30febea-0a6b-4731-8d69-d6eb814e3a7d\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"2eebb852-36fa-4b80-9264-9b06637ae3e3\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"78d38315-1b44-4c9f-9d96-20f4e5644d26\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"59cc5363-4808-4921-accc-c448a7dfe477\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_launch_smart_app_card_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.327-04:00"},{"id":"5f2b2502-ebf0-427b-8f60-a4421ae0b670","created_at":"2026-03-09T16:32:09.328-04:00","inputs":[{"name":"order_dispatch_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/5f2b2502-ebf0-427b-8f60-a4421ae0b670/io/inputs/order_dispatch_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_valid_instructions_card_received","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.328-04:00"},{"id":"688b9f0e-33c1-4ddc-8658-9bdbc8352375","created_at":"2026-03-09T16:32:09.331-04:00","inputs":[{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.331-04:00"},{"id":"e78727a4-7ec8-42aa-8c0c-45fc99cb9e17","created_at":"2026-03-09T16:32:09.385-04:00","inputs":[{"name":"order_dispatch_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.385-04:00"},{"id":"d07edbff-cc31-4064-a676-abebadf7a86a","created_at":"2026-03-09T16:32:09.429-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/d07edbff-cc31-4064-a676-abebadf7a86a/io/inputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_request_form_completion_response_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.429-04:00"},{"id":"2e4b66a9-7847-45f7-a1b7-ef22831d3336","created_at":"2026-03-09T16:32:09.473-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/2e4b66a9-7847-45f7-a1b7-ef22831d3336/io/inputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_create_or_update_coverage_info_response_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.473-04:00"},{"id":"4e468a66-bea6-4d9c-985d-701bf99a5c43","created_at":"2026-03-09T16:32:09.476-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_dispatch_service_ids","label":"Service id for the service that implements the `order-dispatch` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-dispatch-service","type":"text"},{"name":"order_dispatch_request_bodies","label":"Request body or bodies for invoking the `order-dispatch` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"ServiceRequest/servreq-g0180-1\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"servreq-g0180-1\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"occurrenceDateTime\": \"2017-10-01\",\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/pra1234\"\n }\n ],\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ]\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"DeviceRequest/devreq015\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"devreq015\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"\n ]\n },\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ],\n \"status\": \"draft\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0424\",\n \"display\": \"Stationary Compressed Gaseous Oxygen System, Rental\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"intent\": \"original-order\",\n \"occurrenceTiming\": {\n \"repeat\": {\n \"boundsDuration\": {\n \"value\": 8,\n \"unit\": \"mo\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"mo\"\n }\n },\n \"code\": {\n \"text\": \"During sleep AND During exertion\"\n }\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/pra1234\"\n }\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_dispatch","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.476-04:00"},{"id":"e11fad61-6569-4451-baf0-412ae85d9489","created_at":"2026-03-09T16:32:21.539-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_sign_service_ids","value":"order-sign-service","type":"text"},{"name":"order_sign_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/e11fad61-6569-4451-baf0-412ae85d9489/io/inputs/order_sign_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-sign"}],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_call_test","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.539-04:00"},{"id":"c7f993d2-ddf7-4700-ba27-3a2d2695fd01","created_at":"2026-03-09T16:32:21.576-04:00","inputs":[{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]"}],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_required_fields_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.576-04:00"},{"id":"a181dc1f-0498-4a3d-8503-b8ff50fc5a50","created_at":"2026-03-09T16:32:21.621-04:00","inputs":[{"name":"order_sign_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_context_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.621-04:00"},{"id":"5203b4e2-dc09-44f7-b977-8f531a7d0679","created_at":"2026-03-09T16:32:21.633-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":true,"outputs":[],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_optional_fields_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.633-04:00"},{"id":"28e428e8-3482-43a0-8fad-1cdb421aeb5a","created_at":"2026-03-09T16:32:21.644-04:00","inputs":[{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]"},{"name":"order_sign_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/28e428e8-3482-43a0-8fad-1cdb421aeb5a/io/outputs/order_sign_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_response_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.644-04:00"},{"id":"39dd4fea-648d-4690-a584-7e57e66aa256","created_at":"2026-03-09T16:32:21.655-04:00","inputs":[{"name":"order_sign_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/39dd4fea-648d-4690-a584-7e57e66aa256/io/inputs/order_sign_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_sign_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"fc76a6b0-b329-4a50-b98a-35e249c57fc6\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6d216c90-a5aa-4110-b58b-fb535cf8c057\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"2f1c00af-588d-41ea-a4d1-1936edc3ce09\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6bed6927-571e-4985-8865-c1ef24ce1e0c\"}]"},{"name":"order_sign_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/39dd4fea-648d-4690-a584-7e57e66aa256/io/outputs/order_sign_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_card_optional_fields_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.655-04:00"},{"id":"9b4db4b2-9b3b-4df3-9271-a2b864b70787","created_at":"2026-03-09T16:32:21.658-04:00","inputs":[{"name":"order_sign_valid_cards_with_links","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"fc76a6b0-b329-4a50-b98a-35e249c57fc6\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6d216c90-a5aa-4110-b58b-fb535cf8c057\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"2f1c00af-588d-41ea-a4d1-1936edc3ce09\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6bed6927-571e-4985-8865-c1ef24ce1e0c\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_external_reference_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.658-04:00"},{"id":"03f31de7-68aa-4b8f-b82e-1e15b482a9dc","created_at":"2026-03-09T16:32:21.661-04:00","inputs":[{"name":"order_sign_valid_cards_with_links","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"fc76a6b0-b329-4a50-b98a-35e249c57fc6\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6d216c90-a5aa-4110-b58b-fb535cf8c057\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"2f1c00af-588d-41ea-a4d1-1936edc3ce09\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6bed6927-571e-4985-8865-c1ef24ce1e0c\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_launch_smart_app_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.661-04:00"},{"id":"48199501-0520-407d-80a1-c5b2c27555a3","created_at":"2026-03-09T16:32:21.663-04:00","inputs":[{"name":"order_sign_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/48199501-0520-407d-80a1-c5b2c27555a3/io/inputs/order_sign_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_valid_instructions_card_received","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.663-04:00"},{"id":"9e8b67c7-2b2e-4707-b3b4-fe19dd3f1ede","created_at":"2026-03-09T16:32:21.667-04:00","inputs":[{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.667-04:00"},{"id":"7e846752-443b-4835-9f09-22fdabcfbb27","created_at":"2026-03-09T16:32:21.706-04:00","inputs":[{"name":"order_sign_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.706-04:00"},{"id":"b4290b8d-5cd8-4511-a870-7c139084d0cd","created_at":"2026-03-09T16:32:21.741-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b4290b8d-5cd8-4511-a870-7c139084d0cd/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_propose_alternate_request_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.741-04:00"},{"id":"b2979a0f-ba53-46b2-b9e6-f9463532bd92","created_at":"2026-03-09T16:32:21.773-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b2979a0f-ba53-46b2-b9e6-f9463532bd92/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_additional_orders_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.773-04:00"},{"id":"87cce7bd-2adb-4351-8dd8-ac2e98d58129","created_at":"2026-03-09T16:32:21.810-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/87cce7bd-2adb-4351-8dd8-ac2e98d58129/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_request_form_completion_response_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.810-04:00"},{"id":"f739ba59-eb79-4bb6-96a5-918d5e1c3073","created_at":"2026-03-09T16:32:21.851-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/f739ba59-eb79-4bb6-96a5-918d5e1c3073/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_create_or_update_coverage_info_response_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.851-04:00"},{"id":"d1232d58-a4ad-4c58-8b2d-804ad8d26d56","created_at":"2026-03-09T16:32:21.854-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_sign_service_ids","label":"Service id for the service that implements the `order-sign` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-sign-service","type":"text"},{"name":"order_sign_request_bodies","label":"Request body or bodies for invoking the `order-sign` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/d1232d58-a4ad-4c58-8b2d-804ad8d26d56/io/inputs/order_sign_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_sign","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.854-04:00"},{"id":"06ead793-ec68-44f8-9bd0-0fa1ea289a5d","created_at":"2026-03-09T16:32:33.481-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_external_reference_card_across_hooks_validation","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.481-04:00"},{"id":"c13b24b8-55ef-4f60-b748-cb1c817ee586","created_at":"2026-03-09T16:32:33.486-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_valid_instructions_card_received_across_hooks","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.486-04:00"},{"id":"5e6fc8dc-6a8f-4d47-bc09-f0a295bce990","created_at":"2026-03-09T16:32:33.490-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_coverage_info_system_action_across_hooks_validation","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.490-04:00"},{"id":"3e8fd3b7-d5c6-4096-9373-b30aa1fbfeb3","created_at":"2026-03-09T16:32:33.491-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.491-04:00"},{"id":"7e7368df-1439-4e1e-b2ba-8460468dd8d4","created_at":"2026-03-09T16:32:33.496-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.496-04:00"},{"id":"1d96683a-857d-4eb3-9f7e-78c6ce588436","created_at":"2026-03-09T16:32:33.498-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"fail","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","test_suite_id":"crd_server","updated_at":"2026-03-09T16:32:33.498-04:00"}] \ No newline at end of file diff --git a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_server_expected.json b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_server_expected.json index 539a6279..eacda79b 100644 --- a/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_server_expected.json +++ b/execution_scripts/client_vs_server/crd_v201_client_vs_server_suites_server_expected.json @@ -1 +1 @@ -[{"id":"061cf614-7717-42ce-8e58-e8b266926463","created_at":"2026-03-09T16:31:13.254-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"http://localhost:4567/custom/crd_client correctly denied SSL 2.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied SSL 3.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied TLS 1.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied TLS 1.1 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client denied TLS 1.2 connection.","type":"info"},{"message":"http://localhost:4567/custom/crd_client denied TLS 1.3 connection.","type":"info"}],"optional":false,"outputs":[],"requests":[],"result":"fail","result_message":"Server did not support any allowed TLS versions.","test_id":"crd_server-crd_server_discovery_group-crd_server_tls_version_stu2","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.254-04:00"},{"id":"3fdefa40-cd36-4b27-9b4a-1aafdb35c397","created_at":"2026-03-09T16:31:13.266-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"authentication_required","value":"no","type":"radio"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"cds_services","type":"text","value":"\n{\n \"services\": [\n {\n \"hook\": \"appointment-book\",\n \"title\": \"Appointment Booking CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when user of a CRD Client books a future appointment for a patient\",\n \"id\": \"appointment-book-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-start\",\n \"title\": \"Encounter Start CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when the user is initiating a new encounter.\",\n \"id\": \"encounter-start-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-discharge\",\n \"title\": \"Encounter Disharge CDS Service Example\",\n \"description\": \"An example of a CDS Service that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.\",\n \"id\": \"encounter-discharge-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-dispatch\",\n \"title\": \"Order Dispatch CDS Service Example\",\n \"description\": \"An example of a CDS Service that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer\",\n \"id\": \"order-dispatch-service\",\n \"prefetch\": {\n \"patient\": \"Patient/{{context.patientId}}\",\n \"performer\": \"{{context.performer}}\",\n \"order\": \"{{context.order}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-select\",\n \"title\": \"Order Select CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician selects one or more orders to place for a patient\",\n \"id\": \"order-select-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-sign\",\n \"title\": \"Order Sign CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician is ready to sign one or more orders for a patient\",\n \"id\": \"order-sign-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n }\n ]\n}"}],"requests":[{"id":"bbd13d61-1a7b-40f7-a659-704262db2048","direction":"outgoing","index":4484,"result_id":"3fdefa40-cd36-4b27-9b4a-1aafdb35c397","status":200,"timestamp":"2026-03-09T16:31:13.268-04:00","url":"http://localhost:4567/custom/crd_client/cds-services","verb":"get"}],"result":"pass","test_id":"crd_server-crd_server_discovery_group-crd_discovery_endpoint_test","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.266-04:00"},{"id":"40bb2306-d69c-4a53-9b60-0f2b8a64281d","created_at":"2026-03-09T16:31:13.277-04:00","inputs":[{"name":"cds_services","value":"\n{\n \"services\": [\n {\n \"hook\": \"appointment-book\",\n \"title\": \"Appointment Booking CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when user of a CRD Client books a future appointment for a patient\",\n \"id\": \"appointment-book-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-start\",\n \"title\": \"Encounter Start CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when the user is initiating a new encounter.\",\n \"id\": \"encounter-start-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-discharge\",\n \"title\": \"Encounter Disharge CDS Service Example\",\n \"description\": \"An example of a CDS Service that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.\",\n \"id\": \"encounter-discharge-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-dispatch\",\n \"title\": \"Order Dispatch CDS Service Example\",\n \"description\": \"An example of a CDS Service that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer\",\n \"id\": \"order-dispatch-service\",\n \"prefetch\": {\n \"patient\": \"Patient/{{context.patientId}}\",\n \"performer\": \"{{context.performer}}\",\n \"order\": \"{{context.order}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-select\",\n \"title\": \"Order Select CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician selects one or more orders to place for a patient\",\n \"id\": \"order-select-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-sign\",\n \"title\": \"Order Sign CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician is ready to sign one or more orders for a patient\",\n \"id\": \"order-sign-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n }\n ]\n}","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_service_ids","type":"text","value":"appointment-book-service"},{"name":"encounter_start_service_ids","type":"text","value":"encounter-start-service"},{"name":"encounter_discharge_service_ids","type":"text","value":"encounter-discharge-service"},{"name":"order_dispatch_service_ids","type":"text","value":"order-dispatch-service"},{"name":"order_select_service_ids","type":"text","value":"order-select-service"},{"name":"order_sign_service_ids","type":"text","value":"order-sign-service"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_discovery_group-crd_discovery_services_validation","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.277-04:00"},{"id":"1977065a-7212-4f3f-b11b-3bda0dc9bf4f","created_at":"2026-03-09T16:31:13.278-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"authentication_required","label":"Discovery endpoint requires authentication?","description":null,"value":"no","type":"radio"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"fail","test_group_id":"crd_server-crd_server_discovery_group","test_run_id":"d2100dde-a36c-44ce-bddb-5781200aeb75","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:13.278-04:00"},{"id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","created_at":"2026-03-09T16:31:16.730-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"any_hook_service_ids","value":null,"type":"text"},{"name":"any_hook_request_body","value":"{\n \"hookInstance\": \"d1577c69-dfbe-11ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Observation.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"total\": 2,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"125\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:52:09.983+00:00\",\n \"source\": \"#KIaKP1Pfw7EVpLjl\"\n },\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n },\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"126\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:55:17.405+00:00\",\n \"source\": \"#RTJWuip7OTKyTjG7\"\n },\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"CHECKUP\",\n \"display\": \"A routine check-up, such as an annual physical\"\n }\n ]\n },\n \"description\": \"Regular physical\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"prefetch\": { \n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"id\": \"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\n \"meta\": {\n \"lastUpdated\": \"2024-05-10T03:56:46.942+00:00\"\n },\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n }\n }\n}","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"appointment-book"}],"requests":[{"id":"bbd13d61-1a7b-40f7-a659-704262db2048","direction":"outgoing","index":4484,"result_id":"3fdefa40-cd36-4b27-9b4a-1aafdb35c397","status":200,"timestamp":"2026-03-09T16:31:13.268-04:00","url":"http://localhost:4567/custom/crd_client/cds-services","verb":"get"},{"id":"3d4faf47-1107-4d08-9e62-2f359de27e4e","direction":"outgoing","index":4488,"result_id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","status":200,"timestamp":"2026-03-09T16:31:16.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_call_test","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.730-04:00"},{"id":"46ca086b-056a-4b30-b75e-ad1aea11d8bf","created_at":"2026-03-09T16:31:16.748-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"any_hook_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"3d4faf47-1107-4d08-9e62-2f359de27e4e","direction":"outgoing","index":4488,"result_id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","status":200,"timestamp":"2026-03-09T16:31:16.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_request_required_fields_validation","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.748-04:00"},{"id":"ffd80285-9c07-4879-a29f-33bb37bfacf9","created_at":"2026-03-09T16:31:16.795-04:00","inputs":[{"name":"any_hook_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_request_context_validation","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.795-04:00"},{"id":"59efe7ae-129f-4842-be68-8272bafba807","created_at":"2026-03-09T16:31:16.803-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"any_hook_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"6548f2526e0aacd281e8c87e527eb9de432bd8dec5c9333a28b32b06be211074\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"227783cab0a9d2ee01e30c94964cb023fe8369508cc28200c64ffb355b2f50a2\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"},{"name":"any_hook_valid_cards","type":"text","value":"[{\"summary\":\"Appointment Book Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"a64911cc-7632-4f84-8997-73d8d5961b0f\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"478743dd-0c1c-4548-b9a6-7a21ac01fa06\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"de3c7cc0-2f70-4be6-bdbd-a30613cfd536\"},{\"summary\":\"Appointment Book Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"7782957f-a407-430f-9fff-e06cfc52fd24\"},{\"summary\":\"Appointment Book Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"6b1bef9f-b893-4d46-8617-3febed339b77\"}]"}],"requests":[{"id":"3d4faf47-1107-4d08-9e62-2f359de27e4e","direction":"outgoing","index":4488,"result_id":"098e1b1c-1d67-4701-a54d-c10d278f1ee6","status":200,"timestamp":"2026-03-09T16:31:16.733-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_response_validation","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.803-04:00"},{"id":"2c0cb848-5917-4010-9224-b041147a7966","created_at":"2026-03-09T16:31:16.806-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"any_hook_service_ids","label":"Service id to use for the \"Demonstrate a Hook Response\" test","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the hook indicated in the provided request body. If it cannot be inferred,\n the tests will be skipped.\n ","value":null,"type":"text"},{"name":"any_hook_request_body","label":"Request body to use for the \"Demonstrate a Hook Response\" test","description":"\n Provide a single JSON request body to submit for the hook invocation. The type of hook invoked\n will be inferred based on the `hook` element in the request.\n ","value":"{\n \"hookInstance\": \"d1577c69-dfbe-11ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Observation.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"total\": 2,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"125\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:52:09.983+00:00\",\n \"source\": \"#KIaKP1Pfw7EVpLjl\"\n },\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n },\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"126\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:55:17.405+00:00\",\n \"source\": \"#RTJWuip7OTKyTjG7\"\n },\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"CHECKUP\",\n \"display\": \"A routine check-up, such as an annual physical\"\n }\n ]\n },\n \"description\": \"Regular physical\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"prefetch\": { \n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"id\": \"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\n \"meta\": {\n \"lastUpdated\": \"2024-05-10T03:56:46.942+00:00\"\n },\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n }\n }\n}","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_demonstrate_hook_response","test_run_id":"b33f6fd9-c963-4deb-bc4f-c9c8eb78bcea","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:16.806-04:00"},{"id":"473dbd90-0228-498b-9d96-7772da798304","created_at":"2026-03-09T16:31:20.115-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"appointment_book_service_ids","value":"appointment-book-service","type":"text"},{"name":"appointment_book_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/473dbd90-0228-498b-9d96-7772da798304/io/inputs/appointment_book_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"appointment-book"}],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_call_test","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.115-04:00"},{"id":"34c7421f-1843-4cf1-8d47-553e79bc8929","created_at":"2026-03-09T16:31:20.154-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]"}],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_required_fields_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.154-04:00"},{"id":"6729f5c1-da67-45a5-9ffa-48f95c3404bd","created_at":"2026-03-09T16:31:20.211-04:00","inputs":[{"name":"appointment_book_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_context_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.211-04:00"},{"id":"7d2987a9-a339-4e44-9410-42d73d85a9be","created_at":"2026-03-09T16:31:20.218-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_optional_fields_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.218-04:00"},{"id":"305f7849-22d6-40b7-bc03-09cca0c79684","created_at":"2026-03-09T16:31:20.226-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"},{"name":"appointment_book_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/305f7849-22d6-40b7-bc03-09cca0c79684/io/outputs/appointment_book_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"8391220d-5e24-4af6-91bb-6e8b1356f6ee","direction":"outgoing","index":4497,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.121-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"47fc2ec6-de6e-4d6e-8f4c-54959d28814b","direction":"outgoing","index":4498,"result_id":"473dbd90-0228-498b-9d96-7772da798304","status":200,"timestamp":"2026-03-09T16:31:20.132-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_response_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.226-04:00"},{"id":"c063e2a8-aed8-466b-970d-e83635e3dbd4","created_at":"2026-03-09T16:31:20.233-04:00","inputs":[{"name":"appointment_book_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/c063e2a8-aed8-466b-970d-e83635e3dbd4/io/inputs/appointment_book_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"appointment_book_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c274144e-bee1-481e-9bfa-2ae8fc96c24b\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"b8ecdea6-207b-4f8e-8ef5-c3f1eb50bead\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"7b83835f-e630-4108-badd-f09019015605\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"ccf9f652-8c3b-4070-ac87-d4ed1cbdbe31\"}]"},{"name":"appointment_book_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/c063e2a8-aed8-466b-970d-e83635e3dbd4/io/outputs/appointment_book_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_card_optional_fields_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.233-04:00"},{"id":"88fc469a-0b5f-4544-a2db-dae38ea01050","created_at":"2026-03-09T16:31:20.234-04:00","inputs":[{"name":"appointment_book_valid_cards_with_links","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c274144e-bee1-481e-9bfa-2ae8fc96c24b\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"b8ecdea6-207b-4f8e-8ef5-c3f1eb50bead\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"7b83835f-e630-4108-badd-f09019015605\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"ccf9f652-8c3b-4070-ac87-d4ed1cbdbe31\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_external_reference_card_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.234-04:00"},{"id":"2cc7ea56-8e80-4e13-889c-9fd7b15220d5","created_at":"2026-03-09T16:31:20.235-04:00","inputs":[{"name":"appointment_book_valid_cards_with_links","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c274144e-bee1-481e-9bfa-2ae8fc96c24b\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"b8ecdea6-207b-4f8e-8ef5-c3f1eb50bead\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"7b83835f-e630-4108-badd-f09019015605\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"ccf9f652-8c3b-4070-ac87-d4ed1cbdbe31\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_launch_smart_app_card_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.235-04:00"},{"id":"cda7092c-cb6b-4f10-a49b-09a51190f266","created_at":"2026-03-09T16:31:20.237-04:00","inputs":[{"name":"appointment_book_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/cda7092c-cb6b-4f10-a49b-09a51190f266/io/inputs/appointment_book_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_valid_instructions_card_received","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.237-04:00"},{"id":"604222b4-e6e8-444e-9b8f-409e0aa0b8d3","created_at":"2026-03-09T16:31:20.240-04:00","inputs":[{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.240-04:00"},{"id":"e72d8fc7-cfa7-4378-b5d7-e75e23f2f197","created_at":"2026-03-09T16:31:20.301-04:00","inputs":[{"name":"appointment_book_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.301-04:00"},{"id":"a6b92b02-766b-4d53-bd15-82a70631126a","created_at":"2026-03-09T16:31:20.338-04:00","inputs":[{"name":"appointment_book_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/a6b92b02-766b-4d53-bd15-82a70631126a/io/inputs/appointment_book_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_request_form_completion_response_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.338-04:00"},{"id":"f0337950-2ba9-4b17-90c1-08d99de9c289","created_at":"2026-03-09T16:31:20.376-04:00","inputs":[{"name":"appointment_book_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/f0337950-2ba9-4b17-90c1-08d99de9c289/io/inputs/appointment_book_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0fb72bdeea3eb137dc1470dc87aad7cfca848d8e96b5d46f298f45aecf746e5a\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"eebc32d6145304baf1c64f45810f667011b9ea9ab68411c8073f951f4035ded7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"ef2ce318a669d25da48908c2b51216f9c279376ef4bb4b3db23355222d86b71c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_create_or_update_coverage_info_response_validation","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.376-04:00"},{"id":"672302c4-8f92-481b-a360-bafc29e32f44","created_at":"2026-03-09T16:31:20.379-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"appointment_book_service_ids","label":"Service id for the service that implements the `appointment-book` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"appointment-book-service","type":"text"},{"name":"appointment_book_request_bodies","label":"Request body or bodies for invoking the `appointment-book` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/672302c4-8f92-481b-a360-bafc29e32f44/io/inputs/appointment_book_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_appointment_book","test_run_id":"d5cf9c23-4c52-44a4-aa77-3255eca27eaf","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:20.379-04:00"},{"id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","created_at":"2026-03-09T16:31:32.290-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encounter_start_service_ids","value":"encounter-start-service","type":"text"},{"name":"encounter_start_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"encounter-start"}],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_call_test","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.290-04:00"},{"id":"51bbfd35-1e92-40d3-b2a7-b663a2e901b7","created_at":"2026-03-09T16:31:32.308-04:00","inputs":[{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"}],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_required_fields_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.308-04:00"},{"id":"f9112bc1-e7fa-49e0-b6e5-67f89fc3820e","created_at":"2026-03-09T16:31:32.310-04:00","inputs":[{"name":"encounter_start_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_context_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.310-04:00"},{"id":"aa01f723-a9e3-409c-9f53-b39c7a2822d9","created_at":"2026-03-09T16:31:32.314-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_optional_fields_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.314-04:00"},{"id":"c01015f9-77ac-486a-beb7-7a14478dc112","created_at":"2026-03-09T16:31:32.320-04:00","inputs":[{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"},{"name":"encounter_start_valid_cards","type":"text","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"8e78de7e-b0c0-45ca-ae12-7e47ede6174e\"}]"}],"requests":[{"id":"84ab1cf1-f002-4200-adf0-5e5a03dcac15","direction":"outgoing","index":4523,"result_id":"6d6005d5-9948-43f7-9fa2-85194eb8410f","status":200,"timestamp":"2026-03-09T16:31:32.293-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_response_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.320-04:00"},{"id":"c18210a6-b386-41b1-8920-b4bd65dc6134","created_at":"2026-03-09T16:31:32.325-04:00","inputs":[{"name":"encounter_start_valid_cards","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"8e78de7e-b0c0-45ca-ae12-7e47ede6174e\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_start_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"}]"},{"name":"encounter_start_valid_cards_with_suggestions","type":"text","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_card_optional_fields_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.325-04:00"},{"id":"47fcb0a9-8b6f-439f-9853-80e87d5e19b7","created_at":"2026-03-09T16:31:32.327-04:00","inputs":[{"name":"encounter_start_valid_cards_with_links","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_external_reference_card_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.327-04:00"},{"id":"cb7c4566-ed88-4cd1-a1a3-95551df87a98","created_at":"2026-03-09T16:31:32.328-04:00","inputs":[{"name":"encounter_start_valid_cards_with_links","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_launch_smart_app_card_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.328-04:00"},{"id":"403d289c-b976-49ed-be25-981c38a2b982","created_at":"2026-03-09T16:31:32.330-04:00","inputs":[{"name":"encounter_start_valid_cards","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"cd1175a6-14ac-49e0-a3c7-9dd0d664092f\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"77bdf0d8-c2f0-4ce9-b80c-7ecd4d476b5a\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"8e78de7e-b0c0-45ca-ae12-7e47ede6174e\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_valid_instructions_card_received","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.330-04:00"},{"id":"bf42821b-3dac-4a10-a8b0-11d3f581a74f","created_at":"2026-03-09T16:31:32.335-04:00","inputs":[{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_start_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.335-04:00"},{"id":"164c02de-75d2-4c03-b6c1-0bc674170103","created_at":"2026-03-09T16:31:32.375-04:00","inputs":[{"name":"encounter_start_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.375-04:00"},{"id":"418256b5-1c7c-4309-aa07-820f781e3acb","created_at":"2026-03-09T16:31:32.397-04:00","inputs":[{"name":"encounter_start_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"}]","type":"text"},{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_request_form_completion_response_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.397-04:00"},{"id":"cbcf9dc3-7bea-404c-80b5-dae508e5c5ec","created_at":"2026-03-09T16:31:32.424-04:00","inputs":[{"name":"encounter_start_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"ae397c28-4f3b-4105-8405-278ab64944c8\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"f205b615-e3dd-4c8f-a1ac-ae065cf2fd86\"}]","type":"text"},{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"61f913f0e2f199d70b954d017079308c1245b3f1322cfdaca77949b1ba980e4b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_create_or_update_coverage_info_response_validation","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.424-04:00"},{"id":"afc45c8c-be28-4d69-b80f-17baf15a2a12","created_at":"2026-03-09T16:31:32.427-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"encounter_start_service_ids","label":"Service id for the service that implements the `encounter-start` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"encounter-start-service","type":"text"},{"name":"encounter_start_request_bodies","label":"Request body or bodies for invoking the `encounter-start` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_encounter_start","test_run_id":"2e94f298-19f3-4bcc-82b1-7b2d4638d7df","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:32.427-04:00"},{"id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","created_at":"2026-03-09T16:31:44.487-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encounter_discharge_service_ids","value":"encounter-discharge-service","type":"text"},{"name":"encounter_discharge_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"encounter-discharge"}],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_call_test","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.487-04:00"},{"id":"535f090e-aa5a-42ab-990c-facc8607d9dd","created_at":"2026-03-09T16:31:44.504-04:00","inputs":[{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"}],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_required_fields_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.504-04:00"},{"id":"d6130fd6-4b9d-4db0-b128-50ff2ef3200b","created_at":"2026-03-09T16:31:44.506-04:00","inputs":[{"name":"encounter_discharge_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_context_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.506-04:00"},{"id":"74aaee61-0ff3-46a0-92da-da779a3c5fee","created_at":"2026-03-09T16:31:44.510-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_optional_fields_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.510-04:00"},{"id":"ee9af4d6-fbbc-4d0c-ad19-26fd78477138","created_at":"2026-03-09T16:31:44.527-04:00","inputs":[{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"},{"name":"encounter_discharge_valid_cards","type":"text","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"b3b4af8f-12f7-42fb-95d9-1f3da6697d1f\"}]"}],"requests":[{"id":"67a7f941-b3e6-42d2-8d9a-ed9417410d5f","direction":"outgoing","index":4535,"result_id":"3f2161c4-ba73-4d37-a678-a04ecf112be9","status":200,"timestamp":"2026-03-09T16:31:44.489-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_response_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.527-04:00"},{"id":"a7385eef-0659-460e-a1ac-6affe720d4b2","created_at":"2026-03-09T16:31:44.531-04:00","inputs":[{"name":"encounter_discharge_valid_cards","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"b3b4af8f-12f7-42fb-95d9-1f3da6697d1f\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_discharge_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"}]"},{"name":"encounter_discharge_valid_cards_with_suggestions","type":"text","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_card_optional_fields_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.531-04:00"},{"id":"29cce23e-7e19-4224-bbb7-2b468b01be32","created_at":"2026-03-09T16:31:44.533-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_links","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_external_reference_card_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.533-04:00"},{"id":"60c3af62-65c2-434c-97f0-f3fd1138d1fa","created_at":"2026-03-09T16:31:44.534-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_links","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_launch_smart_app_card_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.534-04:00"},{"id":"cf391f33-b4f2-426f-bc14-a57e72029a53","created_at":"2026-03-09T16:31:44.535-04:00","inputs":[{"name":"encounter_discharge_valid_cards","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3c20ddf4-0d66-4a8e-a78d-f4cacd865abf\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c3c0b25c-2a2d-42a1-97c7-552dc083260d\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"b3b4af8f-12f7-42fb-95d9-1f3da6697d1f\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_valid_instructions_card_received","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.535-04:00"},{"id":"c7b0d85e-59cb-4913-9800-1fbe393d2230","created_at":"2026-03-09T16:31:44.538-04:00","inputs":[{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_discharge_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.538-04:00"},{"id":"ff007ec3-e734-4aac-b6e9-905549b54181","created_at":"2026-03-09T16:31:44.574-04:00","inputs":[{"name":"encounter_discharge_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.574-04:00"},{"id":"77b56347-3aed-490d-9a0b-b9cb628afdbb","created_at":"2026-03-09T16:31:44.595-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"}]","type":"text"},{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_request_form_completion_response_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.595-04:00"},{"id":"de2fbae5-06f0-4500-98f8-cc907866b77a","created_at":"2026-03-09T16:31:44.630-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"474fd7be-0f86-41b6-99cc-4f97a407f7d7\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83ad0173-2e5b-4df5-8e6e-938d0be33e8f\"}]","type":"text"},{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_create_or_update_coverage_info_response_validation","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.630-04:00"},{"id":"d330dc68-8608-45ee-a456-e323245649f8","created_at":"2026-03-09T16:31:44.632-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"encounter_discharge_service_ids","label":"Service id for the service that implements the `encounter-discharge` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"encounter-discharge-service","type":"text"},{"name":"encounter_discharge_request_bodies","label":"Request body or bodies for invoking the `encounter-discharge` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge","test_run_id":"9b1461e7-2a6c-4cad-99f3-1def224b4aef","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:44.632-04:00"},{"id":"5c733716-9891-4d70-80fc-ca7af9ab2254","created_at":"2026-03-09T16:31:57.200-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_select_service_ids","value":"order-select-service","type":"text"},{"name":"order_select_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/5c733716-9891-4d70-80fc-ca7af9ab2254/io/inputs/order_select_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-select"}],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_call_test","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.200-04:00"},{"id":"ba567c0e-e160-462d-876f-514aeeee5c56","created_at":"2026-03-09T16:31:57.222-04:00","inputs":[{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_select_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]"}],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_required_fields_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.222-04:00"},{"id":"9774289b-cce1-4d65-b09b-7fd6980f5798","created_at":"2026-03-09T16:31:57.261-04:00","inputs":[{"name":"order_select_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_context_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.261-04:00"},{"id":"838e4205-a4b7-4514-bb9a-b6adf813f943","created_at":"2026-03-09T16:31:57.269-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":true,"outputs":[],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_optional_fields_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.269-04:00"},{"id":"6874b4a6-0b78-4167-a988-c0666af1d5c4","created_at":"2026-03-09T16:31:57.278-04:00","inputs":[{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_select_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]"},{"name":"order_select_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/6874b4a6-0b78-4167-a988-c0666af1d5c4/io/outputs/order_select_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"5b0543e2-49e1-4859-a463-4c6e0d825075","direction":"outgoing","index":4551,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.202-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"b6a24104-a7c7-4c1a-8677-189d62d26221","direction":"outgoing","index":4552,"result_id":"5c733716-9891-4d70-80fc-ca7af9ab2254","status":200,"timestamp":"2026-03-09T16:31:57.207-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_response_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.278-04:00"},{"id":"7483cc64-c76f-4ce4-9a0e-76afa379ba61","created_at":"2026-03-09T16:31:57.287-04:00","inputs":[{"name":"order_select_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/7483cc64-c76f-4ce4-9a0e-76afa379ba61/io/inputs/order_select_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_select_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"ccf8035f-d87c-4e09-8a0e-fc1a54515fee\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"d5d777c7-5ac1-4bd3-8299-14439be02605\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3abc5701-815f-41cf-b6cd-3329d822de02\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e3d6e93f-f42b-4b3d-b059-c64143dda90b\"}]"},{"name":"order_select_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/7483cc64-c76f-4ce4-9a0e-76afa379ba61/io/outputs/order_select_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_card_optional_fields_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.287-04:00"},{"id":"1c43fe34-76e5-4556-a2e5-c8adf689dd3e","created_at":"2026-03-09T16:31:57.288-04:00","inputs":[{"name":"order_select_valid_cards_with_links","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"ccf8035f-d87c-4e09-8a0e-fc1a54515fee\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"d5d777c7-5ac1-4bd3-8299-14439be02605\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3abc5701-815f-41cf-b6cd-3329d822de02\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e3d6e93f-f42b-4b3d-b059-c64143dda90b\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_external_reference_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.288-04:00"},{"id":"7cf00b5c-87d0-49bd-aa5f-e0b4a9d434a3","created_at":"2026-03-09T16:31:57.290-04:00","inputs":[{"name":"order_select_valid_cards_with_links","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"ccf8035f-d87c-4e09-8a0e-fc1a54515fee\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"d5d777c7-5ac1-4bd3-8299-14439be02605\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"3abc5701-815f-41cf-b6cd-3329d822de02\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e3d6e93f-f42b-4b3d-b059-c64143dda90b\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_launch_smart_app_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.290-04:00"},{"id":"bc97cd2e-3902-4cfe-93c8-7c1f2797dc60","created_at":"2026-03-09T16:31:57.291-04:00","inputs":[{"name":"order_select_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/bc97cd2e-3902-4cfe-93c8-7c1f2797dc60/io/inputs/order_select_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_valid_instructions_card_received","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.291-04:00"},{"id":"eb08d0d0-af15-42ed-860b-c1e6839b6ef0","created_at":"2026-03-09T16:31:57.295-04:00","inputs":[{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_select_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.295-04:00"},{"id":"ed6c2a41-f9ef-464d-afe2-ec29c73e8bea","created_at":"2026-03-09T16:31:57.335-04:00","inputs":[{"name":"order_select_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.335-04:00"},{"id":"438631dd-9b91-4232-948e-271d0971f3ec","created_at":"2026-03-09T16:31:57.375-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/438631dd-9b91-4232-948e-271d0971f3ec/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.dosageInstruction[0].doseAndRate[0].type: Reference to draft CodeSystem http://terminology.hl7.org/CodeSystem/dose-rate-type|1.0.0","type":"info"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_propose_alternate_request_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.375-04:00"},{"id":"0f888e44-b9dd-4885-9088-7e70384a8529","created_at":"2026-03-09T16:31:57.407-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/0f888e44-b9dd-4885-9088-7e70384a8529/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_additional_orders_card_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.407-04:00"},{"id":"05d3d7e8-3997-4987-8d6a-f2f4da76686b","created_at":"2026-03-09T16:31:57.444-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/05d3d7e8-3997-4987-8d6a-f2f4da76686b/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_request_form_completion_response_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.444-04:00"},{"id":"1e0176f1-c8fe-49c0-b120-a2cac859c3af","created_at":"2026-03-09T16:31:57.488-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/1e0176f1-c8fe-49c0-b120-a2cac859c3af/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"442cf32d83e248d956d64fbc4007d0c692c86187cb587c6e51ce408b5140daa5\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7e7d7147b1d5adaddd1b03c319c63c498ba758d2cc70261107ca8f1da719dec9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_create_or_update_coverage_info_response_validation","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.488-04:00"},{"id":"180dd38f-b610-425b-b3ed-bd9ff60364af","created_at":"2026-03-09T16:31:57.492-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_select_service_ids","label":"Service id for the service that implements the `order-select` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-select-service","type":"text"},{"name":"order_select_request_bodies","label":"Request body or bodies for invoking the `order-select` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/180dd38f-b610-425b-b3ed-bd9ff60364af/io/inputs/order_select_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_select","test_run_id":"cf893486-9c54-475e-86b6-0d26495d6e96","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:31:57.492-04:00"},{"id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","created_at":"2026-03-09T16:32:09.262-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_dispatch_service_ids","value":"order-dispatch-service","type":"text"},{"name":"order_dispatch_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"ServiceRequest/servreq-g0180-1\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"servreq-g0180-1\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"occurrenceDateTime\": \"2017-10-01\",\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/pra1234\"\n }\n ],\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ]\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"DeviceRequest/devreq015\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"devreq015\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"\n ]\n },\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ],\n \"status\": \"draft\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0424\",\n \"display\": \"Stationary Compressed Gaseous Oxygen System, Rental\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"intent\": \"original-order\",\n \"occurrenceTiming\": {\n \"repeat\": {\n \"boundsDuration\": {\n \"value\": 8,\n \"unit\": \"mo\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"mo\"\n }\n },\n \"code\": {\n \"text\": \"During sleep AND During exertion\"\n }\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/pra1234\"\n }\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-dispatch"}],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_call_test","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.262-04:00"},{"id":"e3c816cb-57c5-4b11-871d-545e89c9e6c0","created_at":"2026-03-09T16:32:09.299-04:00","inputs":[{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_contexts","type":"text","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]"}],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_required_fields_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.299-04:00"},{"id":"40ceff7a-23c8-4f2a-a5a3-5f2af60ddee2","created_at":"2026-03-09T16:32:09.302-04:00","inputs":[{"name":"order_dispatch_contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_context_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.302-04:00"},{"id":"fc22a42e-fe86-4508-a400-470a5d8ea7bd","created_at":"2026-03-09T16:32:09.305-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_optional_fields_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.305-04:00"},{"id":"e18ac60e-c955-414b-b07c-464a9ddcd049","created_at":"2026-03-09T16:32:09.316-04:00","inputs":[{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]"},{"name":"order_dispatch_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/e18ac60e-c955-414b-b07c-464a9ddcd049/io/outputs/order_dispatch_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"041d1707-244d-4a73-b02a-fd8d7b4830a5","direction":"outgoing","index":4569,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.277-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"9c59f5cc-e01d-425a-8b87-5f06c0905607","direction":"outgoing","index":4570,"result_id":"5daee27f-10f3-4ab2-9935-36ff8bd3a129","status":200,"timestamp":"2026-03-09T16:32:09.286-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_response_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.316-04:00"},{"id":"b471a3ee-dd04-4ea2-912a-74951e8911fe","created_at":"2026-03-09T16:32:09.323-04:00","inputs":[{"name":"order_dispatch_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b471a3ee-dd04-4ea2-912a-74951e8911fe/io/inputs/order_dispatch_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_dispatch_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d30febea-0a6b-4731-8d69-d6eb814e3a7d\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"2eebb852-36fa-4b80-9264-9b06637ae3e3\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"78d38315-1b44-4c9f-9d96-20f4e5644d26\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"59cc5363-4808-4921-accc-c448a7dfe477\"}]"},{"name":"order_dispatch_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b471a3ee-dd04-4ea2-912a-74951e8911fe/io/outputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_card_optional_fields_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.323-04:00"},{"id":"f59ca277-7044-4830-89f6-18e1307e2179","created_at":"2026-03-09T16:32:09.325-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_links","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d30febea-0a6b-4731-8d69-d6eb814e3a7d\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"2eebb852-36fa-4b80-9264-9b06637ae3e3\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"78d38315-1b44-4c9f-9d96-20f4e5644d26\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"59cc5363-4808-4921-accc-c448a7dfe477\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_external_reference_card_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.325-04:00"},{"id":"5c2deb35-200b-437b-9b8b-93fc2f62e789","created_at":"2026-03-09T16:32:09.327-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_links","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d30febea-0a6b-4731-8d69-d6eb814e3a7d\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"2eebb852-36fa-4b80-9264-9b06637ae3e3\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"78d38315-1b44-4c9f-9d96-20f4e5644d26\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"59cc5363-4808-4921-accc-c448a7dfe477\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_launch_smart_app_card_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.327-04:00"},{"id":"5f2b2502-ebf0-427b-8f60-a4421ae0b670","created_at":"2026-03-09T16:32:09.328-04:00","inputs":[{"name":"order_dispatch_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/5f2b2502-ebf0-427b-8f60-a4421ae0b670/io/inputs/order_dispatch_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_valid_instructions_card_received","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.328-04:00"},{"id":"688b9f0e-33c1-4ddc-8658-9bdbc8352375","created_at":"2026-03-09T16:32:09.331-04:00","inputs":[{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.331-04:00"},{"id":"e78727a4-7ec8-42aa-8c0c-45fc99cb9e17","created_at":"2026-03-09T16:32:09.385-04:00","inputs":[{"name":"order_dispatch_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.385-04:00"},{"id":"d07edbff-cc31-4064-a676-abebadf7a86a","created_at":"2026-03-09T16:32:09.429-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/d07edbff-cc31-4064-a676-abebadf7a86a/io/inputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_request_form_completion_response_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.429-04:00"},{"id":"2e4b66a9-7847-45f7-a1b7-ef22831d3336","created_at":"2026-03-09T16:32:09.473-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/2e4b66a9-7847-45f7-a1b7-ef22831d3336/io/inputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c3bb281a735757353482dbfd57db51d5bc7455e7b824dedc0312507ec486c032\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"966135fc0aa3d9f40530b927598e86c28ad9d57a5e3fe46e415ab60d4496242d\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_create_or_update_coverage_info_response_validation","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.473-04:00"},{"id":"4e468a66-bea6-4d9c-985d-701bf99a5c43","created_at":"2026-03-09T16:32:09.476-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_dispatch_service_ids","label":"Service id for the service that implements the `order-dispatch` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-dispatch-service","type":"text"},{"name":"order_dispatch_request_bodies","label":"Request body or bodies for invoking the `order-dispatch` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"ServiceRequest/servreq-g0180-1\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"servreq-g0180-1\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"occurrenceDateTime\": \"2017-10-01\",\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/pra1234\"\n }\n ],\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ]\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"DeviceRequest/devreq015\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"devreq015\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"\n ]\n },\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ],\n \"status\": \"draft\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0424\",\n \"display\": \"Stationary Compressed Gaseous Oxygen System, Rental\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"intent\": \"original-order\",\n \"occurrenceTiming\": {\n \"repeat\": {\n \"boundsDuration\": {\n \"value\": 8,\n \"unit\": \"mo\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"mo\"\n }\n },\n \"code\": {\n \"text\": \"During sleep AND During exertion\"\n }\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/pra1234\"\n }\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_dispatch","test_run_id":"66abb094-68e3-4f0b-aa06-6eb88e26eef2","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:09.476-04:00"},{"id":"e11fad61-6569-4451-baf0-412ae85d9489","created_at":"2026-03-09T16:32:21.539-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_sign_service_ids","value":"order-sign-service","type":"text"},{"name":"order_sign_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/e11fad61-6569-4451-baf0-412ae85d9489/io/inputs/order_sign_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-sign"}],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_call_test","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.539-04:00"},{"id":"c7f993d2-ddf7-4700-ba27-3a2d2695fd01","created_at":"2026-03-09T16:32:21.576-04:00","inputs":[{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]"}],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_required_fields_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.576-04:00"},{"id":"a181dc1f-0498-4a3d-8503-b8ff50fc5a50","created_at":"2026-03-09T16:32:21.621-04:00","inputs":[{"name":"order_sign_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_context_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.621-04:00"},{"id":"5203b4e2-dc09-44f7-b977-8f531a7d0679","created_at":"2026-03-09T16:32:21.633-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":true,"outputs":[],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_optional_fields_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.633-04:00"},{"id":"28e428e8-3482-43a0-8fad-1cdb421aeb5a","created_at":"2026-03-09T16:32:21.644-04:00","inputs":[{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]"},{"name":"order_sign_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/28e428e8-3482-43a0-8fad-1cdb421aeb5a/io/outputs/order_sign_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"b92b81ec-2621-4c95-b99e-47bb9cd2e0b0","direction":"outgoing","index":4592,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.542-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"0368bb3b-ee24-40ca-9fab-22133016f382","direction":"outgoing","index":4593,"result_id":"e11fad61-6569-4451-baf0-412ae85d9489","status":200,"timestamp":"2026-03-09T16:32:21.549-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_response_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.644-04:00"},{"id":"39dd4fea-648d-4690-a584-7e57e66aa256","created_at":"2026-03-09T16:32:21.655-04:00","inputs":[{"name":"order_sign_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/39dd4fea-648d-4690-a584-7e57e66aa256/io/inputs/order_sign_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_sign_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"fc76a6b0-b329-4a50-b98a-35e249c57fc6\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6d216c90-a5aa-4110-b58b-fb535cf8c057\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"2f1c00af-588d-41ea-a4d1-1936edc3ce09\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6bed6927-571e-4985-8865-c1ef24ce1e0c\"}]"},{"name":"order_sign_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/39dd4fea-648d-4690-a584-7e57e66aa256/io/outputs/order_sign_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_card_optional_fields_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.655-04:00"},{"id":"9b4db4b2-9b3b-4df3-9271-a2b864b70787","created_at":"2026-03-09T16:32:21.658-04:00","inputs":[{"name":"order_sign_valid_cards_with_links","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"fc76a6b0-b329-4a50-b98a-35e249c57fc6\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6d216c90-a5aa-4110-b58b-fb535cf8c057\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"2f1c00af-588d-41ea-a4d1-1936edc3ce09\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6bed6927-571e-4985-8865-c1ef24ce1e0c\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_external_reference_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.658-04:00"},{"id":"03f31de7-68aa-4b8f-b82e-1e15b482a9dc","created_at":"2026-03-09T16:32:21.661-04:00","inputs":[{"name":"order_sign_valid_cards_with_links","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"fc76a6b0-b329-4a50-b98a-35e249c57fc6\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6d216c90-a5aa-4110-b58b-fb535cf8c057\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"2f1c00af-588d-41ea-a4d1-1936edc3ce09\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"6bed6927-571e-4985-8865-c1ef24ce1e0c\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_launch_smart_app_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.661-04:00"},{"id":"48199501-0520-407d-80a1-c5b2c27555a3","created_at":"2026-03-09T16:32:21.663-04:00","inputs":[{"name":"order_sign_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/48199501-0520-407d-80a1-c5b2c27555a3/io/inputs/order_sign_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_valid_instructions_card_received","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.663-04:00"},{"id":"9e8b67c7-2b2e-4707-b3b4-fe19dd3f1ede","created_at":"2026-03-09T16:32:21.667-04:00","inputs":[{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.667-04:00"},{"id":"7e846752-443b-4835-9f09-22fdabcfbb27","created_at":"2026-03-09T16:32:21.706-04:00","inputs":[{"name":"order_sign_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.706-04:00"},{"id":"b4290b8d-5cd8-4511-a870-7c139084d0cd","created_at":"2026-03-09T16:32:21.741-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b4290b8d-5cd8-4511-a870-7c139084d0cd/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code.coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_propose_alternate_request_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.741-04:00"},{"id":"b2979a0f-ba53-46b2-b9e6-f9463532bd92","created_at":"2026-03-09T16:32:21.773-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/b2979a0f-ba53-46b2-b9e6-f9463532bd92/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_additional_orders_card_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.773-04:00"},{"id":"87cce7bd-2adb-4351-8dd8-ac2e98d58129","created_at":"2026-03-09T16:32:21.810-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/87cce7bd-2adb-4351-8dd8-ac2e98d58129/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_request_form_completion_response_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.810-04:00"},{"id":"f739ba59-eb79-4bb6-96a5-918d5e1c3073","created_at":"2026-03-09T16:32:21.851-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/f739ba59-eb79-4bb6-96a5-918d5e1c3073/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4444eac2af809df1b4e0b2dc0511307190385a18156893c15bc63a43ce0eed94\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"3d7873534a7107465e7671c2fdb13c2d8cd7d2869e6881b2aa2be372e179040c\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_create_or_update_coverage_info_response_validation","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.851-04:00"},{"id":"d1232d58-a4ad-4c58-8b2d-804ad8d26d56","created_at":"2026-03-09T16:32:21.854-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_sign_service_ids","label":"Service id for the service that implements the `order-sign` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-sign-service","type":"text"},{"name":"order_sign_request_bodies","label":"Request body or bodies for invoking the `order-sign` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/aNT2SEPv7P2/results/d1232d58-a4ad-4c58-8b2d-804ad8d26d56/io/inputs/order_sign_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_sign","test_run_id":"77751f42-2189-4eb9-ad75-34584cb281e1","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:21.854-04:00"},{"id":"06ead793-ec68-44f8-9bd0-0fa1ea289a5d","created_at":"2026-03-09T16:32:33.481-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_external_reference_card_across_hooks_validation","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.481-04:00"},{"id":"c13b24b8-55ef-4f60-b748-cb1c817ee586","created_at":"2026-03-09T16:32:33.486-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_valid_instructions_card_received_across_hooks","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.486-04:00"},{"id":"5e6fc8dc-6a8f-4d47-bc09-f0a295bce990","created_at":"2026-03-09T16:32:33.490-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_coverage_info_system_action_across_hooks_validation","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.490-04:00"},{"id":"3e8fd3b7-d5c6-4096-9373-b30aa1fbfeb3","created_at":"2026-03-09T16:32:33.491-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.491-04:00"},{"id":"7e7368df-1439-4e1e-b2ba-8460468dd8d4","created_at":"2026-03-09T16:32:33.496-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","updated_at":"2026-03-09T16:32:33.496-04:00"},{"id":"1d96683a-857d-4eb3-9f7e-78c6ce588436","created_at":"2026-03-09T16:32:33.498-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"fail","test_run_id":"1dccf4bc-3eda-4e00-923e-a246d4ad3288","test_session_id":"aNT2SEPv7P2","test_suite_id":"crd_server","updated_at":"2026-03-09T16:32:33.498-04:00"}] \ No newline at end of file +[{"id":"53f96dfc-1b22-4d70-bd04-7e607bb193ee","created_at":"2026-03-12T13:39:43.344-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"http://localhost:4567/custom/crd_client correctly denied SSL 2.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied SSL 3.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied TLS 1.0 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client correctly denied TLS 1.1 connection as required.","type":"info"},{"message":"http://localhost:4567/custom/crd_client denied TLS 1.2 connection.","type":"info"},{"message":"http://localhost:4567/custom/crd_client denied TLS 1.3 connection.","type":"info"}],"optional":false,"outputs":[],"requests":[],"result":"fail","result_message":"Server did not support any allowed TLS versions.","test_id":"crd_server-crd_server_discovery_group-crd_server_tls_version_stu2","test_run_id":"d0f53cf3-5d15-4090-9755-47b1b6f67e91","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:43.344-04:00"},{"id":"83bde756-84c4-4a14-bf92-6f8af307065c","created_at":"2026-03-12T13:39:43.355-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"authentication_required","value":"no","type":"radio"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"cds_services","type":"text","value":"\n{\n \"services\": [\n {\n \"hook\": \"appointment-book\",\n \"title\": \"Appointment Booking CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when user of a CRD Client books a future appointment for a patient\",\n \"id\": \"appointment-book-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-start\",\n \"title\": \"Encounter Start CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when the user is initiating a new encounter.\",\n \"id\": \"encounter-start-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-discharge\",\n \"title\": \"Encounter Disharge CDS Service Example\",\n \"description\": \"An example of a CDS Service that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.\",\n \"id\": \"encounter-discharge-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-dispatch\",\n \"title\": \"Order Dispatch CDS Service Example\",\n \"description\": \"An example of a CDS Service that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer\",\n \"id\": \"order-dispatch-service\",\n \"prefetch\": {\n \"patient\": \"Patient/{{context.patientId}}\",\n \"performer\": \"{{context.performer}}\",\n \"order\": \"{{context.order}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-select\",\n \"title\": \"Order Select CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician selects one or more orders to place for a patient\",\n \"id\": \"order-select-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-sign\",\n \"title\": \"Order Sign CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician is ready to sign one or more orders for a patient\",\n \"id\": \"order-sign-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n }\n ]\n}"}],"requests":[{"id":"4e52bf66-de31-4313-8e94-30621cc8a9c4","direction":"outgoing","index":6217,"result_id":"83bde756-84c4-4a14-bf92-6f8af307065c","status":200,"timestamp":"2026-03-12T13:39:43.356-04:00","url":"http://localhost:4567/custom/crd_client/cds-services","verb":"get"}],"result":"pass","test_id":"crd_server-crd_server_discovery_group-crd_discovery_endpoint_test","test_run_id":"d0f53cf3-5d15-4090-9755-47b1b6f67e91","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:43.355-04:00"},{"id":"f92f0428-265e-4169-b671-9efa7b832ce4","created_at":"2026-03-12T13:39:43.373-04:00","inputs":[{"name":"cds_services","value":"\n{\n \"services\": [\n {\n \"hook\": \"appointment-book\",\n \"title\": \"Appointment Booking CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when user of a CRD Client books a future appointment for a patient\",\n \"id\": \"appointment-book-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-start\",\n \"title\": \"Encounter Start CDS Service\",\n \"description\": \"An example of a CDS Service that is invoked when the user is initiating a new encounter.\",\n \"id\": \"encounter-start-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"encounter-discharge\",\n \"title\": \"Encounter Disharge CDS Service Example\",\n \"description\": \"An example of a CDS Service that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.\",\n \"id\": \"encounter-discharge-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"encounter\": \"Encounter/{{context.encounterId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-dispatch\",\n \"title\": \"Order Dispatch CDS Service Example\",\n \"description\": \"An example of a CDS Service that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer\",\n \"id\": \"order-dispatch-service\",\n \"prefetch\": {\n \"patient\": \"Patient/{{context.patientId}}\",\n \"performer\": \"{{context.performer}}\",\n \"order\": \"{{context.order}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-select\",\n \"title\": \"Order Select CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician selects one or more orders to place for a patient\",\n \"id\": \"order-select-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n },\n {\n \"hook\": \"order-sign\",\n \"title\": \"Order Sign CDS Service\",\n \"description\": \"An example of a CDS Service that fires when a clinician is ready to sign one or more orders for a patient\",\n \"id\": \"order-sign-service\",\n \"prefetch\": {\n \"user\": \"{{context.userId}}\",\n \"patient\": \"Patient/{{context.patientId}}\",\n \"coverage\": \"Coverage?patient={{context.patientId}}\u0026status=active\"\n }\n }\n ]\n}","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_service_ids","type":"text","value":"appointment-book-service"},{"name":"encounter_start_service_ids","type":"text","value":"encounter-start-service"},{"name":"encounter_discharge_service_ids","type":"text","value":"encounter-discharge-service"},{"name":"order_dispatch_service_ids","type":"text","value":"order-dispatch-service"},{"name":"order_select_service_ids","type":"text","value":"order-select-service"},{"name":"order_sign_service_ids","type":"text","value":"order-sign-service"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_discovery_group-crd_discovery_services_validation","test_run_id":"d0f53cf3-5d15-4090-9755-47b1b6f67e91","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:43.373-04:00"},{"id":"fc59bd39-bc2c-4381-bf41-815e1b8a6933","created_at":"2026-03-12T13:39:43.376-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"authentication_required","label":"Discovery endpoint requires authentication?","description":null,"value":"no","type":"radio"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"fail","test_group_id":"crd_server-crd_server_discovery_group","test_run_id":"d0f53cf3-5d15-4090-9755-47b1b6f67e91","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:43.376-04:00"},{"id":"3e48c41e-0f63-4d7c-b793-9d6b9acc7f63","created_at":"2026-03-12T13:39:46.745-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"any_hook_service_ids","value":null,"type":"text"},{"name":"any_hook_request_body","value":"{\n \"hookInstance\": \"d1577c69-dfbe-11ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Observation.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"total\": 2,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"125\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:52:09.983+00:00\",\n \"source\": \"#KIaKP1Pfw7EVpLjl\"\n },\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n },\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"126\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:55:17.405+00:00\",\n \"source\": \"#RTJWuip7OTKyTjG7\"\n },\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"CHECKUP\",\n \"display\": \"A routine check-up, such as an annual physical\"\n }\n ]\n },\n \"description\": \"Regular physical\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"prefetch\": { \n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"id\": \"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\n \"meta\": {\n \"lastUpdated\": \"2024-05-10T03:56:46.942+00:00\"\n },\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n }\n }\n}","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"appointment-book"}],"requests":[{"id":"4e52bf66-de31-4313-8e94-30621cc8a9c4","direction":"outgoing","index":6217,"result_id":"83bde756-84c4-4a14-bf92-6f8af307065c","status":200,"timestamp":"2026-03-12T13:39:43.356-04:00","url":"http://localhost:4567/custom/crd_client/cds-services","verb":"get"},{"id":"6ec32085-59a8-4917-8ce6-7febc738ad3e","direction":"outgoing","index":6221,"result_id":"3e48c41e-0f63-4d7c-b793-9d6b9acc7f63","status":200,"timestamp":"2026-03-12T13:39:46.748-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_call_test","test_run_id":"a63939ab-02f2-440a-bc36-8f962b3fa1dc","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:46.745-04:00"},{"id":"d1e0c50a-4f83-4be0-901d-8c1249a3d86e","created_at":"2026-03-12T13:39:46.766-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"any_hook_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}}]"}],"requests":[{"id":"6ec32085-59a8-4917-8ce6-7febc738ad3e","direction":"outgoing","index":6221,"result_id":"3e48c41e-0f63-4d7c-b793-9d6b9acc7f63","status":200,"timestamp":"2026-03-12T13:39:46.748-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_request_required_fields_validation","test_run_id":"a63939ab-02f2-440a-bc36-8f962b3fa1dc","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:46.766-04:00"},{"id":"6edc9071-2f52-4384-b5ce-46df327a23c4","created_at":"2026-03-12T13:39:46.889-04:00","inputs":[{"name":"any_hook_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"link\":[{\"relation\":\"self\",\"url\":\"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"}],\"entry\":[{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]},\"search\":{\"mode\":\"match\"}},{\"fullUrl\":\"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]},\"search\":{\"mode\":\"match\"}}]}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_request_context_validation","test_run_id":"a63939ab-02f2-440a-bc36-8f962b3fa1dc","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:46.889-04:00"},{"id":"35250103-ade2-4852-872f-ee7679972c5a","created_at":"2026-03-12T13:39:46.898-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"any_hook_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:52:09.983+00:00\",\"source\":\"#KIaKP1Pfw7EVpLjl\"},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"fbea410fcba7b8074013541f99fc586ddfcf25aee43249642325819034c37d0e\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2024-05-10T03:55:17.405+00:00\",\"source\":\"#RTJWuip7OTKyTjG7\"},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"e1f7b83e89bed99057759e0db35ae279e13d28229e7ed14e8c054a51891f5d62\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"},{"name":"any_hook_valid_cards","type":"text","value":"[{\"summary\":\"Appointment Book Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-12\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"0b0cc068-befe-435c-a02e-051e4c312b5a\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"0ce7d954-91f7-4af4-a88f-38ac00a918dc\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e4f92b90-7c1d-4d91-8898-2a716f329210\"},{\"summary\":\"Appointment Book Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-12\",\"end\":\"2026-04-12\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"0ed3f0e2-a8b0-4c34-bf17-a8e833feae18\"},{\"summary\":\"Appointment Book Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"f560b488-09a5-4791-9347-7e5bc896025b\"}]"}],"requests":[{"id":"6ec32085-59a8-4917-8ce6-7febc738ad3e","direction":"outgoing","index":6221,"result_id":"3e48c41e-0f63-4d7c-b793-9d6b9acc7f63","status":200,"timestamp":"2026-03-12T13:39:46.748-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_demonstrate_hook_response-crd_service_response_validation","test_run_id":"a63939ab-02f2-440a-bc36-8f962b3fa1dc","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:46.898-04:00"},{"id":"cc03a47f-1429-487d-a91e-5a4d8f0b0d79","created_at":"2026-03-12T13:39:46.901-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"any_hook_service_ids","label":"Service id to use for the \"Demonstrate a Hook Response\" test","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the hook indicated in the provided request body. If it cannot be inferred,\n the tests will be skipped.\n ","value":null,"type":"text"},{"name":"any_hook_request_body","label":"Request body to use for the \"Demonstrate a Hook Response\" test","description":"\n Provide a single JSON request body to submit for the hook invocation. The type of hook invoked\n will be inferred based on the `hook` element in the request.\n ","value":"{\n \"hookInstance\": \"d1577c69-dfbe-11ad-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"appointment-book\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Observation.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\",\n \"appointments\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"collection\",\n \"total\": 2,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Appointment?patient=pat014\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/125\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"125\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:52:09.983+00:00\",\n \"source\": \"#KIaKP1Pfw7EVpLjl\"\n },\n \"status\": \"proposed\",\n \"serviceType\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/service-type\",\n \"code\": \"183\",\n \"display\": \"Sleep Medicine\"\n }\n ]\n }\n ],\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"FOLLOWUP\",\n \"display\": \"A follow up visit from a previous appointment\"\n }\n ]\n },\n \"description\": \"CPAP adjustments\",\n \"start\": \"2019-08-10T09:00:00Z\",\n \"end\": \"2019-08-10T11:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2020-05-23\",\n \"end\": \"2020-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n },\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Appointment/126\",\n \"resource\": {\n \"resourceType\": \"Appointment\",\n \"id\": \"126\",\n \"meta\": {\n \"versionId\": \"1\",\n \"lastUpdated\": \"2024-05-10T03:55:17.405+00:00\",\n \"source\": \"#RTJWuip7OTKyTjG7\"\n },\n \"status\": \"proposed\",\n \"appointmentType\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0276\",\n \"code\": \"CHECKUP\",\n \"display\": \"A routine check-up, such as an annual physical\"\n }\n ]\n },\n \"description\": \"Regular physical\",\n \"start\": \"2020-08-01T11:00:00Z\",\n \"end\": \"2020-08-01T13:00:00Z\",\n \"created\": \"2019-08-01\",\n \"participant\": [\n {\n \"actor\": {\n \"reference\": \"Patient/pat015\"\n },\n \"required\": \"required\",\n \"status\": \"tentative\"\n },\n {\n \"actor\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"required\": \"required\",\n \"status\": \"accepted\"\n }\n ],\n \"requestedPeriod\": [\n {\n \"start\": \"2021-05-23\",\n \"end\": \"2021-05-23\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"prefetch\": { \n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n },\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"id\": \"5b0be74e-9f57-4d11-a5e9-ec05fe9af42c\",\n \"meta\": {\n \"lastUpdated\": \"2024-05-10T03:56:46.942+00:00\"\n },\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n }\n },\n \"extension\": {\n \"davinci-crd.configuration\": {\n \"coverage\": true,\n \"max-cards\": 10\n }\n }\n}","type":"textarea"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_demonstrate_hook_response","test_run_id":"a63939ab-02f2-440a-bc36-8f962b3fa1dc","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:46.901-04:00"},{"id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","created_at":"2026-03-12T13:39:50.305-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"appointment_book_service_ids","value":"appointment-book-service","type":"text"},{"name":"appointment_book_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/e31ff28b-4487-4d6f-afd7-277d9086ab7e/io/inputs/appointment_book_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"appointment-book"}],"requests":[{"id":"2832f15a-5238-421a-a9bf-db71e61fb650","direction":"outgoing","index":6230,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.308-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"20eb7dbb-3799-4b0f-bb90-a3e2322e94a4","direction":"outgoing","index":6231,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.327-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_call_test","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:50.305-04:00"},{"id":"617ece81-946e-476e-ac68-bf8ac62c4410","created_at":"2026-03-12T13:39:50.360-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]"}],"requests":[{"id":"2832f15a-5238-421a-a9bf-db71e61fb650","direction":"outgoing","index":6230,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.308-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"20eb7dbb-3799-4b0f-bb90-a3e2322e94a4","direction":"outgoing","index":6231,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.327-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_required_fields_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:50.360-04:00"},{"id":"6d2a5793-9f7c-4ec3-a391-290b384949c0","created_at":"2026-03-12T13:39:52.956-04:00","inputs":[{"name":"appointment_book_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":1,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"124\",\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"appointments\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"total\":2,\"entry\":[{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"125\",\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}]}},{\"resource\":{\"resourceType\":\"Appointment\",\"id\":\"126\",\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}]}}]}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_context_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.956-04:00"},{"id":"17ab22d8-ba7f-4f10-abb9-8ac9df726f95","created_at":"2026-03-12T13:39:52.970-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"2832f15a-5238-421a-a9bf-db71e61fb650","direction":"outgoing","index":6230,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.308-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"20eb7dbb-3799-4b0f-bb90-a3e2322e94a4","direction":"outgoing","index":6231,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.327-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_request_optional_fields_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.970-04:00"},{"id":"f16fe977-82ec-44e7-93a6-c1790b0b4eda","created_at":"2026-03-12T13:39:52.981-04:00","inputs":[{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"863de0e9aaf491b275f1452ac80b30630293ee4f6a1e72530c7080bd4c630c41\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"a6453e4e68cc1f0e752aea2f99e375bdd472243511024404c80291165ad89b1e\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"079f2a8f7e3277564ae3275e0a32033caa1334990d7cfe6809802fad765b7f40\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"},{"name":"appointment_book_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/f16fe977-82ec-44e7-93a6-c1790b0b4eda/io/outputs/appointment_book_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"2832f15a-5238-421a-a9bf-db71e61fb650","direction":"outgoing","index":6230,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.308-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"},{"id":"20eb7dbb-3799-4b0f-bb90-a3e2322e94a4","direction":"outgoing","index":6231,"result_id":"e31ff28b-4487-4d6f-afd7-277d9086ab7e","status":200,"timestamp":"2026-03-12T13:39:50.327-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/appointment-book-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_service_response_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.981-04:00"},{"id":"6fff583f-2617-4b3e-90e4-a4646f8333ad","created_at":"2026-03-12T13:39:52.989-04:00","inputs":[{"name":"appointment_book_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/6fff583f-2617-4b3e-90e4-a4646f8333ad/io/inputs/appointment_book_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"appointment_book_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"a5a2cabf-7c92-4b31-be70-7231561a891e\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"f07c8320-a42c-4e8f-8eff-b5038a7224c6\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d56ecee5-13d3-4007-9eb8-7b101190e315\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"4c0ec5a8-186d-478f-b59e-73e5e483e49f\"}]"},{"name":"appointment_book_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/6fff583f-2617-4b3e-90e4-a4646f8333ad/io/outputs/appointment_book_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_card_optional_fields_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.989-04:00"},{"id":"0aa42ede-4024-42b5-b473-3f377db73fea","created_at":"2026-03-12T13:39:52.992-04:00","inputs":[{"name":"appointment_book_valid_cards_with_links","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"a5a2cabf-7c92-4b31-be70-7231561a891e\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"f07c8320-a42c-4e8f-8eff-b5038a7224c6\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d56ecee5-13d3-4007-9eb8-7b101190e315\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"4c0ec5a8-186d-478f-b59e-73e5e483e49f\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_external_reference_card_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.992-04:00"},{"id":"4167dc31-33f1-4a88-9e62-0e353295ed55","created_at":"2026-03-12T13:39:52.993-04:00","inputs":[{"name":"appointment_book_valid_cards_with_links","value":"[{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"a5a2cabf-7c92-4b31-be70-7231561a891e\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"f07c8320-a42c-4e8f-8eff-b5038a7224c6\"},{\"summary\":\"Appointment Book Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d56ecee5-13d3-4007-9eb8-7b101190e315\"},{\"summary\":\"Appointment Book External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"4c0ec5a8-186d-478f-b59e-73e5e483e49f\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_launch_smart_app_card_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.993-04:00"},{"id":"c1c41eb3-2c4c-461a-bfb5-36a3946c7998","created_at":"2026-03-12T13:39:52.995-04:00","inputs":[{"name":"appointment_book_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/c1c41eb3-2c4c-461a-bfb5-36a3946c7998/io/inputs/appointment_book_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_valid_instructions_card_received","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.995-04:00"},{"id":"1746dbae-ced3-47f9-9def-0ab8b21f6c7a","created_at":"2026-03-12T13:39:52.999-04:00","inputs":[{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"863de0e9aaf491b275f1452ac80b30630293ee4f6a1e72530c7080bd4c630c41\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"a6453e4e68cc1f0e752aea2f99e375bdd472243511024404c80291165ad89b1e\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"079f2a8f7e3277564ae3275e0a32033caa1334990d7cfe6809802fad765b7f40\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"invoked_hook","value":"appointment-book","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"appointment_book_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"863de0e9aaf491b275f1452ac80b30630293ee4f6a1e72530c7080bd4c630c41\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"a6453e4e68cc1f0e752aea2f99e375bdd472243511024404c80291165ad89b1e\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"079f2a8f7e3277564ae3275e0a32033caa1334990d7cfe6809802fad765b7f40\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:52.999-04:00"},{"id":"42173e75-838d-4254-beda-cc1a27be4e81","created_at":"2026-03-12T13:39:53.174-04:00","inputs":[{"name":"appointment_book_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"863de0e9aaf491b275f1452ac80b30630293ee4f6a1e72530c7080bd4c630c41\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"a6453e4e68cc1f0e752aea2f99e375bdd472243511024404c80291165ad89b1e\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"079f2a8f7e3277564ae3275e0a32033caa1334990d7cfe6809802fad765b7f40\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Appointment/124: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/125: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Appointment/126: Appointment: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:53.174-04:00"},{"id":"5b6c3b6d-f250-4542-94e5-2b81e8665bb6","created_at":"2026-03-12T13:39:53.798-04:00","inputs":[{"name":"appointment_book_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/5b6c3b6d-f250-4542-94e5-2b81e8665bb6/io/inputs/appointment_book_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"863de0e9aaf491b275f1452ac80b30630293ee4f6a1e72530c7080bd4c630c41\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"a6453e4e68cc1f0e752aea2f99e375bdd472243511024404c80291165ad89b1e\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"079f2a8f7e3277564ae3275e0a32033caa1334990d7cfe6809802fad765b7f40\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_request_form_completion_response_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:53.798-04:00"},{"id":"685e01fa-7c1b-4763-8d19-f41ff6a1dbfb","created_at":"2026-03-12T13:39:53.880-04:00","inputs":[{"name":"appointment_book_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/685e01fa-7c1b-4763-8d19-f41ff6a1dbfb/io/inputs/appointment_book_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"appointment_book_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"124\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"863de0e9aaf491b275f1452ac80b30630293ee4f6a1e72530c7080bd4c630c41\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceCategory\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-category\",\"code\":\"17\",\"display\":\"General Practice\"}]}],\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"124\",\"display\":\"General Practice\"}]}],\"specialty\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"394814009\",\"display\":\"General practice (specialty)\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"reasonReference\":[{\"reference\":\"Condition/cond015a\",\"display\":\"Heart problem\"}],\"priority\":5,\"description\":\"Discussion on the results of your recent MRI\",\"start\":\"2013-12-10T09:00:00Z\",\"end\":\"2013-12-10T11:00:00Z\",\"created\":\"2013-10-10\",\"comment\":\"Further expand on the results of the MRI and determine the next actions that may be appropriate.\",\"basedOn\":[{\"reference\":\"ServiceRequest/servreq-g0180-1\"}],\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"accepted\"},{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"ATND\"}]}],\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"},{\"actor\":{\"reference\":\"Location/us-core-client-tests-location\",\"display\":\"South Wing, second floor\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-11-01\",\"end\":\"2020-12-15\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"125\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"a6453e4e68cc1f0e752aea2f99e375bdd472243511024404c80291165ad89b1e\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"serviceType\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/service-type\",\"code\":\"183\",\"display\":\"Sleep Medicine\"}]}],\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"FOLLOWUP\",\"display\":\"A follow up visit from a previous appointment\"}]},\"description\":\"CPAP adjustments\",\"start\":\"2019-08-10T09:00:00Z\",\"end\":\"2019-08-10T11:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2020-05-23\",\"end\":\"2020-05-23\"}],\"resourceType\":\"Appointment\"}},{\"type\":\"update\",\"description\":\"Added coverage information to Appointment resource.\",\"resource\":{\"id\":\"126\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"079f2a8f7e3277564ae3275e0a32033caa1334990d7cfe6809802fad765b7f40\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"proposed\",\"appointmentType\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0276\",\"code\":\"CHECKUP\",\"display\":\"A routine check-up, such as an annual physical\"}]},\"description\":\"Regular physical\",\"start\":\"2020-08-01T11:00:00Z\",\"end\":\"2020-08-01T13:00:00Z\",\"created\":\"2019-08-01\",\"participant\":[{\"actor\":{\"reference\":\"Patient/pat015\"},\"required\":\"required\",\"status\":\"tentative\"},{\"actor\":{\"reference\":\"Practitioner/pra1234\"},\"required\":\"required\",\"status\":\"accepted\"}],\"requestedPeriod\":[{\"start\":\"2021-05-23\",\"end\":\"2021-05-23\"}],\"resourceType\":\"Appointment\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_appointment_book-crd_create_or_update_coverage_info_response_validation","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:53.880-04:00"},{"id":"92894b8b-2127-41c3-97ee-bb2546537204","created_at":"2026-03-12T13:39:53.885-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"appointment_book_service_ids","label":"Service id for the service that implements the `appointment-book` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"appointment-book-service","type":"text"},{"name":"appointment_book_request_bodies","label":"Request body or bodies for invoking the `appointment-book` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/92894b8b-2127-41c3-97ee-bb2546537204/io/inputs/appointment_book_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_appointment_book","test_run_id":"a1436d43-9379-4e0e-a4ad-5701c067ac20","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:39:53.885-04:00"},{"id":"d88f0958-1688-46ba-a632-355f156cb522","created_at":"2026-03-12T13:40:08.399-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encounter_start_service_ids","value":"encounter-start-service","type":"text"},{"name":"encounter_start_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"encounter-start"}],"requests":[{"id":"ed0c01ed-eaca-470d-b367-3dde30d4d552","direction":"outgoing","index":6256,"result_id":"d88f0958-1688-46ba-a632-355f156cb522","status":200,"timestamp":"2026-03-12T13:40:08.401-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_call_test","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.399-04:00"},{"id":"1ca196a9-bb58-48bd-a587-0b9d914857df","created_at":"2026-03-12T13:40:08.422-04:00","inputs":[{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"}],"requests":[{"id":"ed0c01ed-eaca-470d-b367-3dde30d4d552","direction":"outgoing","index":6256,"result_id":"d88f0958-1688-46ba-a632-355f156cb522","status":200,"timestamp":"2026-03-12T13:40:08.401-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_required_fields_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.422-04:00"},{"id":"9cf42a3e-2598-4e37-95e5-e373c4bfc372","created_at":"2026-03-12T13:40:08.426-04:00","inputs":[{"name":"encounter_start_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_context_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.426-04:00"},{"id":"d2912d52-3b20-4493-bbc1-4086662b1885","created_at":"2026-03-12T13:40:08.429-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"ed0c01ed-eaca-470d-b367-3dde30d4d552","direction":"outgoing","index":6256,"result_id":"d88f0958-1688-46ba-a632-355f156cb522","status":200,"timestamp":"2026-03-12T13:40:08.401-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_request_optional_fields_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.429-04:00"},{"id":"7148099c-4fa5-4510-b2d4-e691001d6f4c","created_at":"2026-03-12T13:40:08.434-04:00","inputs":[{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_start_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"5bcca895a1f669dde39c19a80e806c1120dbc510807ad42bb8eba6e5aece379b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"},{"name":"encounter_start_valid_cards","type":"text","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-12\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"12dc0831-0c96-46bc-919a-4e8d01cfcfc6\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dce4fe7a-e241-4486-8d35-63c255ae0e3e\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e5067950-7900-489f-bdd1-575adbc7ee88\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-12\",\"end\":\"2026-04-12\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"da563ad1-36ac-4b96-aef0-0883cee989f4\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"a9748975-6bce-41b0-b135-0b5a39c3eafa\"}]"}],"requests":[{"id":"ed0c01ed-eaca-470d-b367-3dde30d4d552","direction":"outgoing","index":6256,"result_id":"d88f0958-1688-46ba-a632-355f156cb522","status":200,"timestamp":"2026-03-12T13:40:08.401-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-start-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_service_response_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.434-04:00"},{"id":"deb01f85-1ac5-45cc-a8d5-5ccc5283d955","created_at":"2026-03-12T13:40:08.440-04:00","inputs":[{"name":"encounter_start_valid_cards","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-12\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"12dc0831-0c96-46bc-919a-4e8d01cfcfc6\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dce4fe7a-e241-4486-8d35-63c255ae0e3e\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e5067950-7900-489f-bdd1-575adbc7ee88\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-12\",\"end\":\"2026-04-12\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"da563ad1-36ac-4b96-aef0-0883cee989f4\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"a9748975-6bce-41b0-b135-0b5a39c3eafa\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_start_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dce4fe7a-e241-4486-8d35-63c255ae0e3e\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e5067950-7900-489f-bdd1-575adbc7ee88\"}]"},{"name":"encounter_start_valid_cards_with_suggestions","type":"text","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-12\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"12dc0831-0c96-46bc-919a-4e8d01cfcfc6\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-12\",\"end\":\"2026-04-12\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"da563ad1-36ac-4b96-aef0-0883cee989f4\"}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_card_optional_fields_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.440-04:00"},{"id":"1fa43a4d-0b7b-42b7-a0f4-54293409b2ce","created_at":"2026-03-12T13:40:08.441-04:00","inputs":[{"name":"encounter_start_valid_cards_with_links","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dce4fe7a-e241-4486-8d35-63c255ae0e3e\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e5067950-7900-489f-bdd1-575adbc7ee88\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_external_reference_card_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.441-04:00"},{"id":"27f998cb-36b3-425c-be9b-8538d98a813c","created_at":"2026-03-12T13:40:08.442-04:00","inputs":[{"name":"encounter_start_valid_cards_with_links","value":"[{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dce4fe7a-e241-4486-8d35-63c255ae0e3e\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e5067950-7900-489f-bdd1-575adbc7ee88\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_launch_smart_app_card_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.442-04:00"},{"id":"8dbb71dc-2441-41f4-ab57-2e92570e7a6b","created_at":"2026-03-12T13:40:08.443-04:00","inputs":[{"name":"encounter_start_valid_cards","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-12\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"12dc0831-0c96-46bc-919a-4e8d01cfcfc6\"},{\"summary\":\"Encounter Start Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dce4fe7a-e241-4486-8d35-63c255ae0e3e\"},{\"summary\":\"Encounter Start External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"e5067950-7900-489f-bdd1-575adbc7ee88\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-12\",\"end\":\"2026-04-12\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"da563ad1-36ac-4b96-aef0-0883cee989f4\"},{\"summary\":\"Encounter Start Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"a9748975-6bce-41b0-b135-0b5a39c3eafa\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_valid_instructions_card_received","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.443-04:00"},{"id":"d0be509d-63aa-4d3c-bbdb-b20cb1040ad9","created_at":"2026-03-12T13:40:08.446-04:00","inputs":[{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"5bcca895a1f669dde39c19a80e806c1120dbc510807ad42bb8eba6e5aece379b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"invoked_hook","value":"encounter-start","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_start_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"5bcca895a1f669dde39c19a80e806c1120dbc510807ad42bb8eba6e5aece379b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.446-04:00"},{"id":"f93e93ce-b5d8-46d6-898e-79ce31866ef3","created_at":"2026-03-12T13:40:08.850-04:00","inputs":[{"name":"encounter_start_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"5bcca895a1f669dde39c19a80e806c1120dbc510807ad42bb8eba6e5aece379b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.850-04:00"},{"id":"2085cf9b-e2de-4190-81a4-251a06ec5c6a","created_at":"2026-03-12T13:40:08.885-04:00","inputs":[{"name":"encounter_start_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-12\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"12dc0831-0c96-46bc-919a-4e8d01cfcfc6\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-12\",\"end\":\"2026-04-12\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"da563ad1-36ac-4b96-aef0-0883cee989f4\"}]","type":"text"},{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"5bcca895a1f669dde39c19a80e806c1120dbc510807ad42bb8eba6e5aece379b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_request_form_completion_response_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.885-04:00"},{"id":"51f5fd66-a5fe-4b77-99a6-6bf03d0e749b","created_at":"2026-03-12T13:40:08.913-04:00","inputs":[{"name":"encounter_start_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Start Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-12\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"12dc0831-0c96-46bc-919a-4e8d01cfcfc6\"},{\"summary\":\"Encounter Start Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-12\",\"end\":\"2026-04-12\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"da563ad1-36ac-4b96-aef0-0883cee989f4\"}]","type":"text"},{"name":"encounter_start_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"5bcca895a1f669dde39c19a80e806c1120dbc510807ad42bb8eba6e5aece379b\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_start-crd_create_or_update_coverage_info_response_validation","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.913-04:00"},{"id":"9a77f926-3115-42d3-8b8a-718390fa9dba","created_at":"2026-03-12T13:40:08.916-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"encounter_start_service_ids","label":"Service id for the service that implements the `encounter-start` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"encounter-start-service","type":"text"},{"name":"encounter_start_request_bodies","label":"Request body or bodies for invoking the `encounter-start` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e953b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-start\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_encounter_start","test_run_id":"e71ee703-506f-4c82-bcd4-f9b1126622cf","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:08.916-04:00"},{"id":"e526854c-608f-408b-a542-978885f54125","created_at":"2026-03-12T13:40:20.626-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encounter_discharge_service_ids","value":"encounter-discharge-service","type":"text"},{"name":"encounter_discharge_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"encounter-discharge"}],"requests":[{"id":"dc4f9bfc-e985-4f0b-9a29-74a42c707b8b","direction":"outgoing","index":6268,"result_id":"e526854c-608f-408b-a542-978885f54125","status":200,"timestamp":"2026-03-12T13:40:20.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_call_test","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.626-04:00"},{"id":"61f573b6-8b2f-41c3-afd9-8b1a607b8c5e","created_at":"2026-03-12T13:40:20.644-04:00","inputs":[{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]"}],"requests":[{"id":"dc4f9bfc-e985-4f0b-9a29-74a42c707b8b","direction":"outgoing","index":6268,"result_id":"e526854c-608f-408b-a542-978885f54125","status":200,"timestamp":"2026-03-12T13:40:20.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_required_fields_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.644-04:00"},{"id":"3462558a-872a-4aa8-bb4d-30090297678b","created_at":"2026-03-12T13:40:20.646-04:00","inputs":[{"name":"encounter_discharge_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\"}]","type":"text"},{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_context_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.646-04:00"},{"id":"21d7c6a3-e9eb-47a8-9936-3e4150971bd3","created_at":"2026-03-12T13:40:20.648-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"dc4f9bfc-e985-4f0b-9a29-74a42c707b8b","direction":"outgoing","index":6268,"result_id":"e526854c-608f-408b-a542-978885f54125","status":200,"timestamp":"2026-03-12T13:40:20.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_request_optional_fields_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.648-04:00"},{"id":"5a854210-a077-4a8d-9eb4-1a599bc5a3d6","created_at":"2026-03-12T13:40:20.654-04:00","inputs":[{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"encounter_discharge_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"},{"name":"encounter_discharge_valid_cards","type":"text","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"bd453cd9-e946-4646-9690-0c39a033e3ff\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d1200101-9300-42ac-b261-ea7da1bd7a85\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"616a9e57-4d08-4f25-a963-7bdddbb8b491\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83556e49-8ef4-4ed3-afdf-8e097ef59327\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"c8d1f600-c398-437d-8b8d-5de7738a2d59\"}]"}],"requests":[{"id":"dc4f9bfc-e985-4f0b-9a29-74a42c707b8b","direction":"outgoing","index":6268,"result_id":"e526854c-608f-408b-a542-978885f54125","status":200,"timestamp":"2026-03-12T13:40:20.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/encounter-discharge-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_service_response_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.654-04:00"},{"id":"daa88226-b229-4857-9311-6b9a770f5c99","created_at":"2026-03-12T13:40:20.661-04:00","inputs":[{"name":"encounter_discharge_valid_cards","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"bd453cd9-e946-4646-9690-0c39a033e3ff\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d1200101-9300-42ac-b261-ea7da1bd7a85\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"616a9e57-4d08-4f25-a963-7bdddbb8b491\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83556e49-8ef4-4ed3-afdf-8e097ef59327\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"c8d1f600-c398-437d-8b8d-5de7738a2d59\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_discharge_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d1200101-9300-42ac-b261-ea7da1bd7a85\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"616a9e57-4d08-4f25-a963-7bdddbb8b491\"}]"},{"name":"encounter_discharge_valid_cards_with_suggestions","type":"text","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"bd453cd9-e946-4646-9690-0c39a033e3ff\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83556e49-8ef4-4ed3-afdf-8e097ef59327\"}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_card_optional_fields_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.661-04:00"},{"id":"0dda7af7-9025-408d-80da-d449e9ae0e46","created_at":"2026-03-12T13:40:20.663-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_links","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d1200101-9300-42ac-b261-ea7da1bd7a85\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"616a9e57-4d08-4f25-a963-7bdddbb8b491\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_external_reference_card_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.663-04:00"},{"id":"9a6b2f97-6f27-46d1-b11e-f66674e50331","created_at":"2026-03-12T13:40:20.664-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_links","value":"[{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d1200101-9300-42ac-b261-ea7da1bd7a85\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"616a9e57-4d08-4f25-a963-7bdddbb8b491\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_launch_smart_app_card_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.664-04:00"},{"id":"6d7b9f60-1be7-433f-b857-b8db8accb2f7","created_at":"2026-03-12T13:40:20.665-04:00","inputs":[{"name":"encounter_discharge_valid_cards","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"bd453cd9-e946-4646-9690-0c39a033e3ff\"},{\"summary\":\"Encounter Discharge Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"d1200101-9300-42ac-b261-ea7da1bd7a85\"},{\"summary\":\"Encounter Discharge External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"616a9e57-4d08-4f25-a963-7bdddbb8b491\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83556e49-8ef4-4ed3-afdf-8e097ef59327\"},{\"summary\":\"Encounter Discharge Instructions Card\",\"detail\":\"This is an Instructions card containing textual guidance to display to the user making the decisions.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"uuid\":\"c8d1f600-c398-437d-8b8d-5de7738a2d59\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_valid_instructions_card_received","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.665-04:00"},{"id":"cd25a017-d139-4486-93a3-13bb173dbca1","created_at":"2026-03-12T13:40:20.669-04:00","inputs":[{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"invoked_hook","value":"encounter-discharge","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"encounter_discharge_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.669-04:00"},{"id":"8dfd53ea-0503-4f02-ad9a-533404e4b6cf","created_at":"2026-03-12T13:40:20.712-04:00","inputs":[{"name":"encounter_discharge_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Encounter/pat015-rad-encounter: Encounter: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.712-04:00"},{"id":"24f69641-45c8-4764-9cd2-96bec52ef0f4","created_at":"2026-03-12T13:40:20.737-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"bd453cd9-e946-4646-9690-0c39a033e3ff\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83556e49-8ef4-4ed3-afdf-8e097ef59327\"}]","type":"text"},{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_request_form_completion_response_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.737-04:00"},{"id":"6bb43c26-5dea-4334-b358-8bd5cc64bf73","created_at":"2026-03-12T13:40:20.763-04:00","inputs":[{"name":"encounter_discharge_valid_cards_with_suggestions","value":"[{\"summary\":\"Encounter Discharge Request Form Completion Card\",\"detail\":\"This is a Request Form Completion Card which indicates that there are forms that need to be completed.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Add 'completion of the ABC form' to your task list (possibly for reassignment)\",\"actions\":[{\"type\":\"create\",\"description\":\"Add version 2 of the XYZ form to the clinical system's repository (if it doesn't already exist)\",\"resource\":{\"resourceType\":\"Questionnaire\",\"id\":\"XYZ\",\"url\":\"http://example.org/Questionnaire/XYZ\",\"title\":\"Cancer Quality Forum Questionnaire XYZ\",\"version\":2,\"status\":\"active\",\"subjectType\":[\"Patient\"],\"date\":\"2012-01\",\"item\":[{\"linkId\":\"1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"COMORBIDITY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORB\"}],\"prefix\":\"1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"CARDIAL\"}],\"type\":\"group\",\"enableWhen\":[{\"question\":\"1.1\",\"operator\":\"=\",\"answerCoding\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0136\",\"code\":\"Y\"}}],\"item\":[{\"linkId\":\"1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBCAR\"}],\"prefix\":\"1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\",\"item\":[{\"linkId\":\"1.1.1.1.1\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMCAR00\",\"display\":\"Angina Pectoris\"},{\"system\":\"http://snomed.info/sct\",\"code\":\"194828000\",\"display\":\"Angina (disorder)\"}],\"prefix\":\"1.1.1\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"},{\"linkId\":\"1.1.1.1.2\",\"code\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"22298006\",\"display\":\"Myocardial infarction (disorder)\"}],\"prefix\":\"1.1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]},{\"linkId\":\"1.1.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"COMORBVAS\"}],\"prefix\":\"1.2\",\"type\":\"choice\",\"answerValueSet\":\"http://hl7.org/fhir/ValueSet/yesnodontknow\"}]}]}]},{\"linkId\":\"2\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"HISTOPATHOLOGY\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1\",\"code\":[{\"system\":\"http://example.org/system/code/sections\",\"code\":\"ABDOMINAL\"}],\"type\":\"group\",\"item\":[{\"linkId\":\"2.1.2\",\"code\":[{\"system\":\"http://example.org/system/code/questions\",\"code\":\"STADPT\",\"display\":\"pT category\"}],\"type\":\"choice\"}]}]}]},\"extension\":{\"davinci-crd.if-none-exist\":\"url=http://example.org/Questionnaire/XYZ\\u0026version=2\"}},{\"type\":\"create\",\"description\":\"Add 'Complete ABC form' to the task list\",\"resource\":{\"resourceType\":\"Task\",\"status\":\"ready\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"complete-questionnaire\"}]},\"description\":\"Complete XYZ form for local retention\",\"for\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2026-03-09\",\"requester\":{\"reference\":\"http://example.org/fhir/Organization/payer\"},\"input\":[{\"type\":{\"text\":\"questionnaire\",\"coding\":[{\"system\":\"http://hl7.org/fhir/uv/sdc/CodeSystem/temp\",\"code\":\"questionnaire\"}]},\"valueCanonical\":\"http://example.org/Questionnaire/XYZ\"},{\"type\":{\"text\":\"afterCompletion\",\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"after-completion-action\"}]},\"valueCodeableConcept\":{\"coding\":[{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"prior-auth-include\",\"display\":\"Include in prior authorization\"}]}}]}}]}],\"uuid\":\"bd453cd9-e946-4646-9690-0c39a033e3ff\"},{\"summary\":\"Encounter Discharge Create/Update Coverage Information Card\",\"detail\":\"This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"selectionBehavior\":\"any\",\"suggestions\":[{\"label\":\"Create/Update coverage information\",\"actions\":[{\"type\":\"update\",\"description\":\"Update current coverage record\",\"resource\":{\"id\":\"cov015\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2025-08-14T00:52:07.566+00:00\"},\"status\":\"active\",\"subscriberId\":\"10A3D58WH456\",\"beneficiary\":{\"reference\":\"Patient/pat015\"},\"period\":{\"start\":\"2026-03-09\",\"end\":\"2026-04-09\"},\"payor\":[{\"reference\":\"Organization/org1234\"}],\"class\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/coverage-class\",\"code\":\"plan\"}]},\"value\":\"Medicare Part A\"}],\"resourceType\":\"Coverage\"}}]}],\"uuid\":\"83556e49-8ef4-4ed3-afdf-8e097ef59327\"}]","type":"text"},{"name":"encounter_discharge_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to Encounter resource.\",\"resource\":{\"id\":\"pat015-rad-encounter\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"conditional\"},{\"url\":\"pa-needed\",\"valueCode\":\"auth-needed\"},{\"url\":\"doc-needed\",\"valueCode\":\"clinical\"},{\"url\":\"doc-purpose\",\"valueCode\":\"withorder\"},{\"url\":\"info-needed\",\"valueCode\":\"performer\"},{\"url\":\"date\",\"valueDate\":\"2026-03-09\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"0730da9e5a13eededb08999dcc06b89f22adf797fa2457fc0d7c330599da1311\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"finished\",\"class\":{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\"code\":\"HH\",\"display\":\"home health\"},\"type\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"185345009\",\"display\":\"Encounter for symptom\"}]}],\"priority\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"709122007\",\"display\":\"As soon as possible (qualifier value)\"}]},\"subject\":{\"reference\":\"Patient/pat015\",\"display\":\"Roosevelt Theodore\"},\"participant\":[{\"type\":[{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\"code\":\"PPRF\",\"display\":\"primary performer\"}]}],\"individual\":{\"reference\":\"Practitioner/pra1234\",\"display\":\"Dr. Jane Doe\"}}],\"period\":{\"start\":\"2020-07-01T10:40:10+01:00\",\"end\":\"2020-07-01T12:40:10+01:00\"},\"length\":{\"value\":56,\"unit\":\"minutes\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"min\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://hl7.org/fhir/sid/icd-10-cm\",\"code\":\"J44.9\",\"display\":\"Chronic obstructive pulmonary disease, unspecified\"}]}],\"diagnosis\":[{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for stroke\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"AD\",\"display\":\"Admission diagnosis\"}]},\"rank\":2},{\"condition\":{\"reference\":\"Condition/cond015a\",\"display\":\"The patient is hospitalized for lung condition\"},\"use\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\"code\":\"CC\",\"display\":\"Chief complaint\"}]},\"rank\":1}],\"location\":[{\"location\":{\"display\":\"observation2c\"}}],\"resourceType\":\"Encounter\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_create_or_update_coverage_info_response_validation","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.763-04:00"},{"id":"e79c0cba-7d7d-40ce-9985-467d493e0980","created_at":"2026-03-12T13:40:20.766-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"encounter_discharge_service_ids","label":"Service id for the service that implements the `encounter-discharge` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"encounter-discharge-service","type":"text"},{"name":"encounter_discharge_request_bodies","label":"Request body or bodies for invoking the `encounter-discharge` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c69-dfbe-444f-ba6d-3e05e123b2ea\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"encounter-discharge\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/Encounter.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"userId\": \"Practitioner/pra1234\",\n \"patientId\": \"pat015\",\n \"encounterId\": \"pat015-rad-encounter\"\n },\n \"prefetch\": {\n \"encounter\": {\n \"resourceType\": \"Encounter\",\n \"id\": \"pat015-rad-encounter\",\n \"status\": \"finished\",\n \"class\": {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\",\n \"code\": \"HH\",\n \"display\": \"home health\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"185345009\",\n \"display\": \"Encounter for symptom\"\n }\n ]\n }\n ],\n \"priority\": {\n \"coding\": [\n {\n \"system\": \"http://snomed.info/sct\",\n \"code\": \"709122007\",\n \"display\": \"As soon as possible (qualifier value)\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\",\n \"display\": \"Roosevelt Theodore\"\n },\n \"participant\": [\n {\n \"individual\": {\n \"reference\": \"Practitioner/pra1234\",\n \"display\": \"Dr. Jane Doe\"\n },\n \"type\": [\n {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ParticipationType\",\n \"code\": \"PPRF\",\n \"display\": \"primary performer\"\n }\n ]\n }\n ]\n }\n ],\n \"length\": {\n \"value\": 56,\n \"unit\": \"minutes\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"min\"\n },\n \"period\": {\n \"start\": \"2020-07-01T10:40:10+01:00\",\n \"end\": \"2020-07-01T12:40:10+01:00\"\n },\n \"reasonCode\": [\n {\n \"coding\": [\n {\n \"system\": \"http://hl7.org/fhir/sid/icd-10-cm\",\n \"code\": \"J44.9\",\n \"display\": \"Chronic obstructive pulmonary disease, unspecified\"\n }\n ]\n }\n ],\n \"diagnosis\": [\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for stroke\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"AD\",\n \"display\": \"Admission diagnosis\"\n }\n ]\n },\n \"rank\": 2\n },\n {\n \"condition\": {\n \"reference\": \"Condition/cond015a\",\n \"display\": \"The patient is hospitalized for lung condition\"\n },\n \"use\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/diagnosis-role\",\n \"code\": \"CC\",\n \"display\": \"Chief complaint\"\n }\n ]\n },\n \"rank\": 1\n }\n ],\n \"location\": [\n {\n \"location\": {\n \"display\": \"observation2c\"\n }\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_encounter_discharge","test_run_id":"3e28e3e8-ea79-4be1-938b-ab188d49958e","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:20.766-04:00"},{"id":"6875b365-8721-416b-81d6-c8c05157dba8","created_at":"2026-03-12T13:40:33.376-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_select_service_ids","value":"order-select-service","type":"text"},{"name":"order_select_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/6875b365-8721-416b-81d6-c8c05157dba8/io/inputs/order_select_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-select"}],"requests":[{"id":"9d9e25b9-e957-4579-a30e-90af96bbf9cf","direction":"outgoing","index":6284,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.378-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"6f7c4f4d-aa8a-4b5b-a4b1-3fe097b098a6","direction":"outgoing","index":6285,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.385-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_call_test","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:33.376-04:00"},{"id":"fe0af8bc-b702-49e6-b061-3a6cca609c43","created_at":"2026-03-12T13:40:33.404-04:00","inputs":[{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_select_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]"}],"requests":[{"id":"9d9e25b9-e957-4579-a30e-90af96bbf9cf","direction":"outgoing","index":6284,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.378-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"6f7c4f4d-aa8a-4b5b-a4b1-3fe097b098a6","direction":"outgoing","index":6285,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.385-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_required_fields_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:33.404-04:00"},{"id":"c5af7415-54e3-4a54-b573-94e01846e583","created_at":"2026-03-12T13:40:34.176-04:00","inputs":[{"name":"order_select_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_context_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.176-04:00"},{"id":"529d7a36-f7d3-4b92-8d06-8b17280499fc","created_at":"2026-03-12T13:40:34.186-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":true,"outputs":[],"requests":[{"id":"9d9e25b9-e957-4579-a30e-90af96bbf9cf","direction":"outgoing","index":6284,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.378-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"6f7c4f4d-aa8a-4b5b-a4b1-3fe097b098a6","direction":"outgoing","index":6285,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.385-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_request_optional_fields_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.186-04:00"},{"id":"e62599e6-f421-416f-be8a-7cb98b6a19a6","created_at":"2026-03-12T13:40:34.198-04:00","inputs":[{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_select_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"edde09589b3446b34aad10da56026bf87fb25fd8375a423d68888cff0f6465a7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c41475de8ab17359749d23824e1ad00eb05c6a19a21ee98bfef3fa9af120e5d0\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]"},{"name":"order_select_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/e62599e6-f421-416f-be8a-7cb98b6a19a6/io/outputs/order_select_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"9d9e25b9-e957-4579-a30e-90af96bbf9cf","direction":"outgoing","index":6284,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.378-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"},{"id":"6f7c4f4d-aa8a-4b5b-a4b1-3fe097b098a6","direction":"outgoing","index":6285,"result_id":"6875b365-8721-416b-81d6-c8c05157dba8","status":200,"timestamp":"2026-03-12T13:40:33.385-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-select-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_service_response_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.198-04:00"},{"id":"f19b262d-5143-4de0-919e-48ac03f507c5","created_at":"2026-03-12T13:40:34.213-04:00","inputs":[{"name":"order_select_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/f19b262d-5143-4de0-919e-48ac03f507c5/io/inputs/order_select_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_select_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"788edc27-b036-42da-8b33-ed729d6f02b3\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c48771ae-8c7e-472c-b027-ffe23a765cc1\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"aac3acf1-5e92-4a0f-8369-54af1a2cc02b\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"988b76ca-b860-497c-b7e2-57c5cc16e047\"}]"},{"name":"order_select_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/f19b262d-5143-4de0-919e-48ac03f507c5/io/outputs/order_select_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_card_optional_fields_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.213-04:00"},{"id":"6e51bb21-2bd5-47cf-8db9-ab5fe234f715","created_at":"2026-03-12T13:40:34.215-04:00","inputs":[{"name":"order_select_valid_cards_with_links","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"788edc27-b036-42da-8b33-ed729d6f02b3\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c48771ae-8c7e-472c-b027-ffe23a765cc1\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"aac3acf1-5e92-4a0f-8369-54af1a2cc02b\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"988b76ca-b860-497c-b7e2-57c5cc16e047\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_external_reference_card_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.215-04:00"},{"id":"137202f8-d00d-4c2d-af07-d8a0a79763a8","created_at":"2026-03-12T13:40:34.217-04:00","inputs":[{"name":"order_select_valid_cards_with_links","value":"[{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"788edc27-b036-42da-8b33-ed729d6f02b3\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"c48771ae-8c7e-472c-b027-ffe23a765cc1\"},{\"summary\":\"Order Select Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"aac3acf1-5e92-4a0f-8369-54af1a2cc02b\"},{\"summary\":\"Order Select External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"988b76ca-b860-497c-b7e2-57c5cc16e047\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_launch_smart_app_card_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.217-04:00"},{"id":"21a20bc0-3886-4eee-afe8-e7effa1e9d78","created_at":"2026-03-12T13:40:34.221-04:00","inputs":[{"name":"order_select_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/21a20bc0-3886-4eee-afe8-e7effa1e9d78/io/inputs/order_select_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_valid_instructions_card_received","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.221-04:00"},{"id":"29b150b6-1dd8-4ef0-80d5-bcbfe7d05bb8","created_at":"2026-03-12T13:40:34.225-04:00","inputs":[{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"edde09589b3446b34aad10da56026bf87fb25fd8375a423d68888cff0f6465a7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c41475de8ab17359749d23824e1ad00eb05c6a19a21ee98bfef3fa9af120e5d0\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-select","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_select_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"edde09589b3446b34aad10da56026bf87fb25fd8375a423d68888cff0f6465a7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c41475de8ab17359749d23824e1ad00eb05c6a19a21ee98bfef3fa9af120e5d0\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.225-04:00"},{"id":"31dd242b-1467-4f52-85fa-6afb30599414","created_at":"2026-03-12T13:40:34.274-04:00","inputs":[{"name":"order_select_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"edde09589b3446b34aad10da56026bf87fb25fd8375a423d68888cff0f6465a7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c41475de8ab17359749d23824e1ad00eb05c6a19a21ee98bfef3fa9af120e5d0\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.274-04:00"},{"id":"5fc05066-176f-4906-b881-bba3e9c5ad7e","created_at":"2026-03-12T13:40:34.323-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/5fc05066-176f-4906-b881-bba3e9c5ad7e/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-azathioprine\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-azathioprine\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"selections\":[\"MedicationRequest/pat015-mr-methotrexate\"],\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"MedicationRequest\",\"id\":\"pat015-mr-methotrexate\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}}}}]}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"MedicationRequest/pat015-mr-azathioprine: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest.medication.ofType(CodeableConcept): None of the codings provided are in the value set 'US Core Medication Codes (RxNorm)' (http://hl7.org/fhir/us/core/ValueSet/us-core-medication-codes|3.1.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = http://www.nlm.nih.gov/research/umls/rxnorm#105585)","type":"warning"},{"message":"MedicationRequest/pat015-mr-methotrexate: MedicationRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_propose_alternate_request_card_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.323-04:00"},{"id":"3ead0e67-4264-475f-b950-be1a5984decf","created_at":"2026-03-12T13:40:34.649-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/3ead0e67-4264-475f-b950-be1a5984decf/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_additional_orders_card_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.649-04:00"},{"id":"dc4ca72d-dbeb-4c2d-9f3d-e80dc7fe92c0","created_at":"2026-03-12T13:40:34.700-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/dc4ca72d-dbeb-4c2d-9f3d-e80dc7fe92c0/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"edde09589b3446b34aad10da56026bf87fb25fd8375a423d68888cff0f6465a7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c41475de8ab17359749d23824e1ad00eb05c6a19a21ee98bfef3fa9af120e5d0\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_request_form_completion_response_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.700-04:00"},{"id":"2a44cf9e-754f-4b0f-8e63-29ed14bb65ab","created_at":"2026-03-12T13:40:34.748-04:00","inputs":[{"name":"order_select_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/2a44cf9e-754f-4b0f-8e63-29ed14bb65ab/io/inputs/order_select_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_select_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-azathioprine\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"edde09589b3446b34aad10da56026bf87fb25fd8375a423d68888cff0f6465a7\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"25839b73-fcc9-4706-8c77-a806995b8109\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105611\",\"display\":\"azathioprine 50 MG Oral Tablet [Imuran]\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-05-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"50 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":50,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to MedicationRequest resource.\",\"resource\":{\"id\":\"pat015-mr-methotrexate\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"c41475de8ab17359749d23824e1ad00eb05c6a19a21ee98bfef3fa9af120e5d0\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"9ae058cc-ffdc-4680-b39f-6a38bfde01ac\"}],\"status\":\"draft\",\"intent\":\"order\",\"medicationCodeableConcept\":{\"coding\":[{\"system\":\"http://www.nlm.nih.gov/research/umls/rxnorm\",\"code\":\"105585\",\"display\":\"methotrexate 2.5 MG Oral Tablet\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2020-07-11\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"reasonCode\":[{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"52042003\",\"display\":\"Systemic lupus erythematosus glomerulonephritis syndrome, World Health Organization class V (disorder)\"}]}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"dosageInstruction\":[{\"sequence\":1,\"text\":\"7.5 mg PO daily for remission induction\",\"timing\":{\"repeat\":{\"frequency\":1,\"period\":1,\"periodUnit\":\"d\"}},\"route\":{\"coding\":[{\"system\":\"http://snomed.info/sct\",\"code\":\"26643006\",\"display\":\"Oral route (qualifier value)\"}]},\"doseAndRate\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/dose-rate-type\",\"code\":\"ordered\",\"display\":\"Ordered\"}]},\"doseQuantity\":{\"value\":7.5,\"unit\":\"mg\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mg\"}}]}],\"dispenseRequest\":{\"numberOfRepeatsAllowed\":3,\"quantity\":{\"value\":90,\"system\":\"http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm\",\"code\":\"TAB\"}},\"resourceType\":\"MedicationRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_select-crd_create_or_update_coverage_info_response_validation","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.748-04:00"},{"id":"f32771a6-7f23-4989-aa92-45cbd68ff1ac","created_at":"2026-03-12T13:40:34.752-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_select_service_ids","label":"Service id for the service that implements the `order-select` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-select-service","type":"text"},{"name":"order_select_request_bodies","label":"Request body or bodies for invoking the `order-select` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/f32771a6-7f23-4989-aa92-45cbd68ff1ac/io/inputs/order_select_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_select","test_run_id":"17b7fb33-854c-4380-b452-fbf6655e0347","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:34.752-04:00"},{"id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","created_at":"2026-03-12T13:40:45.397-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_dispatch_service_ids","value":"order-dispatch-service","type":"text"},{"name":"order_dispatch_request_bodies","value":"[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"ServiceRequest/servreq-g0180-1\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"servreq-g0180-1\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"occurrenceDateTime\": \"2017-10-01\",\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/pra1234\"\n }\n ],\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ]\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"DeviceRequest/devreq015\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"devreq015\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"\n ]\n },\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ],\n \"status\": \"draft\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0424\",\n \"display\": \"Stationary Compressed Gaseous Oxygen System, Rental\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"intent\": \"original-order\",\n \"occurrenceTiming\": {\n \"repeat\": {\n \"boundsDuration\": {\n \"value\": 8,\n \"unit\": \"mo\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"mo\"\n }\n },\n \"code\": {\n \"text\": \"During sleep AND During exertion\"\n }\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/pra1234\"\n }\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n }\n]","type":"textarea"},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-dispatch"}],"requests":[{"id":"7400cdb1-5cf4-4b63-a05d-bf961c34b9d5","direction":"outgoing","index":6302,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.399-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"44126d40-7ee4-4773-82fe-378169501638","direction":"outgoing","index":6303,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.406-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_call_test","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.397-04:00"},{"id":"f0a858cc-315f-46dd-8f51-f39d41d9843b","created_at":"2026-03-12T13:40:45.423-04:00","inputs":[{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_contexts","type":"text","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]"}],"requests":[{"id":"7400cdb1-5cf4-4b63-a05d-bf961c34b9d5","direction":"outgoing","index":6302,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.399-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"44126d40-7ee4-4773-82fe-378169501638","direction":"outgoing","index":6303,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.406-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_required_fields_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.423-04:00"},{"id":"71bc53f1-bc1c-4a51-86a9-0d197b378a49","created_at":"2026-03-12T13:40:45.425-04:00","inputs":[{"name":"order_dispatch_contexts","value":"[{\"patientId\":\"pat015\",\"order\":\"ServiceRequest/servreq-g0180-1\",\"performer\":\"Practitioner/pra1234\"},{\"patientId\":\"pat015\",\"order\":\"DeviceRequest/devreq015\",\"performer\":\"Practitioner/pra1234\"}]","type":"text"},{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_context_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.425-04:00"},{"id":"3d15dc1c-ec7f-4b68-a908-6d0811dd23a7","created_at":"2026-03-12T13:40:45.427-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[{"id":"7400cdb1-5cf4-4b63-a05d-bf961c34b9d5","direction":"outgoing","index":6302,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.399-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"44126d40-7ee4-4773-82fe-378169501638","direction":"outgoing","index":6303,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.406-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_request_optional_fields_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.427-04:00"},{"id":"d790a5c0-25b5-442e-867b-8359349d649f","created_at":"2026-03-12T13:40:45.433-04:00","inputs":[{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"28742a26d5c69828316ce9fcd0060545b44eba8a5f9f62374232b79882459ac9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4cbbe2c37ef380327d7c8f80a7d10deaf92fab33b9b9a7ce5d8283b5603a09fa\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]"},{"name":"order_dispatch_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/d790a5c0-25b5-442e-867b-8359349d649f/io/outputs/order_dispatch_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"7400cdb1-5cf4-4b63-a05d-bf961c34b9d5","direction":"outgoing","index":6302,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.399-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"},{"id":"44126d40-7ee4-4773-82fe-378169501638","direction":"outgoing","index":6303,"result_id":"e95a7c31-331c-4f4b-8815-8b742b566b3a","status":200,"timestamp":"2026-03-12T13:40:45.406-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-dispatch-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_service_response_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.433-04:00"},{"id":"fec77efc-385d-482f-a1a5-b346fad471f2","created_at":"2026-03-12T13:40:45.443-04:00","inputs":[{"name":"order_dispatch_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/fec77efc-385d-482f-a1a5-b346fad471f2/io/inputs/order_dispatch_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_dispatch_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"6b0bee02-7b51-484f-bc0f-2336f53638cd\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"47fdea18-5c5f-49e0-a433-94d4c4be7e3e\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c60a771d-d034-480b-8b73-c389bd2f8ce4\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"56d080aa-dd28-49e6-8a0c-2317affea186\"}]"},{"name":"order_dispatch_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/fec77efc-385d-482f-a1a5-b346fad471f2/io/outputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_card_optional_fields_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.443-04:00"},{"id":"c152da9d-8c2e-4f57-bd0d-d27957dcce9e","created_at":"2026-03-12T13:40:45.445-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_links","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"6b0bee02-7b51-484f-bc0f-2336f53638cd\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"47fdea18-5c5f-49e0-a433-94d4c4be7e3e\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c60a771d-d034-480b-8b73-c389bd2f8ce4\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"56d080aa-dd28-49e6-8a0c-2317affea186\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_external_reference_card_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.445-04:00"},{"id":"95fc7007-08cb-42c9-ae99-77a7b420d695","created_at":"2026-03-12T13:40:45.446-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_links","value":"[{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"6b0bee02-7b51-484f-bc0f-2336f53638cd\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"47fdea18-5c5f-49e0-a433-94d4c4be7e3e\"},{\"summary\":\"Order Dispatch Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"c60a771d-d034-480b-8b73-c389bd2f8ce4\"},{\"summary\":\"Order Dispatch External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"56d080aa-dd28-49e6-8a0c-2317affea186\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_launch_smart_app_card_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.446-04:00"},{"id":"a2a1e631-c78b-48ab-acce-c0e58bbdb08b","created_at":"2026-03-12T13:40:45.448-04:00","inputs":[{"name":"order_dispatch_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/a2a1e631-c78b-48ab-acce-c0e58bbdb08b/io/inputs/order_dispatch_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_valid_instructions_card_received","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.448-04:00"},{"id":"4eeaf526-f28f-47a7-b509-945c103c9892","created_at":"2026-03-12T13:40:45.451-04:00","inputs":[{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"28742a26d5c69828316ce9fcd0060545b44eba8a5f9f62374232b79882459ac9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4cbbe2c37ef380327d7c8f80a7d10deaf92fab33b9b9a7ce5d8283b5603a09fa\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-dispatch","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_dispatch_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"28742a26d5c69828316ce9fcd0060545b44eba8a5f9f62374232b79882459ac9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4cbbe2c37ef380327d7c8f80a7d10deaf92fab33b9b9a7ce5d8283b5603a09fa\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.451-04:00"},{"id":"1c5583c1-7322-4ae1-832f-e4330ed60ec6","created_at":"2026-03-12T13:40:45.656-04:00","inputs":[{"name":"order_dispatch_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"28742a26d5c69828316ce9fcd0060545b44eba8a5f9f62374232b79882459ac9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4cbbe2c37ef380327d7c8f80a7d10deaf92fab33b9b9a7ce5d8283b5603a09fa\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0424)","type":"warning"},{"message":"DeviceRequest/devreq015: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.656-04:00"},{"id":"5a40f42c-a7c9-4c49-91df-e31667b2917a","created_at":"2026-03-12T13:40:45.709-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/5a40f42c-a7c9-4c49-91df-e31667b2917a/io/inputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"28742a26d5c69828316ce9fcd0060545b44eba8a5f9f62374232b79882459ac9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4cbbe2c37ef380327d7c8f80a7d10deaf92fab33b9b9a7ce5d8283b5603a09fa\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_request_form_completion_response_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.709-04:00"},{"id":"283cc0e2-25c5-485a-b65f-df5b07fe34af","created_at":"2026-03-12T13:40:45.755-04:00","inputs":[{"name":"order_dispatch_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/283cc0e2-25c5-485a-b65f-df5b07fe34af/io/inputs/order_dispatch_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_dispatch_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"28742a26d5c69828316ce9fcd0060545b44eba8a5f9f62374232b79882459ac9\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq015\",\"meta\":{\"profile\":[\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"]},\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"4cbbe2c37ef380327d7c8f80a7d10deaf92fab33b9b9a7ce5d8283b5603a09fa\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0424\",\"display\":\"Stationary Compressed Gaseous Oxygen System, Rental\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceTiming\":{\"repeat\":{\"boundsDuration\":{\"value\":8,\"unit\":\"mo\",\"system\":\"http://unitsofmeasure.org\",\"code\":\"mo\"}},\"code\":{\"text\":\"During sleep AND During exertion\"}},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_dispatch-crd_create_or_update_coverage_info_response_validation","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.755-04:00"},{"id":"fe395703-2feb-425b-8103-502d74f8d198","created_at":"2026-03-12T13:40:45.759-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_dispatch_service_ids","label":"Service id for the service that implements the `order-dispatch` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-dispatch-service","type":"text"},{"name":"order_dispatch_request_bodies","label":"Request body or bodies for invoking the `order-dispatch` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"[\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24a\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"ServiceRequest/servreq-g0180-1\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"ServiceRequest\",\n \"id\": \"servreq-g0180-1\",\n \"status\": \"draft\",\n \"intent\": \"order\",\n \"code\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"G0180\",\n \"display\": \"Medicare-covered home health services under a home health plan of care\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"occurrenceDateTime\": \"2017-10-01\",\n \"authoredOn\": \"2017-10-04\",\n \"requester\": {\n \"display\": \"Smythe Juliette, MD\"\n },\n \"performer\": [\n {\n \"reference\": \"Practitioner/pra1234\"\n }\n ],\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ]\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n },\n {\n \"hookInstance\": \"f3945c39-dfbe-444f-ba6d-3e05e123b24b\",\n \"fhirServer\": \"https://inferno.healthit.gov/reference-server/r4\",\n \"hook\": \"order-dispatch\",\n \"fhirAuthorization\": {\n \"access_token\": \"SAMPLE_TOKEN\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 300,\n \"scope\": \"user/Patient.read user/Practitioner.read user/ServiceRequest.read\",\n \"subject\": \"cds-service\"\n },\n \"context\": {\n \"patientId\": \"pat015\",\n \"order\": \"DeviceRequest/devreq015\",\n \"performer\": \"Practitioner/pra1234\"\n },\n \"prefetch\": {\n \"coverage\": {\n \"resourceType\": \"Bundle\",\n \"type\": \"searchset\",\n \"total\": 1,\n \"link\": [\n {\n \"relation\": \"self\",\n \"url\": \"https://inferno.healthit.gov/reference-server/r4/Coverage?patient=pat015\"\n }\n ],\n \"entry\": [\n {\n \"fullUrl\": \"https://inferno.healthit.gov/reference-server/r4/Coverage/cov015\",\n \"resource\": {\n \"resourceType\": \"Coverage\",\n \"id\": \"cov015\",\n \"subscriberId\": \"10A3D58WH456\",\n \"beneficiary\": {\n \"reference\": \"Patient/pat015\"\n },\n \"status\": \"active\",\n \"class\": [\n {\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/coverage-class\",\n \"code\": \"plan\"\n }\n ]\n },\n \"value\": \"Medicare Part A\"\n }\n ],\n \"payor\": [\n {\n \"reference\": \"Organization/org1234\"\n }\n ]\n },\n \"search\": {\n \"mode\": \"match\"\n }\n }\n ]\n },\n \"order\": {\n \"resourceType\": \"DeviceRequest\",\n \"id\": \"devreq015\",\n \"meta\": {\n \"profile\": [\n \"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest\"\n ]\n },\n \"insurance\": [\n {\n \"reference\": \"Coverage/cov015\"\n }\n ],\n \"status\": \"draft\",\n \"codeCodeableConcept\": {\n \"coding\": [\n {\n \"system\": \"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\n \"code\": \"E0424\",\n \"display\": \"Stationary Compressed Gaseous Oxygen System, Rental\"\n }\n ]\n },\n \"subject\": {\n \"reference\": \"Patient/pat015\"\n },\n \"performer\": {\n \"reference\": \"Practitioner/pra1234\"\n },\n \"intent\": \"original-order\",\n \"occurrenceTiming\": {\n \"repeat\": {\n \"boundsDuration\": {\n \"value\": 8,\n \"unit\": \"mo\",\n \"system\": \"http://unitsofmeasure.org\",\n \"code\": \"mo\"\n }\n },\n \"code\": {\n \"text\": \"During sleep AND During exertion\"\n }\n },\n \"authoredOn\": \"2023-01-01T00:00:00Z\",\n \"requester\": {\n \"reference\": \"Practitioner/pra1234\"\n }\n },\n \"patient\": {\n \"resourceType\": \"Patient\",\n \"id\": \"pat015\",\n \"gender\": \"male\",\n \"birthDate\": \"2015-02-23\",\n \"address\": [\n {\n \"use\": \"home\",\n \"type\": \"both\",\n \"state\": \"NY\",\n \"city\": \"Buffalo\",\n \"postalCode\": \"14210\",\n \"line\": [\"202 Burlington Road\"]\n }\n ],\n \"name\": [\n {\n \"use\": \"official\",\n \"family\": \"Oster\",\n \"given\": [\"William\", \"Hale\", \"Oster\"]\n }\n ],\n \"telecom\": [\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555-5555\",\n \"use\": \"home\",\n \"rank\": 1\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 5613\",\n \"use\": \"work\",\n \"rank\": 2\n },\n {\n \"system\": \"phone\",\n \"value\": \"(781) 555 8834\",\n \"use\": \"old\",\n \"period\": {\n \"end\": \"2014\"\n }\n }\n ],\n \"identifier\": [\n {\n \"use\": \"usual\",\n \"type\": {\n \"coding\": [\n {\n \"system\": \"http://terminology.hl7.org/CodeSystem/v2-0203\",\n \"code\": \"MR\"\n }\n ],\n \"text\": \"Medical Record Number\"\n },\n \"system\": \"http://hl7.org/fhir/sid/us-medicare\",\n \"value\": \"0M34355006FW\"\n }\n ]\n }\n }\n }\n]","type":"textarea"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_dispatch","test_run_id":"b1c71aa2-bc91-4db2-a541-d9b966678069","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:45.759-04:00"},{"id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","created_at":"2026-03-12T13:40:57.625-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"order_sign_service_ids","value":"order-sign-service","type":"text"},{"name":"order_sign_request_bodies","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/c61edfb9-815e-4998-9ea9-f3bfd26fe471/io/inputs/order_sign_request_bodies\nfor details\n","type":"textarea","is_large":true},{"name":"encryption_method","value":"ES384","type":"radio"},{"name":"jwks_kid","value":null,"type":"text"}],"optional":false,"outputs":[{"name":"invoked_hook","type":"text","value":"order-sign"}],"requests":[{"id":"9e284fa0-e0d9-4802-bf20-6af8159f807d","direction":"outgoing","index":6325,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"51421c30-34b0-418c-9657-49e51b9a279f","direction":"outgoing","index":6326,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.636-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_call_test","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.625-04:00"},{"id":"5c0060c1-721f-498e-891e-e1055d983395","created_at":"2026-03-12T13:40:57.670-04:00","inputs":[{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_contexts","type":"text","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]"}],"requests":[{"id":"9e284fa0-e0d9-4802-bf20-6af8159f807d","direction":"outgoing","index":6325,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"51421c30-34b0-418c-9657-49e51b9a279f","direction":"outgoing","index":6326,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.636-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_required_fields_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.670-04:00"},{"id":"76843ee5-e91c-4c88-badd-f66ab5b6b6f2","created_at":"2026-03-12T13:40:57.725-04:00","inputs":[{"name":"order_sign_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_context_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.725-04:00"},{"id":"58288d36-1c39-4ad0-8793-6fdd6d403991","created_at":"2026-03-12T13:40:57.740-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"\nRequest 1: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"},{"message":"\nRequest 2: The `patient` field for request SHOULD be populated to identify the FHIR id of that\npatient when the granted SMART scopes include patient scopes","type":"info"}],"optional":true,"outputs":[],"requests":[{"id":"9e284fa0-e0d9-4802-bf20-6af8159f807d","direction":"outgoing","index":6325,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"51421c30-34b0-418c-9657-49e51b9a279f","direction":"outgoing","index":6326,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.636-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_request_optional_fields_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.740-04:00"},{"id":"1a95e3cb-f32b-4769-abaf-dc3aa6cafb2c","created_at":"2026-03-12T13:40:57.797-04:00","inputs":[{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_valid_system_actions","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"8eb85b5968c3d7985d9141693a3a02efeee37649d970eb58edfb283bf841c253\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7f8120f32a93e93e6ff79b4caa32d1cdd6442501a4b152ff7fc7e7327d90dda8\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]"},{"name":"order_sign_valid_cards","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/1a95e3cb-f32b-4769-abaf-dc3aa6cafb2c/io/outputs/order_sign_valid_cards\nfor details\n","is_large":true}],"requests":[{"id":"9e284fa0-e0d9-4802-bf20-6af8159f807d","direction":"outgoing","index":6325,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.628-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"},{"id":"51421c30-34b0-418c-9657-49e51b9a279f","direction":"outgoing","index":6326,"result_id":"c61edfb9-815e-4998-9ea9-f3bfd26fe471","status":200,"timestamp":"2026-03-12T13:40:57.636-04:00","url":"http://localhost:4567/custom/crd_client/cds-services/order-sign-service","verb":"post"}],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_service_response_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.797-04:00"},{"id":"d2741099-01b6-48cc-b271-50ee9fe5a2af","created_at":"2026-03-12T13:40:57.807-04:00","inputs":[{"name":"order_sign_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/d2741099-01b6-48cc-b271-50ee9fe5a2af/io/inputs/order_sign_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[{"name":"order_sign_valid_cards_with_links","type":"text","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"69cbcae4-d35d-4fcb-be6a-17091b3486f0\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"56c9e847-cff7-4c9a-99e9-0d4dff4e379b\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dfeb42c9-9426-4938-87c1-af4a0b09f0ab\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"55f47a07-83a7-4e45-ae80-e71bb2d9ddae\"}]"},{"name":"order_sign_valid_cards_with_suggestions","type":"text","value":"Output is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/d2741099-01b6-48cc-b271-50ee9fe5a2af/io/outputs/order_sign_valid_cards_with_suggestions\nfor details\n","is_large":true}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_card_optional_fields_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.807-04:00"},{"id":"d782b6d8-bf21-4963-bf58-82b0f90544d0","created_at":"2026-03-12T13:40:57.809-04:00","inputs":[{"name":"order_sign_valid_cards_with_links","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"69cbcae4-d35d-4fcb-be6a-17091b3486f0\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"56c9e847-cff7-4c9a-99e9-0d4dff4e379b\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dfeb42c9-9426-4938-87c1-af4a0b09f0ab\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"55f47a07-83a7-4e45-ae80-e71bb2d9ddae\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_external_reference_card_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.809-04:00"},{"id":"1ca3a903-7391-4549-bb6e-b2e3c5293120","created_at":"2026-03-12T13:40:57.810-04:00","inputs":[{"name":"order_sign_valid_cards_with_links","value":"[{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"69cbcae4-d35d-4fcb-be6a-17091b3486f0\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"56c9e847-cff7-4c9a-99e9-0d4dff4e379b\"},{\"summary\":\"Order Sign Launch SMART Application Card\",\"detail\":\"This is a Launch SMART Application Card which can cause the launching of SMART apps to occur in the context in which they are relevant to patient care and/or to payment-related decision-making.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"coverage-info\",\"display\":\"Coverage Information\"}},\"links\":[{\"label\":\"Inferno\",\"url\":\"http://localhost:4567/custom/smart/launch\",\"type\":\"smart\"}],\"uuid\":\"dfeb42c9-9426-4938-87c1-af4a0b09f0ab\"},{\"summary\":\"Order Sign External Reference Card\",\"detail\":\"This is an External Reference Card containing one or more links to external web pages, PDFs, or other resources that provide relevant coverage information.\",\"indicator\":\"info\",\"source\":{\"label\":\"Inferno\",\"url\":\"https://inferno.healthit.gov/\",\"topic\":{\"system\":\"http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp\",\"code\":\"guideline\",\"display\":\"Guideline\"}},\"links\":[{\"label\":\"CRD IG External Reference Card Info\",\"url\":\"https://build.fhir.org/ig/HL7/davinci-crd/cards.html#external-reference\",\"type\":\"absolute\"}],\"uuid\":\"55f47a07-83a7-4e45-ae80-e71bb2d9ddae\"}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_launch_smart_app_card_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.810-04:00"},{"id":"176fbb56-6be9-4aa8-b0e5-105840722439","created_at":"2026-03-12T13:40:57.812-04:00","inputs":[{"name":"order_sign_valid_cards","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/176fbb56-6be9-4aa8-b0e5-105840722439/io/inputs/order_sign_valid_cards\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_valid_instructions_card_received","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.812-04:00"},{"id":"24069163-147a-4fb5-b7d2-f05b88cbf74a","created_at":"2026-03-12T13:40:57.815-04:00","inputs":[{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"8eb85b5968c3d7985d9141693a3a02efeee37649d970eb58edfb283bf841c253\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7f8120f32a93e93e6ff79b4caa32d1cdd6442501a4b152ff7fc7e7327d90dda8\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"invoked_hook","value":"order-sign","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[{"name":"order_sign_coverage_info","type":"text","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"8eb85b5968c3d7985d9141693a3a02efeee37649d970eb58edfb283bf841c253\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7f8120f32a93e93e6ff79b4caa32d1cdd6442501a4b152ff7fc7e7327d90dda8\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]"}],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.815-04:00"},{"id":"323a6fe5-6a9c-4d46-b46d-ed73afc8341b","created_at":"2026-03-12T13:40:57.858-04:00","inputs":[{"name":"order_sign_coverage_info","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"8eb85b5968c3d7985d9141693a3a02efeee37649d970eb58edfb283bf841c253\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7f8120f32a93e93e6ff79b4caa32d1cdd6442501a4b152ff7fc7e7327d90dda8\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.858-04:00"},{"id":"cbed4561-f5b1-401b-8b91-15e9922791ab","created_at":"2026-03-12T13:40:57.903-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/cbed4561-f5b1-401b-8b91-15e9922791ab/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_contexts","value":"[{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"DeviceRequest\",\"id\":\"devreq-015-e0250\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}},{\"userId\":\"Practitioner/pra1234\",\"patientId\":\"pat015\",\"encounterId\":\"pat015-rad-encounter\",\"draftOrders\":{\"resourceType\":\"Bundle\",\"type\":\"collection\",\"entry\":[{\"resource\":{\"resourceType\":\"ServiceRequest\",\"id\":\"servreq-g0180-1\",\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}]}}]}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept).coding[0]: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest.code.ofType(CodeableConcept): None of the codings provided are in the value set 'CRD Device Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/deviceRequest|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#E0250)","type":"warning"},{"message":"DeviceRequest/devreq-015-e0250: DeviceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: A definition for CodeSystem 'https://bluebutton.cms.gov/resources/codesystem/hcpcs' could not be found, so the code cannot be validated","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest.code: None of the codings provided are in the value set 'CRD Service Request Codes Value Set' (http://hl7.org/fhir/us/davinci-crd/ValueSet/serviceRequestCodes|2.0.1), and a coding should come from this value set unless it has no suitable code (note that the validator cannot judge what is suitable) (codes = https://bluebutton.cms.gov/resources/codesystem/hcpcs#G0180)","type":"warning"},{"message":"ServiceRequest/servreq-g0180-1: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_propose_alternate_request_card_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.903-04:00"},{"id":"2c5dd456-230a-4f86-8a37-b90419acaac2","created_at":"2026-03-12T13:40:57.941-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/2c5dd456-230a-4f86-8a37-b90419acaac2/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"ServiceRequest: ServiceRequest: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_additional_orders_card_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.941-04:00"},{"id":"70cf0910-da7e-4ff1-87f6-3569755731d9","created_at":"2026-03-12T13:40:57.981-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/70cf0910-da7e-4ff1-87f6-3569755731d9/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"8eb85b5968c3d7985d9141693a3a02efeee37649d970eb58edfb283bf841c253\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7f8120f32a93e93e6ff79b4caa32d1cdd6442501a4b152ff7fc7e7327d90dda8\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Task: Task.input[0].type: Binding for path Task.input[0].type has no source, so can't be checked","type":"info"},{"message":"Task: Task.input[0].type: Reference to draft CodeSystem http://hl7.org/fhir/uv/sdc/CodeSystem/temp|3.0.0","type":"info"},{"message":"Task: Task.input[0].value.ofType(canonical): Canonical URL 'http://example.org/Questionnaire/XYZ' does not resolve","type":"info"},{"message":"Task: Task.input[1].type: Binding for path Task.input[1].type has no source, so can't be checked","type":"info"},{"message":"Task: Task: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_request_form_completion_response_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:57.981-04:00"},{"id":"a1e1d226-ec5e-4a94-b2f8-1ca601de9071","created_at":"2026-03-12T13:40:58.025-04:00","inputs":[{"name":"order_sign_valid_cards_with_suggestions","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/a1e1d226-ec5e-4a94-b2f8-1ca601de9071/io/inputs/order_sign_valid_cards_with_suggestions\nfor details\n","type":"text","is_large":true},{"name":"order_sign_valid_system_actions","value":"[{\"type\":\"update\",\"description\":\"Added coverage information to DeviceRequest resource.\",\"resource\":{\"id\":\"devreq-015-e0250\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"8eb85b5968c3d7985d9141693a3a02efeee37649d970eb58edfb283bf841c253\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"f105372f-bbef-442c-ad7a-708fee7f8c93\"}],\"status\":\"draft\",\"intent\":\"original-order\",\"codeCodeableConcept\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"E0250\",\"display\":\"Hospital bed fixed height with any type of side rails, mattress\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"authoredOn\":\"2023-01-01T00:00:00Z\",\"requester\":{\"reference\":\"Practitioner/pra1234\"},\"performer\":{\"reference\":\"Practitioner/pra1234\"},\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"DeviceRequest\"}},{\"type\":\"update\",\"description\":\"Added coverage information to ServiceRequest resource.\",\"resource\":{\"id\":\"servreq-g0180-1\",\"extension\":[{\"extension\":[{\"url\":\"coverage\",\"valueReference\":{\"reference\":\"Coverage/cov015\"}},{\"url\":\"covered\",\"valueCode\":\"covered\"},{\"url\":\"pa-needed\",\"valueCode\":\"no-auth\"},{\"url\":\"date\",\"valueDate\":\"2026-03-12\"},{\"url\":\"coverage-assertion-id\",\"valueString\":\"7f8120f32a93e93e6ff79b4caa32d1cdd6442501a4b152ff7fc7e7327d90dda8\"}],\"url\":\"http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information\"}],\"identifier\":[{\"type\":{\"coding\":[{\"system\":\"http://terminology.hl7.org/CodeSystem/v2-0203\",\"code\":\"PLAC\"}]},\"value\":\"11ddab7e-1488-4848-b3d5-512d2f1e3f28\"}],\"status\":\"draft\",\"intent\":\"order\",\"code\":{\"coding\":[{\"system\":\"https://bluebutton.cms.gov/resources/codesystem/hcpcs\",\"code\":\"G0180\",\"display\":\"Medicare-covered home health services under a home health plan of care\"}]},\"subject\":{\"reference\":\"Patient/pat015\"},\"occurrenceDateTime\":\"2017-10-01\",\"authoredOn\":\"2017-10-04\",\"requester\":{\"display\":\"Smythe Juliette, MD\"},\"performer\":[{\"reference\":\"Practitioner/pra1234\"}],\"insurance\":[{\"reference\":\"Coverage/cov015\"}],\"resourceType\":\"ServiceRequest\"}}]","type":"text"},{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"messages":[{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"},{"message":"Coverage/cov015: Coverage: Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation)","type":"warning"}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_order_sign-crd_create_or_update_coverage_info_response_validation","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:58.025-04:00"},{"id":"54971da9-b6d1-48c3-b9b5-b3bf56e900a0","created_at":"2026-03-12T13:40:58.029-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"},{"name":"encryption_method","label":"JWT Signing Algorithm","description":"CDS Hooks recommends ES384 and RS384 for JWT signature verification.\nSelect which method to use.\n","value":"ES384","type":"radio"},{"name":"jwks_kid","label":"CDS Services JWKS kid","description":"The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint\nrequiring authentication.\nDefaults to the first JWK in the list if no kid is supplied.\n","value":null,"type":"text"},{"name":"order_sign_service_ids","label":"Service id for the service that implements the `order-sign` hook","description":"\n If blank, Inferno will attempt to infer the service id to use by finding a service entry in the\n Discovery response for the target hook. If it cannot be inferred, the tests will be skipped.\n ","value":"order-sign-service","type":"text"},{"name":"order_sign_request_bodies","label":"Request body or bodies for invoking the `order-sign` hook","description":"To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].","value":"Input is too large to display, please visit\nhttp://localhost:4567/api/test_sessions/1rv4dRcljXa/results/54971da9-b6d1-48c3-b9b5-b3bf56e900a0/io/inputs/order_sign_request_bodies\nfor details\n","type":"textarea","is_large":true}],"optional":true,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_order_sign","test_run_id":"5ab9fcbe-b72d-4599-87c1-e8e93a239ac5","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:40:58.029-04:00"},{"id":"ca0e730e-1a06-4f7c-94e3-d748220ab9a7","created_at":"2026-03-12T13:41:09.565-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_external_reference_card_across_hooks_validation","test_run_id":"2bea4879-7081-41cd-bcbc-70135223832a","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:41:09.565-04:00"},{"id":"e4732c1a-ed0a-4cdf-bea0-0897765865b8","created_at":"2026-03-12T13:41:09.570-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_valid_instructions_card_received_across_hooks","test_run_id":"2bea4879-7081-41cd-bcbc-70135223832a","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:41:09.570-04:00"},{"id":"4fd3b622-15c5-4eea-8d7b-277a568f636b","created_at":"2026-03-12T13:41:09.574-04:00","inputs":[{"name":"base_url","value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation-crd_coverage_info_system_action_across_hooks_validation","test_run_id":"2bea4879-7081-41cd-bcbc-70135223832a","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:41:09.574-04:00"},{"id":"46a31722-6526-4c89-b095-5a815a213c67","created_at":"2026-03-12T13:41:09.575-04:00","inputs":[{"name":"base_url","label":"CRD server base URL","description":null,"value":"http://localhost:4567/custom/crd_client","type":"text"}],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks-crd_server_required_card_response_validation","test_run_id":"2bea4879-7081-41cd-bcbc-70135223832a","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:41:09.575-04:00"},{"id":"0dc294c4-8e0f-4285-b4a7-458a673b726f","created_at":"2026-03-12T13:41:09.579-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"pass","test_group_id":"crd_server-crd_server_hooks","test_run_id":"2bea4879-7081-41cd-bcbc-70135223832a","test_session_id":"1rv4dRcljXa","updated_at":"2026-03-12T13:41:09.579-04:00"},{"id":"2c084c1c-0648-4892-92f5-315d14be2f1e","created_at":"2026-03-12T13:41:09.581-04:00","inputs":[],"optional":false,"outputs":[],"requests":[],"result":"fail","test_run_id":"2bea4879-7081-41cd-bcbc-70135223832a","test_session_id":"1rv4dRcljXa","test_suite_id":"crd_server","updated_at":"2026-03-12T13:41:09.581-04:00"}] \ No newline at end of file diff --git a/execution_scripts/prefetch/appointment-book-request_complete-prefetch.json b/execution_scripts/prefetch/appointment-book-request_complete-prefetch.json new file mode 100644 index 00000000..d192e4b2 --- /dev/null +++ b/execution_scripts/prefetch/appointment-book-request_complete-prefetch.json @@ -0,0 +1,1253 @@ +{ + "hookInstance": "44577c69-dfbe-bbad-ba6d-3e05e953b2e1", + "fhirServer": "https://example/r4", + "hook": "appointment-book", + "fhirAuthorization": { + "access_token": "SAMPLE_TOKEN", + "token_type": "Bearer", + "expires_in": 300, + "scope": "user/Patient.read user/Observation.read", + "subject": "cds-service" + }, + "context": { + "userId": "Practitioner/example", + "patientId": "forprefetch", + "encounterId": "forprefetch", + "appointments": { + "resourceType": "Bundle", + "type": "collection", + "entry": [ + { + "fullUrl": "https://example/r4/Appointment/forprefetch-pra", + "resource": { + "resourceType": "Appointment", + "id": "forprefetch-pra", + "status": "proposed", + "description": "CPAP adjustments", + "basedOn": [ + { + "reference": "ServiceRequest/forprefetch-pra" + }, + { + "reference": "ServiceRequest/forprefetch-rol" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/alternate-reference", + "valueReference": { + "reference": "DeviceRequest/forprefetch-pra" + } + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/alternate-reference", + "valueReference": { + "reference": "DeviceRequest/forprefetch-rol" + } + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/alternate-reference", + "valueReference": { + "reference": "MedicationRequest/forprefetch-pra" + } + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/alternate-reference", + "valueReference": { + "reference": "MedicationRequest/forprefetch-rol" + } + } + ] + } + ], + "participant": [ + { + "actor": { + "reference": "Patient/forprefetch" + }, + "status": "tentative" + }, + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF" + } + ] + } + ], + "actor": { + "reference": "Practitioner/app-par-act" + }, + "status": "accepted" + }, + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF" + } + ] + } + ], + "actor": { + "reference": "PractitionerRole/app-par-act" + }, + "status": "accepted" + }, + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF" + } + ] + } + ], + "actor": { + "reference": "Location/app-par-act" + }, + "status": "accepted" + } + ] + } + } + ] + } + }, + "prefetch": { + "patient": { + "resourceType": "Patient", + "id": "forprefetch", + "identifier": [ + { + "use": "usual", + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR" + } + ], + "text": "Medical Record Number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "1032702" + } + ], + "active": true, + "name": [ + { + "family": "Shaw", + "given": [ + "Amy", + "V." + ], + "period": { + "start": "2016-12-06", + "end": "2020-07-22" + } + } + ], + "gender": "female", + "birthDate": "1987-02-20" + }, + "encounter": { + "resourceType": "Encounter", + "id": "forprefetch", + "status": "in-progress", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB", + "display": "ambulatory" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "270427003", + "display": "Patient-initiated encounter" + } + ] + } + ], + "subject": { + "reference": "Patient/forprefetch" + }, + "participant": [ + { + "individual": { + "reference": "Practitioner/enc-par-ind" + } + }, + { + "individual": { + "reference": "PractitionerRole/enc-par-ind" + } + } + ], + "location": [ + { + "location": { + "reference": "Location/enc-loc-loc", + "display": "Location1" + } + } + ], + "serviceProvider": { + "reference": "Organization/enc-ser" + } + }, + "coverage": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Coverage?patient=Patient/forprefetch&status=active" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Coverage/forprefetch", + "resource": { + "resourceType": "Coverage", + "id": "forprefetch", + "status": "active", + "subscriberId": "123", + "beneficiary": { + "reference": "Patient/forprefetch" + }, + "relationship": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", + "code": "self" + } + ] + }, + "payor": [ + { + "reference": "http://example.org/fhir/Organization/example-payer", + "display": "Payer XYZ" + } + ] + } + } + ] + }, + "deviceRequests": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/DeviceRequest?_id=forprefetch-rol,forprefetch-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-rol", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-rol" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/dev-req" + }, + "performer": { + "reference": "PractitionerRole/dev-per" + } + } + }, + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-pra", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-pra" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/dev-req" + }, + "performer": { + "reference": "Practitioner/dev-per" + } + } + } + ] + }, + "medicationRequests": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/MedicationRequest?_id=forprefetch-pra,forprefetch-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-pra", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/med-req" + }, + "performer": { + "reference": "Practitioner/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + }, + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-rol", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2017-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/med-req" + }, + "performer": { + "reference": "PractitionerRole/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + } + ] + }, + "serviceRequests": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/ServiceRequest?_id=forprefetch-pra,forprefetch-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-pra", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "Practitioner/ser-req" + }, + "performer": [ + { + "reference": "Practitioner/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + }, + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-rol", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "PractitionerRole/ser-req" + }, + "performer": [ + { + "reference": "PractitionerRole/ser-per" + }, + { + "reference": "Organization/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + } + ] + }, + "medications": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Medication?_id=med-medref" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Medication/med-medref", + "resource": { + "resourceType": "Medication", + "id": "med-medref", + "code": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "206765" + } + ], + "text": "lisinopril oral 10 mg" + } + } + } + ] + }, + "devices": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Device?_id=dev-codref-pra,dev-codref-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Device/dev-codref-pra", + "resource": { + "resourceType": "Device", + "id": "dev-codref-pra", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345675" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Device/dev-codref-rol", + "resource": { + "resourceType": "Device", + "id": "dev-codref-rol", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345677" + } + ] + } + } + ] + }, + "practitionerRoles": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/PractitionerRole?_id=app-par-act,enc-par-ind,dev-req,dev-per,med-req,med-per,ser-req,ser-per" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/PractitionerRole/app-par-act", + "resource": { + "resourceType": "PractitionerRole", + "id": "app-par-act", + "organization": { + "reference": "Organization/app-par-act-org" + }, + "practitioner": { + "reference": "Practitioner/app-par-act-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/enc-par-ind", + "resource": { + "resourceType": "PractitionerRole", + "id": "enc-par-ind", + "organization": { + "reference": "Organization/enc-par-ind-org" + }, + "practitioner": { + "reference": "Practitioner/enc-par-ind-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-req", + "organization": { + "reference": "Organization/dev-req-org" + }, + "practitioner": { + "reference": "Practitioner/dev-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-per", + "organization": { + "reference": "Organization/dev-per-org" + }, + "practitioner": { + "reference": "Practitioner/dev-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-req", + "organization": { + "reference": "Organization/med-req-org" + }, + "practitioner": { + "reference": "Practitioner/med-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-per", + "organization": { + "reference": "Organization/med-per-org" + }, + "practitioner": { + "reference": "Practitioner/med-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-req", + "organization": { + "reference": "Organization/ser-req-org" + }, + "practitioner": { + "reference": "Practitioner/ser-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-per", + "organization": { + "reference": "Organization/ser-per-org" + }, + "practitioner": { + "reference": "Practitioner/ser-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + } + ] + }, + "practitioners": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Practitioner?_id=app-par-act-pra,app-par-act,enc-par-ind-pra,enc-par-ind,dev-req-pra,dev-per-pra,dev-req,dev-per,med-req,med-per,med-req-pra,med-per-pra,ser-req,ser-per,ser-req-pra,ser-per-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Practitioner/app-par-act-pra", + "resource": { + "resourceType": "Practitioner", + "id": "app-par-act-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "app-par-act-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/app-par-act", + "resource": { + "resourceType": "Practitioner", + "id": "app-par-act", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "app-par-act" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind-pra", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Careful", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Alternate", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req", + "resource": { + "resourceType": "Practitioner", + "id": "med-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per", + "resource": { + "resourceType": "Practitioner", + "id": "med-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per-pra" + } + ] + } + } + ] + }, + "organizations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Organization?_id=app-par-act-org,enc-par-ind-org,enc-ser,dev-req-org,dev-per-org,med-req-org,med-per-org,med-dis-per,ser-per,ser-req-org,ser-per-org" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Organization/app-par-act-org", + "resource": { + "resourceType": "Organization", + "id": "app-par-act-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "app-par-act-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/enc-par-ind-org", + "resource": { + "resourceType": "Organization", + "id": "enc-par-ind-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "enc-par-ind-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/enc-ser", + "resource": { + "resourceType": "Organization", + "id": "enc-ser", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "University Medical Center", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-req-org", + "resource": { + "resourceType": "Organization", + "id": "dev-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-per-org", + "resource": { + "resourceType": "Organization", + "id": "dev-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-req-org", + "resource": { + "resourceType": "Organization", + "id": "med-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-per-org", + "resource": { + "resourceType": "Organization", + "id": "med-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-dis-per", + "resource": { + "resourceType": "Organization", + "id": "med-dis-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-dis-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per", + "resource": { + "resourceType": "Organization", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-req-org", + "resource": { + "resourceType": "Organization", + "id": "ser-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per-org", + "resource": { + "resourceType": "Organization", + "id": "ser-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per-org", + "active": true + } + } + ] + }, + "locations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Location?_id=enc-loc-loc,app-par-act,ser-locref" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Location/enc-loc-loc", + "resource": { + "resourceType": "Location", + "id": "enc-loc-loc", + "status": "active", + "name": "South Wing, second floor", + "managingOrganization": { + "reference": "Organization/enc-ser" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/app-par-act", + "resource": { + "resourceType": "Location", + "id": "app-par-act", + "status": "active", + "name": "app-par-act", + "managingOrganization": { + "reference": "Organization/app-par-act-org" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/ser-locref", + "resource": { + "resourceType": "Location", + "id": "ser-locref", + "status": "active", + "name": "ser-locref", + "managingOrganization": { + "reference": "Organization/ser-per" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/execution_scripts/prefetch/encounter-discharge-request_complete-prefetch.json b/execution_scripts/prefetch/encounter-discharge-request_complete-prefetch.json new file mode 100644 index 00000000..746dc4ed --- /dev/null +++ b/execution_scripts/prefetch/encounter-discharge-request_complete-prefetch.json @@ -0,0 +1,307 @@ +{ + "hookInstance": "44577c69-df0e-b0ad-ba60-3e05e953b2ea", + "fhirServer": "https://example/r4", + "hook": "encounter-discharge", + "fhirAuthorization": { + "access_token": "SAMPLE_TOKEN", + "token_type": "Bearer", + "expires_in": 300, + "scope": "user/Patient.read user/Observation.read", + "subject": "cds-service" + }, + "context": { + "userId": "Practitioner/example", + "patientId": "forprefetch", + "encounterId": "forprefetch" + }, + "prefetch": { + "patient": { + "resourceType": "Patient", + "id": "forprefetch", + "identifier": [ + { + "use": "usual", + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR" + } + ], + "text": "Medical Record Number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "1032702" + } + ], + "active": true, + "name": [ + { + "family": "Shaw", + "given": [ + "Amy", + "V." + ], + "period": { + "start": "2016-12-06", + "end": "2020-07-22" + } + } + ], + "gender": "female", + "birthDate": "1987-02-20" + }, + "encounter": { + "resourceType": "Encounter", + "id": "forprefetch", + "status": "in-progress", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB", + "display": "ambulatory" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "270427003", + "display": "Patient-initiated encounter" + } + ] + } + ], + "subject": { + "reference": "Patient/forprefetch" + }, + "participant": [ + { + "individual": { + "reference": "Practitioner/enc-par-ind" + } + }, + { + "individual": { + "reference": "PractitionerRole/enc-par-ind" + } + } + ], + "location": [ + { + "location": { + "reference": "Location/enc-loc-loc", + "display": "Location1" + } + } + ], + "serviceProvider": { + "reference": "Organization/enc-ser" + } + }, + "coverage": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Coverage?patient=Patient/forprefetch&status=active" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Coverage/forprefetch", + "resource": { + "resourceType": "Coverage", + "id": "forprefetch", + "status": "active", + "subscriberId": "123", + "beneficiary": { + "reference": "Patient/forprefetch" + }, + "relationship": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", + "code": "self" + } + ] + }, + "payor": [ + { + "reference": "http://example.org/fhir/Organization/example-payer", + "display": "Payer XYZ" + } + ] + } + } + ] + }, + "practitionerRoles": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/PractitionerRole?_id=enc-par-ind" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/PractitionerRole/enc-par-ind", + "resource": { + "resourceType": "PractitionerRole", + "id": "enc-par-ind", + "organization": { + "reference": "Organization/enc-par-ind-org" + }, + "practitioner": { + "reference": "Practitioner/enc-par-ind-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + } + ] + }, + "practitioners": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Practitioner?_id=enc-par-ind-pra,enc-par-ind" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind-pra", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Careful", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Alternate", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + } + ] + }, + "organizations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Organization?_id=enc-par-ind-org,enc-ser" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Organization/enc-par-ind-org", + "resource": { + "resourceType": "Organization", + "id": "enc-par-ind-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "enc-par-ind-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/enc-ser", + "resource": { + "resourceType": "Organization", + "id": "enc-ser", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "University Medical Center", + "active": true + } + } + ] + }, + "locations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Location?_id=enc-loc-loc" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Location/enc-loc-loc", + "resource": { + "resourceType": "Location", + "id": "enc-loc-loc", + "status": "active", + "name": "South Wing, second floor", + "managingOrganization": { + "reference": "Organization/enc-ser" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/execution_scripts/prefetch/encounter-start-request_complete-prefetch.json b/execution_scripts/prefetch/encounter-start-request_complete-prefetch.json new file mode 100644 index 00000000..1c9e38c5 --- /dev/null +++ b/execution_scripts/prefetch/encounter-start-request_complete-prefetch.json @@ -0,0 +1,307 @@ +{ + "hookInstance": "44577c69-df0e-b0ad-ba6d-3e05e953b2ea", + "fhirServer": "https://example/r4", + "hook": "encounter-start", + "fhirAuthorization": { + "access_token": "SAMPLE_TOKEN", + "token_type": "Bearer", + "expires_in": 300, + "scope": "user/Patient.read user/Observation.read", + "subject": "cds-service" + }, + "context": { + "userId": "Practitioner/example", + "patientId": "forprefetch", + "encounterId": "forprefetch" + }, + "prefetch": { + "patient": { + "resourceType": "Patient", + "id": "forprefetch", + "identifier": [ + { + "use": "usual", + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR" + } + ], + "text": "Medical Record Number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "1032702" + } + ], + "active": true, + "name": [ + { + "family": "Shaw", + "given": [ + "Amy", + "V." + ], + "period": { + "start": "2016-12-06", + "end": "2020-07-22" + } + } + ], + "gender": "female", + "birthDate": "1987-02-20" + }, + "encounter": { + "resourceType": "Encounter", + "id": "forprefetch", + "status": "in-progress", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB", + "display": "ambulatory" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "270427003", + "display": "Patient-initiated encounter" + } + ] + } + ], + "subject": { + "reference": "Patient/forprefetch" + }, + "participant": [ + { + "individual": { + "reference": "Practitioner/enc-par-ind" + } + }, + { + "individual": { + "reference": "PractitionerRole/enc-par-ind" + } + } + ], + "location": [ + { + "location": { + "reference": "Location/enc-loc-loc", + "display": "Location1" + } + } + ], + "serviceProvider": { + "reference": "Organization/enc-ser" + } + }, + "coverage": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Coverage?patient=Patient/forprefetch&status=active" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Coverage/forprefetch", + "resource": { + "resourceType": "Coverage", + "id": "forprefetch", + "status": "active", + "subscriberId": "123", + "beneficiary": { + "reference": "Patient/forprefetch" + }, + "relationship": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", + "code": "self" + } + ] + }, + "payor": [ + { + "reference": "http://example.org/fhir/Organization/example-payer", + "display": "Payer XYZ" + } + ] + } + } + ] + }, + "practitionerRoles": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/PractitionerRole?_id=enc-par-ind" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/PractitionerRole/enc-par-ind", + "resource": { + "resourceType": "PractitionerRole", + "id": "enc-par-ind", + "organization": { + "reference": "Organization/enc-par-ind-org" + }, + "practitioner": { + "reference": "Practitioner/enc-par-ind-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + } + ] + }, + "practitioners": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Practitioner?_id=enc-par-ind-pra,enc-par-ind" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind-pra", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Careful", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Alternate", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + } + ] + }, + "organizations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Organization?_id=enc-par-ind-org,enc-ser" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Organization/enc-par-ind-org", + "resource": { + "resourceType": "Organization", + "id": "enc-par-ind-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "enc-par-ind-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/enc-ser", + "resource": { + "resourceType": "Organization", + "id": "enc-ser", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "University Medical Center", + "active": true + } + } + ] + }, + "locations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Location?_id=enc-loc-loc" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Location/enc-loc-loc", + "resource": { + "resourceType": "Location", + "id": "enc-loc-loc", + "status": "active", + "name": "South Wing, second floor", + "managingOrganization": { + "reference": "Organization/enc-ser" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/execution_scripts/prefetch/order-dispatch-request_complete-prefetch.json b/execution_scripts/prefetch/order-dispatch-request_complete-prefetch.json new file mode 100644 index 00000000..cc85b265 --- /dev/null +++ b/execution_scripts/prefetch/order-dispatch-request_complete-prefetch.json @@ -0,0 +1,1803 @@ +{ + "hookInstance": "44577c69-df0e-bbad-ba6d-3e05e953b2ea", + "fhirServer": "https://example/r4", + "hook": "order-dispatch", + "fhirAuthorization": { + "access_token": "SAMPLE_TOKEN", + "token_type": "Bearer", + "expires_in": 300, + "scope": "user/Patient.read user/Observation.read", + "subject": "cds-service" + }, + "context": { + "userId": "Practitioner/example", + "patientId": "forprefetch", + "encounterId": "forprefetch", + "dispatchedOrders": [ + "CommunicationRequest/forprefetch-ref-prac", + "CommunicationRequest/forprefetch-ref-role", + "CommunicationRequest/forprefetch-ref-org", + "DeviceRequest/forprefetch-rol", + "DeviceRequest/forprefetch-pra", + "MedicationRequest/forprefetch-rol", + "MedicationRequest/forprefetch-pra", + "NutritionOrder/forprefetch-rol", + "NutritionOrder/forprefetch-pra", + "ServiceRequest/forprefetch-rol", + "ServiceRequest/forprefetch-pra", + "VisionPrescription/forprefetch-rol", + "VisionPrescription/forprefetch-pra" + ] + }, + "prefetch": { + "patient": { + "resourceType": "Patient", + "id": "forprefetch", + "identifier": [ + { + "use": "usual", + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR" + } + ], + "text": "Medical Record Number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "1032702" + } + ], + "active": true, + "name": [ + { + "family": "Shaw", + "given": [ + "Amy", + "V." + ], + "period": { + "start": "2016-12-06", + "end": "2020-07-22" + } + } + ], + "gender": "female", + "birthDate": "1987-02-20" + }, + "encounter": { + "resourceType": "Encounter", + "id": "forprefetch", + "status": "in-progress", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB", + "display": "ambulatory" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "270427003", + "display": "Patient-initiated encounter" + } + ] + } + ], + "subject": { + "reference": "Patient/forprefetch" + }, + "participant": [ + { + "individual": { + "reference": "Practitioner/enc-par-ind" + } + }, + { + "individual": { + "reference": "PractitionerRole/enc-par-ind" + } + } + ], + "location": [ + { + "location": { + "reference": "Location/enc-loc-loc", + "display": "Location1" + } + } + ], + "serviceProvider": { + "reference": "Organization/enc-ser" + } + }, + "coverage": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Coverage?patient=Patient/forprefetch&status=active" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Coverage/forprefetch", + "resource": { + "resourceType": "Coverage", + "id": "forprefetch", + "status": "active", + "subscriberId": "123", + "beneficiary": { + "reference": "Patient/forprefetch" + }, + "relationship": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", + "code": "self" + } + ] + }, + "payor": [ + { + "reference": "http://example.org/fhir/Organization/example-payer", + "display": "Payer XYZ" + } + ] + } + } + ] + }, + "communicationRequests": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/CommunicationRequest?_id=forprefetch-ref-prac,forprefetch-ref-role,forprefetch-ref-org" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-prac", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-prac", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/com-req" + }, + "recipient": [ + { + "reference": "Practitioner/com-rec" + } + ], + "sender": { + "reference": "Practitioner/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-role", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-role", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/com-req" + }, + "recipient": [ + { + "reference": "PractitionerRole/com-rec" + } + ], + "sender": { + "reference": "PractitionerRole/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-org", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-org", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/com-req" + }, + "recipient": [ + { + "reference": "Organization/com-rec" + } + ], + "sender": { + "reference": "Organization/com-sen" + } + } + } + ] + }, + "deviceRequests": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/DeviceRequest?_id=forprefetch-rol,forprefetch-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-rol", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-rol" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/dev-req" + }, + "performer": { + "reference": "PractitionerRole/dev-per" + } + } + }, + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-pra", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-pra" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/dev-req" + }, + "performer": { + "reference": "Practitioner/dev-per" + } + } + } + ] + }, + "medicationRequests": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/MedicationRequest?_id=forprefetch-pra,forprefetch-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-pra", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/med-req" + }, + "performer": { + "reference": "Practitioner/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + }, + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-rol", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2017-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/med-req" + }, + "performer": { + "reference": "PractitionerRole/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + } + ] + }, + "nutritionOrders": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/NutritionOrder?_id=forprefetch-pra,forprefetch-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/NutritionOrder/forprefetch-pra", + "resource": { + "resourceType": "NutritionOrder", + "id": "forprefetch-pra", + "status": "draft", + "intent": "original-order", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateTime": "2014-09-17", + "orderer": { + "reference": "Practitioner/nut-ord" + }, + "oralDiet": { + "type": [ + { + "text": "Pureed diet" + } + ] + } + } + }, + { + "fullUrl": "https://example/r4/NutritionOrder/forprefetch-rol", + "resource": { + "resourceType": "NutritionOrder", + "id": "forprefetch-rol", + "status": "draft", + "intent": "original-order", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateTime": "2014-09-17", + "orderer": { + "reference": "PractitionerRole/nut-ord" + }, + "oralDiet": { + "type": [ + { + "text": "Pureed diet" + } + ] + } + } + } + ] + }, + "serviceRequests": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/ServiceRequest?_id=forprefetch-pra,forprefetch-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-pra", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "Practitioner/ser-req" + }, + "performer": [ + { + "reference": "Practitioner/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + }, + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-rol", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "PractitionerRole/ser-req" + }, + "performer": [ + { + "reference": "PractitionerRole/ser-per" + }, + { + "reference": "Organization/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + } + ] + }, + "visionPrescriptions": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/VisionPrescription?_id=forprefetch-pra,forprefetch-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/VisionPrescription/forprefetch-pra", + "resource": { + "resourceType": "VisionPrescription", + "id": "forprefetch-pra", + "status": "draft", + "created": "2014-06-15", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateWritten": "2014-06-15", + "prescriber": { + "reference": "Practitioner/vis-pre" + }, + "lensSpecification": [ + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "right", + "sphere": -2, + "prism": [ + { + "amount": 0.5, + "base": "down" + } + ], + "add": 2 + }, + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "left", + "sphere": -1, + "cylinder": -0.5, + "axis": 180, + "prism": [ + { + "amount": 0.5, + "base": "up" + } + ], + "add": 2 + } + ] + } + }, + { + "fullUrl": "https://example/r4/VisionPrescription/forprefetch-rol", + "resource": { + "resourceType": "VisionPrescription", + "id": "forprefetch-rol", + "status": "draft", + "created": "2014-06-15", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateWritten": "2014-06-15", + "prescriber": { + "reference": "PractitionerRole/vis-pre" + }, + "lensSpecification": [ + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "right", + "sphere": -2, + "prism": [ + { + "amount": 0.5, + "base": "down" + } + ], + "add": 2 + }, + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "left", + "sphere": -1, + "cylinder": -0.5, + "axis": 180, + "prism": [ + { + "amount": 0.5, + "base": "up" + } + ], + "add": 2 + } + ] + } + } + ] + }, + "medications": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Medication?_id=med-medref" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Medication/med-medref", + "resource": { + "resourceType": "Medication", + "id": "med-medref", + "code": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "206765" + } + ], + "text": "lisinopril oral 10 mg" + } + } + } + ] + }, + "devices": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Device?_id=dev-codref-pra,dev-codref-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Device/dev-codref-pra", + "resource": { + "resourceType": "Device", + "id": "dev-codref-pra", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345675" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Device/dev-codref-rol", + "resource": { + "resourceType": "Device", + "id": "dev-codref-rol", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345677" + } + ] + } + } + ] + }, + "practitionerRoles": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/PractitionerRole?_id=enc-par-ind,com-req,com-rec,com-sen,dev-req,dev-per,med-req,med-per,nut-ord,ser-req,ser-per,vis-pre" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/PractitionerRole/enc-par-ind", + "resource": { + "resourceType": "PractitionerRole", + "id": "enc-par-ind", + "organization": { + "reference": "Organization/enc-par-ind-org" + }, + "practitioner": { + "reference": "Practitioner/enc-par-ind-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-req", + "organization": { + "reference": "Organization/com-req-org" + }, + "practitioner": { + "reference": "Practitioner/com-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-rec", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-rec", + "organization": { + "reference": "Organization/com-rec-org" + }, + "practitioner": { + "reference": "Practitioner/com-rec-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-sen", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-sen", + "organization": { + "reference": "Organization/com-sen-org" + }, + "practitioner": { + "reference": "Practitioner/com-sen-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-req", + "organization": { + "reference": "Organization/dev-req-org" + }, + "practitioner": { + "reference": "Practitioner/dev-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-per", + "organization": { + "reference": "Organization/dev-per-org" + }, + "practitioner": { + "reference": "Practitioner/dev-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-req", + "organization": { + "reference": "Organization/med-req-org" + }, + "practitioner": { + "reference": "Practitioner/med-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-per", + "organization": { + "reference": "Organization/med-per-org" + }, + "practitioner": { + "reference": "Practitioner/med-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/nut-ord", + "resource": { + "resourceType": "PractitionerRole", + "id": "nut-ord", + "organization": { + "reference": "Organization/nut-ord-org" + }, + "practitioner": { + "reference": "Practitioner/nut-ord-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-req", + "organization": { + "reference": "Organization/ser-req-org" + }, + "practitioner": { + "reference": "Practitioner/ser-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-per", + "organization": { + "reference": "Organization/ser-per-org" + }, + "practitioner": { + "reference": "Practitioner/ser-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/vis-pre", + "resource": { + "resourceType": "PractitionerRole", + "id": "vis-pre", + "organization": { + "reference": "Organization/vis-pre-org" + }, + "practitioner": { + "reference": "Practitioner/vis-pre-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ], + "location": [ + { + "reference": "Location/vis-pre-pra" + } + ] + } + } + ] + }, + "practitioners": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Practitioner?_id=enc-par-ind-pra,enc-par-ind,com-req,com-rec,com-sen,com-req-pra,com-rec-pra,com-sen-pra,dev-req-pra,dev-per-pra,dev-req,dev-per,med-req,med-per,med-req-pra,med-per-pra,nut-ord,nut-ord-pra,ser-req,ser-per,ser-req-pra,ser-per-pra,vis-pre,vis-pre-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind-pra", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Careful", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Alternate", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-req", + "resource": { + "resourceType": "Practitioner", + "id": "com-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-rec", + "resource": { + "resourceType": "Practitioner", + "id": "com-rec", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-rec" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-sen", + "resource": { + "resourceType": "Practitioner", + "id": "com-sen", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-sen" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-rec-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-rec-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-rec-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-sen-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-sen-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-sen-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req", + "resource": { + "resourceType": "Practitioner", + "id": "med-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per", + "resource": { + "resourceType": "Practitioner", + "id": "med-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/nut-ord", + "resource": { + "resourceType": "Practitioner", + "id": "nut-ord", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "nut-ord" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/nut-ord-pra", + "resource": { + "resourceType": "Practitioner", + "id": "nut-ord-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "nut-ord-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/vis-pre", + "resource": { + "resourceType": "Practitioner", + "id": "vis-pre", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "vis-pre" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/vis-pre-pra", + "resource": { + "resourceType": "Practitioner", + "id": "vis-pre-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "vis-pre-pra" + } + ] + } + } + ] + }, + "organizations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Organization?_id=enc-par-ind-org,enc-ser,com-rec,com-sen,com-req-org,com-rec-org,com-sen-org,dev-req-org,dev-per-org,med-req-org,med-per-org,med-dis-per,nut-ord-org,ser-per,ser-req-org,ser-per-org,vis-pre-org" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Organization/enc-par-ind-org", + "resource": { + "resourceType": "Organization", + "id": "enc-par-ind-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "enc-par-ind-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/enc-ser", + "resource": { + "resourceType": "Organization", + "id": "enc-ser", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "University Medical Center", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-rec", + "resource": { + "resourceType": "Organization", + "id": "com-rec", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-rec", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-sen", + "resource": { + "resourceType": "Organization", + "id": "com-sen", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-sen", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-req-org", + "resource": { + "resourceType": "Organization", + "id": "com-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-rec-org", + "resource": { + "resourceType": "Organization", + "id": "com-rec-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-rec-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-sen-org", + "resource": { + "resourceType": "Organization", + "id": "com-sen-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-sen-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-req-org", + "resource": { + "resourceType": "Organization", + "id": "dev-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-per-org", + "resource": { + "resourceType": "Organization", + "id": "dev-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-req-org", + "resource": { + "resourceType": "Organization", + "id": "med-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-per-org", + "resource": { + "resourceType": "Organization", + "id": "med-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-dis-per", + "resource": { + "resourceType": "Organization", + "id": "med-dis-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-dis-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/nut-ord-org", + "resource": { + "resourceType": "Organization", + "id": "nut-ord-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "nut-ord-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per", + "resource": { + "resourceType": "Organization", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-req-org", + "resource": { + "resourceType": "Organization", + "id": "ser-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per-org", + "resource": { + "resourceType": "Organization", + "id": "ser-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/vis-pre-org", + "resource": { + "resourceType": "Organization", + "id": "vis-pre-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "vis-pre-org", + "active": true + } + } + ] + }, + "locations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Location?_id=enc-loc-loc,ser-locref,vis-pre-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Location/enc-loc-loc", + "resource": { + "resourceType": "Location", + "id": "enc-loc-loc", + "status": "active", + "name": "South Wing, second floor", + "managingOrganization": { + "reference": "Organization/enc-ser" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/ser-locref", + "resource": { + "resourceType": "Location", + "id": "ser-locref", + "status": "active", + "name": "ser-locref", + "managingOrganization": { + "reference": "Organization/ser-per" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/vis-pre-pra", + "resource": { + "resourceType": "Location", + "id": "vis-pre-pra", + "status": "active", + "name": "vis-pre-pra", + "managingOrganization": { + "reference": "Organization/vis-pre-org" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/execution_scripts/prefetch/order-select-request_complete-prefetch.json b/execution_scripts/prefetch/order-select-request_complete-prefetch.json new file mode 100644 index 00000000..2d6af00f --- /dev/null +++ b/execution_scripts/prefetch/order-select-request_complete-prefetch.json @@ -0,0 +1,1737 @@ +{ + "hookInstance": "44577c69-dfbe-bbad-ba6e-3e05e953b2ea", + "fhirServer": "https://example/r4", + "hook": "order-select", + "fhirAuthorization": { + "access_token": "SAMPLE_TOKEN", + "token_type": "Bearer", + "expires_in": 300, + "scope": "user/Patient.read user/Observation.read", + "subject": "cds-service" + }, + "context": { + "userId": "Practitioner/example", + "patientId": "forprefetch", + "encounterId": "forprefetch", + "selections": [ + "CommunicationRequest/forprefetch-ref-prac", + "CommunicationRequest/forprefetch-ref-role", + "CommunicationRequest/forprefetch-ref-org", + "DeviceRequest/forprefetch-rol", + "DeviceRequest/forprefetch-pra", + "MedicationRequest/forprefetch-rol", + "MedicationRequest/forprefetch-pra", + "NutritionOrder/forprefetch-rol", + "NutritionOrder/forprefetch-pra", + "ServiceRequest/forprefetch-rol", + "ServiceRequest/forprefetch-pra", + "VisionPrescription/forprefetch-rol", + "VisionPrescription/forprefetch-pra" + ], + "draftOrders": { + "resourceType": "Bundle", + "type": "collection", + "entry": [ + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-prac", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-prac", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/com-req" + }, + "recipient": [ + { + "reference": "Practitioner/com-rec" + } + ], + "sender": { + "reference": "Practitioner/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-role", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-role", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/com-req" + }, + "recipient": [ + { + "reference": "PractitionerRole/com-rec" + } + ], + "sender": { + "reference": "PractitionerRole/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-org", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-org", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/com-req" + }, + "recipient": [ + { + "reference": "Organization/com-rec" + } + ], + "sender": { + "reference": "Organization/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-rol", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-rol" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/dev-req" + }, + "performer": { + "reference": "PractitionerRole/dev-per" + } + } + }, + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-pra", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-pra" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/dev-req" + }, + "performer": { + "reference": "Practitioner/dev-per" + } + } + }, + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-pra", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/med-req" + }, + "performer": { + "reference": "Practitioner/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + }, + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-rol", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2017-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/med-req" + }, + "performer": { + "reference": "PractitionerRole/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + }, + { + "fullUrl": "https://example/r4/NutritionOrder/forprefetch-pra", + "resource": { + "resourceType": "NutritionOrder", + "id": "forprefetch-pra", + "status": "draft", + "intent": "original-order", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateTime": "2014-09-17", + "orderer": { + "reference": "Practitioner/nut-ord" + }, + "oralDiet": { + "type": [ + { + "text": "Pureed diet" + } + ] + } + } + }, + { + "fullUrl": "https://example/r4/NutritionOrder/forprefetch-rol", + "resource": { + "resourceType": "NutritionOrder", + "id": "forprefetch-rol", + "status": "draft", + "intent": "original-order", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateTime": "2014-09-17", + "orderer": { + "reference": "PractitionerRole/nut-ord" + }, + "oralDiet": { + "type": [ + { + "text": "Pureed diet" + } + ] + } + } + }, + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-pra", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "Practitioner/ser-req" + }, + "performer": [ + { + "reference": "Practitioner/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + }, + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-rol", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "PractitionerRole/ser-req" + }, + "performer": [ + { + "reference": "PractitionerRole/ser-per" + }, + { + "reference": "Organization/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + }, + { + "fullUrl": "https://example/r4/VisionPrescription/forprefetch-pra", + "resource": { + "resourceType": "VisionPrescription", + "id": "forprefetch-pra", + "status": "draft", + "created": "2014-06-15", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateWritten": "2014-06-15", + "prescriber": { + "reference": "Practitioner/vis-pre" + }, + "lensSpecification": [ + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "right", + "sphere": -2, + "prism": [ + { + "amount": 0.5, + "base": "down" + } + ], + "add": 2 + }, + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "left", + "sphere": -1, + "cylinder": -0.5, + "axis": 180, + "prism": [ + { + "amount": 0.5, + "base": "up" + } + ], + "add": 2 + } + ] + } + }, + { + "fullUrl": "https://example/r4/VisionPrescription/forprefetch-rol", + "resource": { + "resourceType": "VisionPrescription", + "id": "forprefetch-rol", + "status": "draft", + "created": "2014-06-15", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateWritten": "2014-06-15", + "prescriber": { + "reference": "PractitionerRole/vis-pre" + }, + "lensSpecification": [ + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "right", + "sphere": -2, + "prism": [ + { + "amount": 0.5, + "base": "down" + } + ], + "add": 2 + }, + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "left", + "sphere": -1, + "cylinder": -0.5, + "axis": 180, + "prism": [ + { + "amount": 0.5, + "base": "up" + } + ], + "add": 2 + } + ] + } + } + ] + } + }, + "prefetch": { + "patient": { + "resourceType": "Patient", + "id": "forprefetch", + "identifier": [ + { + "use": "usual", + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR" + } + ], + "text": "Medical Record Number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "1032702" + } + ], + "active": true, + "name": [ + { + "family": "Shaw", + "given": [ + "Amy", + "V." + ], + "period": { + "start": "2016-12-06", + "end": "2020-07-22" + } + } + ], + "gender": "female", + "birthDate": "1987-02-20" + }, + "encounter": { + "resourceType": "Encounter", + "id": "forprefetch", + "status": "in-progress", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB", + "display": "ambulatory" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "270427003", + "display": "Patient-initiated encounter" + } + ] + } + ], + "subject": { + "reference": "Patient/forprefetch" + }, + "participant": [ + { + "individual": { + "reference": "Practitioner/enc-par-ind" + } + }, + { + "individual": { + "reference": "PractitionerRole/enc-par-ind" + } + } + ], + "location": [ + { + "location": { + "reference": "Location/enc-loc-loc", + "display": "Location1" + } + } + ], + "serviceProvider": { + "reference": "Organization/enc-ser" + } + }, + "coverage": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Coverage?patient=Patient/forprefetch&status=active" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Coverage/forprefetch", + "resource": { + "resourceType": "Coverage", + "id": "forprefetch", + "status": "active", + "subscriberId": "123", + "beneficiary": { + "reference": "Patient/forprefetch" + }, + "relationship": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", + "code": "self" + } + ] + }, + "payor": [ + { + "reference": "http://example.org/fhir/Organization/example-payer", + "display": "Payer XYZ" + } + ] + } + } + ] + }, + "medications": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Medication?_id=med-medref" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Medication/med-medref", + "resource": { + "resourceType": "Medication", + "id": "med-medref", + "code": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "206765" + } + ], + "text": "lisinopril oral 10 mg" + } + } + } + ] + }, + "devices": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Device?_id=dev-codref-pra,dev-codref-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Device/dev-codref-pra", + "resource": { + "resourceType": "Device", + "id": "dev-codref-pra", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345675" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Device/dev-codref-rol", + "resource": { + "resourceType": "Device", + "id": "dev-codref-rol", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345677" + } + ] + } + } + ] + }, + "practitionerRoles": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/PractitionerRole?_id=enc-par-ind,com-req,com-rec,com-sen,dev-req,dev-per,med-req,med-per,nut-ord,ser-req,ser-per,vis-pre" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/PractitionerRole/enc-par-ind", + "resource": { + "resourceType": "PractitionerRole", + "id": "enc-par-ind", + "organization": { + "reference": "Organization/enc-par-ind-org" + }, + "practitioner": { + "reference": "Practitioner/enc-par-ind-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-req", + "organization": { + "reference": "Organization/com-req-org" + }, + "practitioner": { + "reference": "Practitioner/com-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-rec", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-rec", + "organization": { + "reference": "Organization/com-rec-org" + }, + "practitioner": { + "reference": "Practitioner/com-rec-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-sen", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-sen", + "organization": { + "reference": "Organization/com-sen-org" + }, + "practitioner": { + "reference": "Practitioner/com-sen-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-req", + "organization": { + "reference": "Organization/dev-req-org" + }, + "practitioner": { + "reference": "Practitioner/dev-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-per", + "organization": { + "reference": "Organization/dev-per-org" + }, + "practitioner": { + "reference": "Practitioner/dev-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-req", + "organization": { + "reference": "Organization/med-req-org" + }, + "practitioner": { + "reference": "Practitioner/med-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-per", + "organization": { + "reference": "Organization/med-per-org" + }, + "practitioner": { + "reference": "Practitioner/med-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/nut-ord", + "resource": { + "resourceType": "PractitionerRole", + "id": "nut-ord", + "organization": { + "reference": "Organization/nut-ord-org" + }, + "practitioner": { + "reference": "Practitioner/nut-ord-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-req", + "organization": { + "reference": "Organization/ser-req-org" + }, + "practitioner": { + "reference": "Practitioner/ser-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-per", + "organization": { + "reference": "Organization/ser-per-org" + }, + "practitioner": { + "reference": "Practitioner/ser-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/vis-pre", + "resource": { + "resourceType": "PractitionerRole", + "id": "vis-pre", + "organization": { + "reference": "Organization/vis-pre-org" + }, + "practitioner": { + "reference": "Practitioner/vis-pre-pra" + }, + "location": [ + { + "reference": "Location/vis-pre-pra" + } + ], + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + } + ] + }, + "practitioners": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Practitioner?_id=enc-par-ind-pra,enc-par-ind,com-req,com-rec,com-sen,com-req-pra,com-rec-pra,com-sen-pra,dev-req-pra,dev-per-pra,dev-req,dev-per,med-req,med-per,med-req-pra,med-per-pra,nut-ord,nut-ord-pra,ser-req,ser-per,ser-req-pra,ser-per-pra,vis-pre,vis-pre-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind-pra", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Careful", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Alternate", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-req", + "resource": { + "resourceType": "Practitioner", + "id": "com-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-rec", + "resource": { + "resourceType": "Practitioner", + "id": "com-rec", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-rec" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-sen", + "resource": { + "resourceType": "Practitioner", + "id": "com-sen", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-sen" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-rec-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-rec-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-rec-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-sen-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-sen-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-sen-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req", + "resource": { + "resourceType": "Practitioner", + "id": "med-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per", + "resource": { + "resourceType": "Practitioner", + "id": "med-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/nut-ord", + "resource": { + "resourceType": "Practitioner", + "id": "nut-ord", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "nut-ord" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/nut-ord-pra", + "resource": { + "resourceType": "Practitioner", + "id": "nut-ord-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "nut-ord-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/vis-pre", + "resource": { + "resourceType": "Practitioner", + "id": "vis-pre", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "vis-pre" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/vis-pre-pra", + "resource": { + "resourceType": "Practitioner", + "id": "vis-pre-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "vis-pre-pra" + } + ] + } + } + ] + }, + "organizations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Organization?_id=enc-par-ind-org,enc-ser,com-rec,com-sen,com-req-org,com-rec-org,com-sen-org,dev-req-org,dev-per-org,med-req-org,med-per-org,med-dis-per,nut-ord-org,ser-per,ser-req-org,ser-per-org,vis-pre-org" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Organization/enc-par-ind-org", + "resource": { + "resourceType": "Organization", + "id": "enc-par-ind-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "enc-par-ind-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/enc-ser", + "resource": { + "resourceType": "Organization", + "id": "enc-ser", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "University Medical Center", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-rec", + "resource": { + "resourceType": "Organization", + "id": "com-rec", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-rec", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-sen", + "resource": { + "resourceType": "Organization", + "id": "com-sen", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-sen", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-req-org", + "resource": { + "resourceType": "Organization", + "id": "com-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-rec-org", + "resource": { + "resourceType": "Organization", + "id": "com-rec-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-rec-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-sen-org", + "resource": { + "resourceType": "Organization", + "id": "com-sen-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-sen-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-req-org", + "resource": { + "resourceType": "Organization", + "id": "dev-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-per-org", + "resource": { + "resourceType": "Organization", + "id": "dev-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-req-org", + "resource": { + "resourceType": "Organization", + "id": "med-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-per-org", + "resource": { + "resourceType": "Organization", + "id": "med-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-dis-per", + "resource": { + "resourceType": "Organization", + "id": "med-dis-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-dis-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/nut-ord-org", + "resource": { + "resourceType": "Organization", + "id": "nut-ord-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "nut-ord-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per", + "resource": { + "resourceType": "Organization", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-req-org", + "resource": { + "resourceType": "Organization", + "id": "ser-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per-org", + "resource": { + "resourceType": "Organization", + "id": "ser-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/vis-pre-org", + "resource": { + "resourceType": "Organization", + "id": "vis-pre-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "vis-pre-org", + "active": true + } + } + ] + }, + "locations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Location?_id=enc-loc-loc,ser-locref,vis-pre-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Location/enc-loc-loc", + "resource": { + "resourceType": "Location", + "id": "enc-loc-loc", + "status": "active", + "name": "South Wing, second floor", + "managingOrganization": { + "reference": "Organization/enc-ser" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/ser-locref", + "resource": { + "resourceType": "Location", + "id": "ser-locref", + "status": "active", + "name": "ser-locref", + "managingOrganization": { + "reference": "Organization/ser-per" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/vis-pre-pra", + "resource": { + "resourceType": "Location", + "id": "vis-pre-pra", + "status": "active", + "name": "vis-pre-pra", + "managingOrganization": { + "reference": "Organization/vis-pre-org" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/execution_scripts/prefetch/order-sign-request_complete-prefetch.json b/execution_scripts/prefetch/order-sign-request_complete-prefetch.json new file mode 100644 index 00000000..a83423bc --- /dev/null +++ b/execution_scripts/prefetch/order-sign-request_complete-prefetch.json @@ -0,0 +1,1722 @@ +{ + "hookInstance": "44577c69-dfbe-bbad-ba6d-3e05e953b2ea", + "fhirServer": "https://example/r4", + "hook": "order-sign", + "fhirAuthorization": { + "access_token": "SAMPLE_TOKEN", + "token_type": "Bearer", + "expires_in": 300, + "scope": "user/Patient.read user/Observation.read", + "subject": "cds-service" + }, + "context": { + "userId": "Practitioner/example", + "patientId": "forprefetch", + "encounterId": "forprefetch", + "draftOrders": { + "resourceType": "Bundle", + "type": "collection", + "entry": [ + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-prac", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-prac", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/com-req" + }, + "recipient": [ + { + "reference": "Practitioner/com-rec" + } + ], + "sender": { + "reference": "Practitioner/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-role", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-role", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/com-req" + }, + "recipient": [ + { + "reference": "PractitionerRole/com-rec" + } + ], + "sender": { + "reference": "PractitionerRole/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/CommunicationRequest/forprefetch-ref-org", + "resource": { + "resourceType": "CommunicationRequest", + "id": "forprefetch-ref-org", + "basedOn": [ + { + "display": "EligibilityRequest" + } + ], + "status": "draft", + "subject": { + "reference": "Patient/forprefetch" + }, + "payload": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-CommunicationRequest.payload.content", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "65752-8", + "display": "Liver Pathology biopsy report" + } + ] + } + } + ], + "contentString": "Liver pathology biopsy report" + } + ], + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/com-req" + }, + "recipient": [ + { + "reference": "Organization/com-rec" + } + ], + "sender": { + "reference": "Organization/com-sen" + } + } + }, + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-rol", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-rol" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/dev-req" + }, + "performer": { + "reference": "PractitionerRole/dev-per" + } + } + }, + { + "fullUrl": "https://example/r4/DeviceRequest/forprefetch-pra", + "resource": { + "resourceType": "DeviceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "original-order", + "codeReference": { + "reference": "Device/dev-codref-pra" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/dev-req" + }, + "performer": { + "reference": "Practitioner/dev-per" + } + } + }, + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-pra", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2016-06-10T11:01:10-08:00", + "requester": { + "reference": "Practitioner/med-req" + }, + "performer": { + "reference": "Practitioner/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + }, + { + "fullUrl": "https://example/r4/MedicationRequest/forprefetch-rol", + "resource": { + "resourceType": "MedicationRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "medicationReference": { + "reference": "Medication/med-medref", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2017-06-10T11:01:10-08:00", + "requester": { + "reference": "PractitionerRole/med-req" + }, + "performer": { + "reference": "PractitionerRole/med-per" + }, + "dispenseRequest": { + "performer": { + "reference": "Organization/med-dis-per" + } + } + } + }, + { + "fullUrl": "https://example/r4/NutritionOrder/forprefetch-pra", + "resource": { + "resourceType": "NutritionOrder", + "id": "forprefetch-pra", + "status": "draft", + "intent": "original-order", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateTime": "2014-09-17", + "orderer": { + "reference": "Practitioner/nut-ord" + }, + "oralDiet": { + "type": [ + { + "text": "Pureed diet" + } + ] + } + } + }, + { + "fullUrl": "https://example/r4/NutritionOrder/forprefetch-rol", + "resource": { + "resourceType": "NutritionOrder", + "id": "forprefetch-rol", + "status": "draft", + "intent": "original-order", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateTime": "2014-09-17", + "orderer": { + "reference": "PractitionerRole/nut-ord" + }, + "oralDiet": { + "type": [ + { + "text": "Pureed diet" + } + ] + } + } + }, + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-pra", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-pra", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "Practitioner/ser-req" + }, + "performer": [ + { + "reference": "Practitioner/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + }, + { + "fullUrl": "https://example/r4/ServiceRequest/forprefetch-rol", + "resource": { + "resourceType": "ServiceRequest", + "id": "forprefetch-rol", + "status": "draft", + "intent": "order", + "code": { + "text": "Implant Pacemaker" + }, + "subject": { + "reference": "Patient/forprefetch" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "PractitionerRole/ser-req" + }, + "performer": [ + { + "reference": "PractitionerRole/ser-per" + }, + { + "reference": "Organization/ser-per" + } + ], + "locationReference": [ + { + "reference": "Location/ser-locref" + } + ] + } + }, + { + "fullUrl": "https://example/r4/VisionPrescription/forprefetch-pra", + "resource": { + "resourceType": "VisionPrescription", + "id": "forprefetch-pra", + "status": "draft", + "created": "2014-06-15", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateWritten": "2014-06-15", + "prescriber": { + "reference": "Practitioner/vis-pre" + }, + "lensSpecification": [ + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "right", + "sphere": -2, + "prism": [ + { + "amount": 0.5, + "base": "down" + } + ], + "add": 2 + }, + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "left", + "sphere": -1, + "cylinder": -0.5, + "axis": 180, + "prism": [ + { + "amount": 0.5, + "base": "up" + } + ], + "add": 2 + } + ] + } + }, + { + "fullUrl": "https://example/r4/VisionPrescription/forprefetch-rol", + "resource": { + "resourceType": "VisionPrescription", + "id": "forprefetch-rol", + "status": "draft", + "created": "2014-06-15", + "patient": { + "reference": "Patient/forprefetch" + }, + "dateWritten": "2014-06-15", + "prescriber": { + "reference": "PractitionerRole/vis-pre" + }, + "lensSpecification": [ + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "right", + "sphere": -2, + "prism": [ + { + "amount": 0.5, + "base": "down" + } + ], + "add": 2 + }, + { + "product": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/ex-visionprescriptionproduct", + "code": "lens" + } + ] + }, + "eye": "left", + "sphere": -1, + "cylinder": -0.5, + "axis": 180, + "prism": [ + { + "amount": 0.5, + "base": "up" + } + ], + "add": 2 + } + ] + } + } + ] + } + }, + "prefetch": { + "patient": { + "resourceType": "Patient", + "id": "forprefetch", + "identifier": [ + { + "use": "usual", + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR" + } + ], + "text": "Medical Record Number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "1032702" + } + ], + "active": true, + "name": [ + { + "family": "Shaw", + "given": [ + "Amy", + "V." + ], + "period": { + "start": "2016-12-06", + "end": "2020-07-22" + } + } + ], + "gender": "female", + "birthDate": "1987-02-20" + }, + "encounter": { + "resourceType": "Encounter", + "id": "forprefetch", + "status": "in-progress", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB", + "display": "ambulatory" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "270427003", + "display": "Patient-initiated encounter" + } + ] + } + ], + "subject": { + "reference": "Patient/forprefetch" + }, + "participant": [ + { + "individual": { + "reference": "Practitioner/enc-par-ind" + } + }, + { + "individual": { + "reference": "PractitionerRole/enc-par-ind" + } + } + ], + "location": [ + { + "location": { + "reference": "Location/enc-loc-loc", + "display": "Location1" + } + } + ], + "serviceProvider": { + "reference": "Organization/enc-ser" + } + }, + "coverage": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Coverage?patient=Patient/forprefetch&status=active" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Coverage/forprefetch", + "resource": { + "resourceType": "Coverage", + "id": "forprefetch", + "status": "active", + "subscriberId": "123", + "beneficiary": { + "reference": "Patient/forprefetch" + }, + "relationship": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", + "code": "self" + } + ] + }, + "payor": [ + { + "reference": "http://example.org/fhir/Organization/example-payer", + "display": "Payer XYZ" + } + ] + } + } + ] + }, + "medications": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Medication?_id=med-medref" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Medication/med-medref", + "resource": { + "resourceType": "Medication", + "id": "med-medref", + "code": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "206765" + } + ], + "text": "lisinopril oral 10 mg" + } + } + } + ] + }, + "devices": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Device?_id=dev-codref-pra,dev-codref-rol" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Device/dev-codref-pra", + "resource": { + "resourceType": "Device", + "id": "dev-codref-pra", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345675" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Device/dev-codref-rol", + "resource": { + "resourceType": "Device", + "id": "dev-codref-rol", + "identifier": [ + { + "system": "http://inferno.healthit.gov/devices/id", + "value": "345677" + } + ] + } + } + ] + }, + "practitionerRoles": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/PractitionerRole?_id=enc-par-ind,com-req,com-rec,com-sen,dev-req,dev-per,med-req,med-per,nut-ord,ser-req,ser-per,vis-pre" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/PractitionerRole/enc-par-ind", + "resource": { + "resourceType": "PractitionerRole", + "id": "enc-par-ind", + "organization": { + "reference": "Organization/enc-par-ind-org" + }, + "practitioner": { + "reference": "Practitioner/enc-par-ind-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-req", + "organization": { + "reference": "Organization/com-req-org" + }, + "practitioner": { + "reference": "Practitioner/com-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-rec", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-rec", + "organization": { + "reference": "Organization/com-rec-org" + }, + "practitioner": { + "reference": "Practitioner/com-rec-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/com-sen", + "resource": { + "resourceType": "PractitionerRole", + "id": "com-sen", + "organization": { + "reference": "Organization/com-sen-org" + }, + "practitioner": { + "reference": "Practitioner/com-sen-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-req", + "organization": { + "reference": "Organization/dev-req-org" + }, + "practitioner": { + "reference": "Practitioner/dev-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/dev-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "dev-per", + "organization": { + "reference": "Organization/dev-per-org" + }, + "practitioner": { + "reference": "Practitioner/dev-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-req", + "organization": { + "reference": "Organization/med-req-org" + }, + "practitioner": { + "reference": "Practitioner/med-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/med-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "med-per", + "organization": { + "reference": "Organization/med-per-org" + }, + "practitioner": { + "reference": "Practitioner/med-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/nut-ord", + "resource": { + "resourceType": "PractitionerRole", + "id": "nut-ord", + "organization": { + "reference": "Organization/nut-ord-org" + }, + "practitioner": { + "reference": "Practitioner/nut-ord-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-req", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-req", + "organization": { + "reference": "Organization/ser-req-org" + }, + "practitioner": { + "reference": "Practitioner/ser-req-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/ser-per", + "resource": { + "resourceType": "PractitionerRole", + "id": "ser-per", + "organization": { + "reference": "Organization/ser-per-org" + }, + "practitioner": { + "reference": "Practitioner/ser-per-pra" + }, + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + }, + { + "fullUrl": "https://example/r4/PractitionerRole/vis-pre", + "resource": { + "resourceType": "PractitionerRole", + "id": "vis-pre", + "organization": { + "reference": "Organization/vis-pre-org" + }, + "practitioner": { + "reference": "Practitioner/vis-pre-pra" + }, + "location": [ + { + "reference": "Location/vis-pre-pra" + } + ], + "telecom": [ + { + "system": "other", + "value": "sneakernet" + } + ] + } + } + ] + }, + "practitioners": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Practitioner?_id=enc-par-ind-pra,enc-par-ind,com-req,com-rec,com-sen,com-req-pra,com-rec-pra,com-sen-pra,dev-req-pra,dev-per-pra,dev-req,dev-per,med-req,med-per,med-req-pra,med-per-pra,nut-ord,nut-ord-pra,ser-req,ser-per,ser-req-pra,ser-per-pra,vis-pre,vis-pre-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind-pra", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Careful", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/enc-par-ind", + "resource": { + "resourceType": "Practitioner", + "id": "enc-par-ind", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "Alternate", + "given": [ + "Adam" + ], + "prefix": [ + "Dr" + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-req", + "resource": { + "resourceType": "Practitioner", + "id": "com-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-rec", + "resource": { + "resourceType": "Practitioner", + "id": "com-rec", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-rec" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-sen", + "resource": { + "resourceType": "Practitioner", + "id": "com-sen", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-sen" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-rec-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-rec-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-rec-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/com-sen-pra", + "resource": { + "resourceType": "Practitioner", + "id": "com-sen-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "com-sen-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-req", + "resource": { + "resourceType": "Practitioner", + "id": "dev-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/dev-per", + "resource": { + "resourceType": "Practitioner", + "id": "dev-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "dev-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req", + "resource": { + "resourceType": "Practitioner", + "id": "med-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per", + "resource": { + "resourceType": "Practitioner", + "id": "med-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/med-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "med-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "med-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/nut-ord", + "resource": { + "resourceType": "Practitioner", + "id": "nut-ord", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "nut-ord" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/nut-ord-pra", + "resource": { + "resourceType": "Practitioner", + "id": "nut-ord-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "nut-ord-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-req-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-req-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-req-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/ser-per-pra", + "resource": { + "resourceType": "Practitioner", + "id": "ser-per-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "ser-per-pra" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/vis-pre", + "resource": { + "resourceType": "Practitioner", + "id": "vis-pre", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "vis-pre" + } + ] + } + }, + { + "fullUrl": "https://example/r4/Practitioner/vis-pre-pra", + "resource": { + "resourceType": "Practitioner", + "id": "vis-pre-pra", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": [ + { + "family": "vis-pre-pra" + } + ] + } + } + ] + }, + "organizations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Organization?_id=enc-par-ind-org,enc-ser,com-rec,com-sen,com-req-org,com-rec-org,com-sen-org,dev-req-org,dev-per-org,med-req-org,med-per-org,med-dis-per,nut-ord-org,ser-per,ser-req-org,ser-per-org,vis-pre-org" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Organization/enc-par-ind-org", + "resource": { + "resourceType": "Organization", + "id": "enc-par-ind-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "enc-par-ind-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/enc-ser", + "resource": { + "resourceType": "Organization", + "id": "enc-ser", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "University Medical Center", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-rec", + "resource": { + "resourceType": "Organization", + "id": "com-rec", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-rec", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-sen", + "resource": { + "resourceType": "Organization", + "id": "com-sen", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-sen", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-req-org", + "resource": { + "resourceType": "Organization", + "id": "com-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-rec-org", + "resource": { + "resourceType": "Organization", + "id": "com-rec-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-rec-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/com-sen-org", + "resource": { + "resourceType": "Organization", + "id": "com-sen-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "com-sen-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-req-org", + "resource": { + "resourceType": "Organization", + "id": "dev-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/dev-per-org", + "resource": { + "resourceType": "Organization", + "id": "dev-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "dev-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-req-org", + "resource": { + "resourceType": "Organization", + "id": "med-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-per-org", + "resource": { + "resourceType": "Organization", + "id": "med-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/med-dis-per", + "resource": { + "resourceType": "Organization", + "id": "med-dis-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "med-dis-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/nut-ord-org", + "resource": { + "resourceType": "Organization", + "id": "nut-ord-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "nut-ord-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per", + "resource": { + "resourceType": "Organization", + "id": "ser-per", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-req-org", + "resource": { + "resourceType": "Organization", + "id": "ser-req-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-req-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/ser-per-org", + "resource": { + "resourceType": "Organization", + "id": "ser-per-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "ser-per-org", + "active": true + } + }, + { + "fullUrl": "https://example/r4/Organization/vis-pre-org", + "resource": { + "resourceType": "Organization", + "id": "vis-pre-org", + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1714983354" + } + ], + "name": "vis-pre-org", + "active": true + } + } + ] + }, + "locations": { + "resourceType": "Bundle", + "type": "searchset", + "link": [ + { + "relation": "self", + "url": "https://example/r4/Location?_id=enc-loc-loc,ser-locref,vis-pre-pra" + } + ], + "entry": [ + { + "fullUrl": "https://example/r4/Location/enc-loc-loc", + "resource": { + "resourceType": "Location", + "id": "enc-loc-loc", + "status": "active", + "name": "South Wing, second floor", + "managingOrganization": { + "reference": "Organization/enc-ser" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/ser-locref", + "resource": { + "resourceType": "Location", + "id": "ser-locref", + "status": "active", + "name": "ser-locref", + "managingOrganization": { + "reference": "Organization/ser-per" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + }, + { + "fullUrl": "https://example/r4/Location/vis-pre-pra", + "resource": { + "resourceType": "Location", + "id": "vis-pre-pra", + "status": "active", + "name": "vis-pre-pra", + "managingOrganization": { + "reference": "Organization/vis-pre-org" + }, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP" + } + ] + } + ] + } + } + ] + } + } +} \ No newline at end of file diff --git a/lib/davinci_crd_test_kit.rb b/lib/davinci_crd_test_kit.rb index a7fd5560..60c12867 100644 --- a/lib/davinci_crd_test_kit.rb +++ b/lib/davinci_crd_test_kit.rb @@ -1,3 +1,5 @@ require_relative 'davinci_crd_test_kit/metadata' -require_relative 'davinci_crd_test_kit/crd_server_suite' -require_relative 'davinci_crd_test_kit/crd_client_suite' +require_relative 'davinci_crd_test_kit/server/v2.0.1/crd_server_suite' +require_relative 'davinci_crd_test_kit/server/v2.2.1/crd_server_suite' +require_relative 'davinci_crd_test_kit/client/v2.0.1/crd_client_suite' +require_relative 'davinci_crd_test_kit/client/v2.2.1/crd_client_suite' diff --git a/lib/davinci_crd_test_kit/client/client_base_urls.rb b/lib/davinci_crd_test_kit/client/client_base_urls.rb new file mode 100644 index 00000000..bfcedfac --- /dev/null +++ b/lib/davinci_crd_test_kit/client/client_base_urls.rb @@ -0,0 +1,80 @@ +require_relative '../cross_suite/base_urls' + +module DaVinciCRDTestKit + DISCOVERY_PATH = '/cds-services'.freeze + APPOINTMENT_BOOK_PATH = "#{DISCOVERY_PATH}/appointment-book-service".freeze + ENCOUNTER_START_PATH = "#{DISCOVERY_PATH}/encounter-start-service".freeze + ENCOUNTER_DISCHARGE_PATH = "#{DISCOVERY_PATH}/encounter-discharge-service".freeze + ORDER_DISPATCH_PATH = "#{DISCOVERY_PATH}/order-dispatch-service".freeze + ORDER_SELECT_PATH = "#{DISCOVERY_PATH}/order-select-service".freeze + ORDER_SIGN_PATH = "#{DISCOVERY_PATH}/order-sign-service".freeze + + PREFETCH_SUBSET_PREFIX = '/prefetch-subset'.freeze + PREFETCH_DISCOVERY_PATH = PREFETCH_SUBSET_PREFIX + DISCOVERY_PATH + APPOINTMENT_BOOK_PREFETCH_SUBSET_PATH = "#{PREFETCH_DISCOVERY_PATH}/appointment-book-subset".freeze + ENCOUNTER_START_PREFETCH_SUBSET_PATH = "#{PREFETCH_DISCOVERY_PATH}/encounter-start-subset".freeze + ENCOUNTER_DISCHARGE_PREFETCH_SUBSET_PATH = "#{PREFETCH_DISCOVERY_PATH}/encounter-discharge-subset".freeze + ORDER_DISPATCH_PREFETCH_SUBSET_PATH = "#{PREFETCH_DISCOVERY_PATH}/order-dispatch-subset".freeze + ORDER_SELECT_PREFETCH_SUBSET_PATH = "#{PREFETCH_DISCOVERY_PATH}/order-select-subset".freeze + ORDER_SIGN_PREFETCH_SUBSET_PATH = "#{PREFETCH_DISCOVERY_PATH}/order-sign-subset".freeze + + module ClientBaseURLs + include BaseURLs + + def discovery_url + @discovery_url ||= inferno_base_url + DISCOVERY_PATH + end + + def appointment_book_url + @appointment_book_url ||= inferno_base_url + APPOINTMENT_BOOK_PATH + end + + def encounter_start_url + @encounter_start_url ||= inferno_base_url + ENCOUNTER_START_PATH + end + + def encounter_discharge_url + @encounter_discharge_url ||= inferno_base_url + ENCOUNTER_DISCHARGE_PATH + end + + def order_dispatch_url + @order_dispatch_url ||= inferno_base_url + ORDER_DISPATCH_PATH + end + + def order_select_url + @order_select_url ||= inferno_base_url + ORDER_SELECT_PATH + end + + def order_sign_url + @order_sign_url ||= inferno_base_url + ORDER_SIGN_PATH + end + + def prefetch_subset_discovery_url + @prefetch_subset_discovery_url ||= inferno_base_url + PREFETCH_SUBSET_PREFIX + DISCOVERY_PATH + end + + def appointment_book_prefetch_subset_url + @appointment_book_prefetch_subset_url ||= inferno_base_url + APPOINTMENT_BOOK_PREFETCH_SUBSET_PATH + end + + def encounter_start_prefetch_subset_url + @encounter_start_prefetch_subset_url ||= inferno_base_url + ENCOUNTER_START_PREFETCH_SUBSET_PATH + end + + def encounter_discharge_prefetch_subset_url + @encounter_discharge_prefetch_subset_url ||= inferno_base_url + ENCOUNTER_DISCHARGE_PREFETCH_SUBSET_PATH + end + + def order_dispatch_prefetch_subset_url + @order_dispatch_prefetch_subset_url ||= inferno_base_url + ORDER_DISPATCH_PREFETCH_SUBSET_PATH + end + + def order_select_prefetch_subset_url + @order_select_prefetch_subset_url ||= inferno_base_url + ORDER_SELECT_PREFETCH_SUBSET_PATH + end + + def order_sign_prefetch_subset_url + @order_sign_prefetch_subset_url ||= inferno_base_url + ORDER_SIGN_PREFETCH_SUBSET_PATH + end + end +end diff --git a/lib/davinci_crd_test_kit/client_hook_request_validation.rb b/lib/davinci_crd_test_kit/client/client_hook_request_validation.rb similarity index 76% rename from lib/davinci_crd_test_kit/client_hook_request_validation.rb rename to lib/davinci_crd_test_kit/client/client_hook_request_validation.rb index e0a76774..f366a44c 100644 --- a/lib/davinci_crd_test_kit/client_hook_request_validation.rb +++ b/lib/davinci_crd_test_kit/client/client_hook_request_validation.rb @@ -1,4 +1,4 @@ -require_relative 'hook_request_field_validation' +require_relative '../cross_suite/hook_request_field_validation' module DaVinciCRDTestKit module ClientHookRequestValidation diff --git a/lib/davinci_crd_test_kit/client/crd_client_options.rb b/lib/davinci_crd_test_kit/client/crd_client_options.rb new file mode 100644 index 00000000..89a3f031 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/crd_client_options.rb @@ -0,0 +1,30 @@ +module DaVinciCRDTestKit + module CRDClientOptions + SMART_1 = 'smart_app_launch_1'.freeze + SMART_2 = 'smart_app_launch_2'.freeze + + SMART_1_REQUIREMENT = { smart_app_launch_version: SMART_1 }.freeze + SMART_2_REQUIREMENT = { smart_app_launch_version: SMART_2 }.freeze + + US_CORE_3 = 'us_core_3'.freeze + US_CORE_6 = 'us_core_6'.freeze + US_CORE_7 = 'us_core_7'.freeze + + US_CORE_3_REQUIREMENT = { us_core_version: US_CORE_3 }.freeze + US_CORE_6_REQUIREMENT = { us_core_version: US_CORE_6 }.freeze + US_CORE_7_REQUIREMENT = { us_core_version: US_CORE_7 }.freeze + + US_CORE_3_RESOURCE_TYPES = %w[ + AllergyIntolerance CarePlan CareTeam Condition Device DiagnosticReport DocumentReference Encounter Goal + Immunization Location Medication MedicationRequest Observation Organization Patient Practitioner + PractitionerRole Procedure Provenance + ].freeze + + US_CORE_6_7_RESOURCE_TYPES = %w[ + AllergyIntolerance CarePlan CareTeam Condition Coverage Device DiagnosticReport DocumentReference Encounter + Goal Immunization Location Medication MedicationDispense MedicationRequest Observation Organization Patient + Practitioner PractitionerRole Procedure Provenance QuestionnaireResponse RelatedPerson ServiceRequest + Specimen + ].freeze + end +end diff --git a/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb b/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb new file mode 100644 index 00000000..05251eb4 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/endpoints/cds_services_discovery_handler.rb @@ -0,0 +1,34 @@ +module DaVinciCRDTestKit + class CDSServicesDiscoveryHandler + def self.call(...) + new.call(...) + end + + def self.cds_services(version = 'v2.0.1', prefetch_subset: false) + key = "#{version}_#{prefetch_subset}" + cds_services_array[key] ||= begin + filename = if prefetch_subset + "cds-services-prefetch-subset-#{version.gsub('.', '')}.json" + else + "cds-services-#{version.gsub('.', '')}.json" + end + File.read(File.join(__dir__, '..', version, filename)) + end + end + + def self.cds_services_array + @cds_services_array ||= {} + end + + def call(env) + path_parts = env['PATH_INFO'].split('/') + # /custom//[prefetch-subset/]cds-services + prefetch_subset = path_parts.include?('prefetch-subset') + suite = path_parts.find { |p| p.start_with?('crd_client_') } || path_parts[-2] + version_no_dots = suite.split('_')[2].presence || 'v201' # crd_client_ + version = version_no_dots.sub(/\A(v\d)(\d)(\d)\z/, '\1.\2.\3') + [200, { 'Content-Type' => 'application/json', 'Access-Control-Allow-Origin' => '*' }, + [self.class.cds_services(version, prefetch_subset:)]] + end + end +end diff --git a/lib/davinci_crd_test_kit/custom_service_response.rb b/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb similarity index 91% rename from lib/davinci_crd_test_kit/custom_service_response.rb rename to lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb index b42edfd5..3e71511b 100644 --- a/lib/davinci_crd_test_kit/custom_service_response.rb +++ b/lib/davinci_crd_test_kit/client/endpoints/custom_service_response.rb @@ -1,5 +1,5 @@ -require_relative 'fhirpath_on_cds_request' -require_relative 'replace_tokens' +require_relative '../../cross_suite/fhirpath_on_cds_request' +require_relative '../../cross_suite/replace_tokens' require_relative 'gather_response_generation_data' module DaVinciCRDTestKit @@ -19,7 +19,9 @@ def custom_response_template def parsed_user_input JSON.parse(custom_response_template) rescue JSON::ParserError - error_response('Invalid template provided for custom Inferno CRD response: invalid JSON', code: 500) + error_response('Invalid template provided for custom Inferno CRD response: invalid JSON', + code: 500, + outcome_code: 'processing') nil end @@ -35,6 +37,15 @@ def build_custom_hook_response hook_response['systemActions'] = instantiate_actions(hook_response, 'systemActions') hook_response + rescue FhirpathServiceError => e + error_response( + 'FHIRPath service error while generating custom response. ' \ + 'Check the FHIRPath expressions and data in your response template and hook request. ' \ + "Details: #{e.message}", + code: 500, + outcome_code: 'processing' + ) + nil end def finalize_card_list(hook_response) @@ -112,7 +123,7 @@ def create_instantiated_action_from_target(action, target_resource) # Merge extension lists, keeping duplicate url from action's resource, # otherwise replace (top-level elements) instantiated_action['resource'] = - merge_action_resouce_into_target(instantiated_action['resource'], target_resource) + merge_action_resource_into_target(instantiated_action['resource'], target_resource) coverage_information_ext = instantiated_action['resource']['extension']&.find do |ext| ext['url'] == 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' @@ -125,7 +136,7 @@ def create_instantiated_action_from_target(action, target_resource) instantiated_action end - def merge_action_resouce_into_target(action_resource, target_resource) + def merge_action_resource_into_target(action_resource, target_resource) target_resource.merge(action_resource) do |key, old_value, new_value| if key == 'extension' old_value.select do |existing_extention| @@ -149,6 +160,10 @@ def filter_and_separate_defaults(parent, list_element) defaults_ext = default_extension_name(list_element) define_extension(parent, defaults_ext, []) parent[list_element]&.select! do |object| + next false unless enabled_on_service?(object) + + remove_extension(object, 'com.inferno.includeForServices') + if object_has_inclusion_criteria?(object) if object_is_a_default?(object) remove_inclusion_criteria(object) @@ -167,6 +182,13 @@ def filter_and_separate_defaults(parent, list_element) end end + def enabled_on_service?(object) + services = get_extension_value(object, 'com.inferno.includeForServices') + return true unless services.present? + + services.split(',').map(&:strip).any? { |url| request.env['PATH_INFO'].include?(url) } + end + def object_is_a_default?(object) get_object_inclusion_criteria_extension_value(object) == 'default' end diff --git a/lib/davinci_crd_test_kit/gather_response_generation_data.rb b/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb similarity index 77% rename from lib/davinci_crd_test_kit/gather_response_generation_data.rb rename to lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb index 5956e582..eed84fa2 100644 --- a/lib/davinci_crd_test_kit/gather_response_generation_data.rb +++ b/lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data.rb @@ -1,4 +1,4 @@ -require_relative 'tags' +require_relative '../../cross_suite/tags' module DaVinciCRDTestKit # Make requests to client's FHIR server to use in building responses @@ -10,7 +10,8 @@ module GatherResponseGenerationData ], CommunicationRequest: [ 'requester', - 'sender' + 'sender', + 'recipient' ], DeviceRequest: [ 'requester', @@ -19,7 +20,8 @@ module GatherResponseGenerationData MedicationRequest: [ 'requester', 'performer', - 'medicationReference' + 'medicationReference', + 'dispenseRequest.performer' ], NutritionOrder: [ 'orderer' @@ -44,8 +46,8 @@ module GatherResponseGenerationData ] }.freeze - def hook_instance_tag - @hook_instance_tag ||= "#{HOOK_INSTANCE_TAG_PREFIX}#{request_body['hookInstance']}" + def hook_instance_data_fetch_tag + @hook_instance_data_fetch_tag ||= TagMethods.hook_instance_data_fetch_tag(request_body['hookInstance']) end def gather_appointment_book_data @@ -177,13 +179,20 @@ def normalize_reference(reference) end end - def fetch_reference(reference) + def fetch_reference(reference, additional_tag: nil, parse_as_fhir: false) response = execute_request(reference) - persist_query_request(response, [DATA_FETCH_TAG, hook_instance_tag]) + return nil unless response.present? + tags = [DATA_FETCH_TAG, hook_instance_data_fetch_tag] + tags << additional_tag if additional_tag.present? + persist_query_request(response, tags) return nil unless response.status.to_s.starts_with?('2') - JSON.parse(response.body) + begin + parse_as_fhir ? FHIR.from_contents(response.body) : JSON.parse(response.body) + rescue JSON::ParserError + nil + end end def find_references_to_read(resource, to_read_list) @@ -197,6 +206,7 @@ def find_references_to_read(resource, to_read_list) end end + # Precondition: at most one level of nesting in the path def get_literal_reference_values(resource, path) if path.include?('.') first_element, path = path.split('.') @@ -220,10 +230,19 @@ def request_coverage @request_coverage ||= find_coverage_for_request end - def find_coverage_for_request - resource = + def prefetched_coverage + @prefetched_coverage ||= if request_body.dig('prefetch', 'coverage').present? FHIR.from_contents(request_body.dig('prefetch', 'coverage').to_json) + elsif request_body.dig('prefetch', 'cov').present? + FHIR.from_contents(request_body.dig('prefetch', 'cov').to_json) + end + end + + def find_coverage_for_request + resource = + if prefetched_coverage.present? + prefetched_coverage else query_for_coverages end @@ -249,7 +268,7 @@ def data_request_headers end def execute_request(query) - fhir_server_connection.get(query) + fhir_server_connection&.get(query) rescue Faraday::Error => e # Warning: This is a hack. If there is an error with the request such that we never get a response, we have # no clean way to persist that information for the Inferno test to check later. The solution here @@ -278,8 +297,9 @@ def persist_query_request(response, tags) def query_for_coverages query = "Coverage?patient=#{request_body.dig('context', 'patientId')}&status=active" response = execute_request(query) + return nil unless response.present? - persist_query_request(response, [DATA_FETCH_TAG, hook_instance_tag]) + persist_query_request(response, [DATA_FETCH_TAG, hook_instance_data_fetch_tag]) return nil unless response.status.to_s.starts_with?('2') FHIR.from_contents(response.body) @@ -328,5 +348,63 @@ def entry_has_required_details?(entry) def resource_has_required_details?(resource) resource.is_a?(Hash) && resource['resourceType'].present? && resource['id'].present? end + + # gather additional fhir resources not requested via prefetch + # not used for response generation, but verified later + def request_additional_fhir_data + request_coverage_payer + request_parent_locations + end + + def prefetched_coverage_resource + if prefetched_coverage.is_a?(FHIR::Bundle) + prefetched_coverage.entry.first&.resource + else + prefetched_coverage + end + end + + def request_coverage_payer + return unless prefetched_coverage.present? + + coverage_resource = prefetched_coverage_resource + return unless coverage_resource.present? && coverage_resource.payor.first&.reference.present? + + fetch_reference(coverage_resource.payor.first.reference, additional_tag: PAYER_ORG_FETCH_TAG) + end + + def request_parent_locations + prefetched_locations_and_parents_hash + end + + def prefetched_location_bundle + locations_data = request_body.dig('prefetch', 'locations') || request_body.dig('prefetch', 'locs') + locations = FHIR.from_contents(locations_data.to_json) if locations_data.present? + return locations if locations.is_a?(FHIR::Bundle) + return nil unless locations.is_a?(FHIR::Location) + + FHIR::Bundle.new({ entry: [FHIR::Bundle::Entry.new({ resource: locations })] }) + end + + def prefetched_locations_and_parents_hash + prefetched_location_bundle&.entry&.each_with_object({}) do |entry, hash| + add_location_to_hash(entry.resource, hash) + end + end + + def add_location_to_hash(location, location_hash) + return unless location.is_a?(FHIR::Location) && location.id.present? + + relative_reference = "#{location.resourceType}/#{location.id}" + return if location_hash.key?(relative_reference) + + location_hash[relative_reference] = location + return unless location.partOf&.reference.present? + + parent_location = fetch_reference(location.partOf.reference, + additional_tag: PARENT_LOCATION_FETCH_TAG, + parse_as_fhir: true) + add_location_to_hash(parent_location, location_hash) + end end end diff --git a/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb b/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb new file mode 100644 index 00000000..828f3683 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint.rb @@ -0,0 +1,227 @@ +require_relative 'gather_response_generation_data' +require_relative 'mock_service_response' +require_relative 'custom_service_response' +require_relative '../../cross_suite/cards_identification' +require_relative '../../cross_suite/tags' + +module DaVinciCRDTestKit + class HookRequestEndpoint < Inferno::DSL::SuiteEndpoint + include DaVinciCRDTestKit::MockServiceResponse + include DaVinciCRDTestKit::GatherResponseGenerationData + include DaVinciCRDTestKit::CustomServiceResponse + include DaVinciCRDTestKit::CardsIdentification + + AVAILABLE_HOOKS = [ + 'appointment-book', + 'encounter-start', + 'encounter-discharge', + 'order-select', + 'order-sign', + 'order-dispatch' + ].freeze + + def ig_version + @ig_version ||= requested_version || request.env['PATH_INFO'].match(/(v\d+)/)&.[](1) || 'v201' + end + + # JSON round-trip normalizes the Hanami params object to a plain string-keyed Hash + def request_body + @request_body ||= JSON.parse(request.params.to_json) + end + + def requested_version + requested = request_body.dig('extension', 'davinci-crd.requestedVersion').to_s + if requested == '2.2' + 'v221' + elsif requested == '2.0' + 'v201' + end + end + + def test_run_identifier + iss + end + + def iss + @iss ||= + begin + payload, = JWT.decode(token, nil, false) + payload['iss'] + rescue JWT::DecodeError + nil + end + end + + def token + @token ||= request.headers['authorization']&.delete_prefix('Bearer ') + end + + # from the hook body + def requested_hook + @requested_hook ||= request_body['hook'] + end + + # from the url + def invoked_hook + @invoked_hook ||= request.env['PATH_INFO'].match(%r{/([^/]+)-(?:service|subset)$})&.[](1) + end + + # from the waiting test + def tested_hook + @tested_hook ||= test.config.options[:hook_name] + end + + def wrong_hook_for_test? + tested_hook.present? && tested_hook != ANY_HOOK_TAG && requested_hook != tested_hook + end + + def make_response + if invoked_hook != requested_hook + error_response("#{request.env['PATH_INFO']} serves the #{invoked_hook}, but the client " \ + "requested the #{requested_hook} hook.", + code: 400, + outcome_code: 'value') + elsif wrong_hook_for_test? + error_response("Hook '#{requested_hook}' is not being tested in the current session. " \ + "This session is currently testing the '#{tested_hook}' hook.", + code: 422, + outcome_code: 'value') + elsif hook_instance_already_used? + error_response( + "Invalid Request: Hook instance `#{request_body['hookInstance']}` has already been used in this session.", + outcome_code: 'value' + ) + elsif AVAILABLE_HOOKS.include?(requested_hook) + process_valid_hook + else + error_response("Invalid Request: hook `#{requested_hook}` is not supported by this server.", + outcome_code: 'value') + end + rescue StandardError => e + error_response("Inferno failed to generate a response: #{e.message} at #{e.backtrace.first}", + code: 500, + outcome_code: 'exception') + end + + def process_valid_hook + if ig_version == 'v201' + send(:"gather_#{requested_hook.gsub('-', '_')}_data") + request_coverage + elsif ig_version == 'v221' + request_additional_fhir_data + end + response_body = apply_hook_configuration(hook_response) + return unless response_body.present? + + response.body = response_body.to_json + response.headers.merge!({ 'Content-Type' => 'application/json', 'Access-Control-Allow-Origin' => '*' }) + response.status = 200 + response.format = :json + end + + def hook_response + if custom_response_template.present? + build_custom_hook_response + else + build_mock_hook_response + end + rescue StandardError => e + error_response("Inferno failed to generate a response: #{e.message} at #{e.backtrace.first}", code: 500) + nil + end + + def apply_hook_configuration(response_body) + return response_body unless response_body.present? && coverage_info_disabled? + + cards = response_body['cards'] + response_body['cards'] = cards.reject { |card| coverage_info_card_type?(card) } if cards.is_a?(Array) + + system_actions = response_body['systemActions'] + if system_actions.is_a?(Array) + response_body['systemActions'] = system_actions.reject { |action| coverage_info_system_action_type?(action) } + end + + response_body + end + + def coverage_info_disabled? + request_body.dig('extension', 'davinci-crd.configuration', COVERAGE_INFO_CONFIGURATION_CODE) == false + end + + def hook_instance_already_used? + requests_repo.tagged_requests(test_run.test_session_id, [hook_instance_tag]).present? + end + + def tags + return [LONG_RUNNING_GROUP_TAG] if long_running_group? + return [DUPLICATED_HOOK_INSTANCE_TAG] if hook_instance_already_used? + + return [] if invoked_hook != requested_hook || + wrong_hook_for_test? || + !AVAILABLE_HOOKS.include?(requested_hook) + + [hook_instance_tag, hook_or_group_tag] + end + + def hook_instance_tag + TagMethods.hook_instance_tag(request_body['hookInstance']) + end + + def hook_or_group_tag + if test.config.options[:crd_test_group].present? + test.config.options[:crd_test_group] + else + DaVinciCRDTestKit.const_get(:"#{name.upcase}_TAG") + end + end + + def error_response(error_message, code: 400, outcome_code: 'invalid') + response.status = code + response.body = error_operation_outcome(outcome_code, error_message).to_json + response.headers.merge!({ 'Content-Type' => 'application/json', 'Access-Control-Allow-Origin' => '*' }) + response.format = :json + end + + def error_operation_outcome(code, text) + { + resourceType: 'OperationOutcome', + issue: [ + { + severity: 'error', + code:, + details: { + text: + } + } + ] + } + end + + def name + requested_hook.gsub('-', '_') + end + + # ----------------------- + # Long Running Group handling + # ----------------------- + + def long_running_group? + test.config.options[:crd_test_group] == LONG_RUNNING_GROUP_TAG + end + + def long_running_pause_time + JSON.parse(result.input_json) + .find { |input| input['name'].include?('long_running_pause_time') } + &.dig('value').to_i + end + + # end the wait immediately after the long-running request returns + # pause here because update_result runs before response generation + def update_result + return unless long_running_group? + + sleep long_running_pause_time + results_repo.update(result.id, result: 'pass', result_message: '') + end + end +end diff --git a/lib/davinci_crd_test_kit/mock_service_response.rb b/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb similarity index 76% rename from lib/davinci_crd_test_kit/mock_service_response.rb rename to lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb index 216a6e91..88b20b62 100644 --- a/lib/davinci_crd_test_kit/mock_service_response.rb +++ b/lib/davinci_crd_test_kit/client/endpoints/mock_service_response.rb @@ -1,11 +1,19 @@ module DaVinciCRDTestKit # Serve responses to CRD hook invocations module MockServiceResponse + def build_mock_hook_response + hook_card_response = create_cards_and_system_actions + update_specific_hook_card_info(hook_card_response) + create_warning_messages(hook_card_response) + + hook_card_response + end + def selected_response_types @selected_response_types ||= JSON.parse(result.input_json) .find { |input| input['name'].include?('selected_response_types') } - &.dig('value') + &.dig('value') || [] end def current_time @@ -17,7 +25,10 @@ def coverage_information_required_hooks end def load_json_file(filename) - json = JSON.parse(File.read(File.join(__dir__, 'card_responses', filename))) + json = JSON.parse(File.read(File.join(__dir__, 'mocked_card_responses', filename))) + if ig_version == 'v221' + json['source']['topic']['system'] = 'http://terminology.hl7.org/CodeSystem/cdshooks-card-type' + end return json unless filename == 'launch_smart_app.json' json['links'].first['url'] = "#{Inferno::Application['base_url']}/custom/smart/launch" @@ -56,13 +67,17 @@ def missing_response_type_filter(response_type, hook_card_response) end def coverage_information_required? - coverage_information_required_hooks.include? hook_name + coverage_information_required_hooks.include? requested_hook end def get_missing_response_types(hook_card_response) - selected_response_types.append('coverage_information').uniq! if coverage_information_required? + expected_types = if coverage_information_required? + selected_response_types | ['coverage_information'] + else + selected_response_types + end - selected_response_types + expected_types .select do |response_type| response_type = response_type .split('_') @@ -88,7 +103,7 @@ def create_warning_messages(hook_card_response) Inferno::Repositories::Messages.new.create( result_id: result.id, type: 'warning', - message: %(Unable to return response type `#{missing_response_type}` for #{hook_name} hook) + message: %(Unable to return response type `#{missing_response_type}` for #{requested_hook} hook) ) end end @@ -109,11 +124,12 @@ def create_card_response(hook_card_response) def update_specific_hook_card_info(card_response) return if card_response.nil? - hook_display = hook_name.split('-').map(&:capitalize).join(' ') - card_response['cards'].map do |card| + hook_display = requested_hook.split('-').map(&:capitalize).join(' ') + card_response['cards']&.tap(&:compact!)&.each do |card| card['summary'].prepend("#{hook_display} ") card['uuid'] = SecureRandom.uuid end + card_response['systemActions']&.compact! card_response end @@ -125,22 +141,14 @@ def resource_to_update_field_name 'order-dispatch' => 'order', 'order-select' => 'draftOrders', 'order-sign' => 'draftOrders' - }[hook_name] + }[requested_hook] end def resource_type_to_update { 'encounter-start' => 'Encounter', 'encounter-discharge' => 'Encounter' - }[hook_name] - end - - def build_mock_hook_response - hook_card_response = create_cards_and_system_actions - update_specific_hook_card_info(hook_card_response) - create_warning_messages(hook_card_response) - - hook_card_response + }[requested_hook] end def make_resource_request(uri, access_token) @@ -155,9 +163,9 @@ def make_resource_request(uri, access_token) end def get_patient_coverage # rubocop:disable Naming/AccessorMethodName - prefetch = request_body['prefetch'] - if prefetch.present? && prefetch['coverage'] - coverage_or_bundle = FHIR.from_contents(prefetch['coverage'].to_json) + prefetched_coverage = extract_prefetched_coverage(request_body['prefetch']) + if prefetched_coverage.present? + coverage_or_bundle = FHIR.from_contents(prefetched_coverage.to_json) coverage_or_bundle.is_a?(FHIR::Bundle) ? coverage_or_bundle.entry.first&.resource : coverage_or_bundle else fhir_server = request_body['fhirServer'] @@ -173,7 +181,17 @@ def get_patient_coverage # rubocop:disable Naming/AccessorMethodName end end + def extract_prefetched_coverage(prefetch) + return nil unless prefetch.present? + return prefetch['coverage'] if prefetch['coverage'].present? + return prefetch['cov'] if prefetch['cov'].present? + + nil + end + def get_context_resource(update_resource_id) + return unless update_resource_id.present? + update_resource_id = "#{resource_type_to_update}/#{update_resource_id}" unless update_resource_id.include? '/' fhir_server = request_body['fhirServer'] return if fhir_server.blank? @@ -207,6 +225,7 @@ def create_cards_and_system_actions cards_response rescue StandardError => e Inferno::Application['logger'].error(e.full_message) + # TODO: - make sure this gets logged nil end @@ -227,31 +246,27 @@ def add_basic_cards(cards) def add_coverage_cards(cards) return unless add_coverage_cards? + system_actions = [] coverage = get_patient_coverage if coverage.present? if selected_response_types.include?('coverage_information') || coverage_information_required? - system_actions = - create_coverage_extension_system_actions(coverage.id) + system_actions = create_coverage_extension_system_actions(coverage.id) end if selected_response_types.include?('create_update_coverage_info') - cards.append(create_or_update_coverage(coverage)) + coverage_card = create_or_update_coverage(coverage) + cards.append(coverage_card) if coverage_card.present? end end system_actions end def create_coverage_extension_system_actions(coverage_id) - update_resource = context[resource_to_update_field_name] - prefetch_id = resource_to_update_field_name.split(/(?=[A-Z])/).first - fhir_resource = - if update_resource.is_a? Hash - FHIR.from_contents(update_resource.to_json) - elsif request_body['prefetch'] && request_body['prefetch'][prefetch_id] - FHIR.from_contents(request_body['prefetch'][prefetch_id].to_json) + if requested_hook == 'order-dispatch' && ig_version == 'v221' + find_prefetched_order_dispatch_orders else - get_context_resource(update_resource) + identify_resources_for_system_actions end create_system_actions(fhir_resource, coverage_id) @@ -259,6 +274,55 @@ def create_coverage_extension_system_actions(coverage_id) nil end + def identify_resources_for_system_actions + update_resource = context[resource_to_update_field_name] + prefetch_id = prefetch_key_for_system_actions + + if update_resource.is_a? Hash + FHIR.from_contents(update_resource.to_json) + elsif prefetch_id.present? && request_body['prefetch'] && request_body['prefetch'][prefetch_id] + FHIR.from_contents(request_body['prefetch'][prefetch_id].to_json) + elsif update_resource.present? + get_context_resource(update_resource) + end + end + + def prefetch_key_for_system_actions + if requested_hook.starts_with?('encounter') + 'encounter' + elsif requested_hook == 'order-dispatch' + 'order' + end + end + + def find_prefetched_order_dispatch_orders + orders_bundle = FHIR::Bundle.new + + context['dispatchedOrders']&.each do |order_reference| + prefetched_entry = find_one_prefetched_order_dispatch_order(order_reference) + if prefetched_entry.present? + orders_bundle.entry << prefetched_entry + next + end + + read_resource = get_context_resource(order_reference) + orders_bundle.entry << FHIR::Bundle::Entry.new({ resource: read_resource }) if read_resource.present? + end + + orders_bundle if orders_bundle.entry.present? + end + + def find_one_prefetched_order_dispatch_order(order_reference) + resource_type, id = order_reference.split('/') + prefetch_key = "#{resource_type[0].downcase}#{resource_type[1..]}s" + return unless request_body['prefetch'].present? && request_body['prefetch'][prefetch_key].present? + + prefetch_bundle = FHIR.from_contents(request_body['prefetch'][prefetch_key].to_json) + prefetch_bundle.entry.find do |entry| + entry.resource.present? && entry.resource.resourceType == resource_type && entry.resource.id == id + end + end + def create_system_actions(resource, coverage_id) return if resource.nil? @@ -375,6 +439,7 @@ def create_form_completion_card form_completion_task['for']['reference'] = "Patient/#{context['patientId']}" form_completion_task['authoredOn'] = current_time.strftime('%Y-%m-%d') + form_completion_task['input'].delete_at(1) if ig_version == 'v221' request_form_completion_card end @@ -400,13 +465,7 @@ def create_alternate_request_card propose_alternate_request_card = load_json_file('propose_alternate_request.json') - if hook_name == 'order-dispatch' - order_resource = get_context_resource(context['order']) - else - draft_orders = context['draftOrders']['entry'] - draft_order_resource = draft_orders[0]['resource'] - order_resource = FHIR.from_contents(draft_order_resource.to_json) - end + order_resource = identify_alternate_order_resource return if order_resource.nil? order_resource_type = order_resource.resourceType @@ -427,5 +486,19 @@ def create_alternate_request_card ) propose_alternate_request_card end + + def identify_alternate_order_resource + if requested_hook == 'order-dispatch' + if ig_version == 'v221' + find_prefetched_order_dispatch_orders&.entry&.first&.resource + elsif context['order'].present? + get_context_resource(context['order']) + end + else + draft_orders = context['draftOrders']['entry'] + draft_order_resource = draft_orders[0]['resource'] + FHIR.from_contents(draft_order_resource.to_json) + end + end end end diff --git a/lib/davinci_crd_test_kit/card_responses/companions_prerequisites.json b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/companions_prerequisites.json similarity index 100% rename from lib/davinci_crd_test_kit/card_responses/companions_prerequisites.json rename to lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/companions_prerequisites.json diff --git a/lib/davinci_crd_test_kit/card_responses/create_update_coverage_information.json b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/create_update_coverage_information.json similarity index 90% rename from lib/davinci_crd_test_kit/card_responses/create_update_coverage_information.json rename to lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/create_update_coverage_information.json index e6bb7f68..b95552b7 100644 --- a/lib/davinci_crd_test_kit/card_responses/create_update_coverage_information.json +++ b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/create_update_coverage_information.json @@ -1,6 +1,6 @@ { "summary": "Create/Update Coverage Information Card", - "detail": "This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD Client", + "detail": "This is a Create/Update Coverage Information Card which is sent when the CRD server is aware of additional coverage that is relevant to the current/proposed activity or has updates/corrections to make to the information held by the CRD client", "indicator": "info", "source": { "label": "Inferno", diff --git a/lib/davinci_crd_test_kit/card_responses/external_reference.json b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json similarity index 100% rename from lib/davinci_crd_test_kit/card_responses/external_reference.json rename to lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/external_reference.json diff --git a/lib/davinci_crd_test_kit/card_responses/instructions.json b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/instructions.json similarity index 100% rename from lib/davinci_crd_test_kit/card_responses/instructions.json rename to lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/instructions.json diff --git a/lib/davinci_crd_test_kit/card_responses/launch_smart_app.json b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json similarity index 100% rename from lib/davinci_crd_test_kit/card_responses/launch_smart_app.json rename to lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/launch_smart_app.json diff --git a/lib/davinci_crd_test_kit/card_responses/propose_alternate_request.json b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/propose_alternate_request.json similarity index 100% rename from lib/davinci_crd_test_kit/card_responses/propose_alternate_request.json rename to lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/propose_alternate_request.json diff --git a/lib/davinci_crd_test_kit/card_responses/request_form_completion.json b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/request_form_completion.json similarity index 99% rename from lib/davinci_crd_test_kit/card_responses/request_form_completion.json rename to lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/request_form_completion.json index 79682aab..2c7f6ed6 100644 --- a/lib/davinci_crd_test_kit/card_responses/request_form_completion.json +++ b/lib/davinci_crd_test_kit/client/endpoints/mocked_card_responses/request_form_completion.json @@ -24,7 +24,7 @@ "id": "XYZ", "url": "http://example.org/Questionnaire/XYZ", "title": "Cancer Quality Forum Questionnaire XYZ", - "version": 2, + "version": "2", "status": "active", "subjectType": [ "Patient" @@ -239,4 +239,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb b/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb new file mode 100644 index 00000000..5bf60078 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/multi_request_message_helper.rb @@ -0,0 +1,35 @@ +module DaVinciCRDTestKit + module MultiRequestMessageHelper + def request_prefix(request_index) + "(Request #{request_index + 1}) " + end + + def add_request_message(type, message, request_index) + add_message(type, "#{request_prefix(request_index)}#{message}") + end + + def parse_json_request_entity(body, entity, request_index) + JSON.parse(body) + rescue JSON::ParserError + add_request_message('error', "#{entity} contains invalid JSON.", request_index) + nil + end + + def requests_with_errors_prefix + request_numbers = error_request_numbers + return '' if request_numbers.empty? + + noun = request_numbers.size == 1 ? 'Request' : 'Requests' + "#{noun} #{request_numbers.to_sentence}: " + end + + private + + def error_request_numbers + messages + .select { |m| m[:type] == 'error' } + .filter_map { |m| m[:message].match(/\A\(Request (\d+)\)/)&.captures&.first&.to_i } + .sort.uniq + end + end +end diff --git a/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb b/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb new file mode 100644 index 00000000..87028592 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/tagged_request_load_helper.rb @@ -0,0 +1,38 @@ +module DaVinciCRDTestKit + module TaggedRequestLoadHelper + ALL_HOOKS = [ + APPOINTMENT_BOOK_TAG, + ENCOUNTER_START_TAG, + ENCOUNTER_DISCHARGE_TAG, + ORDER_DISPATCH_TAG, + ORDER_SELECT_TAG, + ORDER_SIGN_TAG + ].freeze + + def hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load(hook = hook_name) + crd_test_group.present? ? [crd_test_group] : [hook] + end + + def load_hook_requests + load_tagged_requests(*tags_to_load) + end + + def requests_to_analyze + if hook_name.present? + load_tagged_requests(*tags_to_load) + else + ALL_HOOKS.each_with_object([]) do |hook, request_list| + request_list.concat(load_tagged_requests(*tags_to_load(hook))) + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb new file mode 100644 index 00000000..ca58d0f7 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test.rb @@ -0,0 +1,43 @@ +module DaVinciCRDTestKit + module V201 + class ClientFHIRApiCreateTest < Inferno::Test + id :crd_v201_client_fhir_api_create_test + title 'Create Interaction' + description %( + Verify that the CRD client supports the create interaction for the given resource. The capabilities required + by each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 + ) + + input :create_resources, + type: 'textarea', + description: 'Provide a list of resources to create. e.g., [json_resource_1, json_resource_2]', + optional: true + + def resource_type + config.options[:resource_type] + end + + run do + skip_if create_resources.blank?, 'Provide a list of resources to create to run this test.' + assert_valid_json(create_resources) + create_resources_list = JSON.parse(create_resources) + skip_if(!create_resources_list.is_a?(Array), 'Resources to create not inputted in list format, skipping test.') + + valid_create_resources = + create_resources_list + .compact_blank + .map { |resource| FHIR.from_contents(resource.to_json) } + .select { |resource| resource.resourceType == resource_type } + .select { |resource| resource_is_valid?(resource:) } + + skip_if(valid_create_resources.blank?, + %(No valid #{resource_type} resources were provided to send in Create requests, skipping test.)) + + valid_create_resources.each do |create_resource| + fhir_create(create_resource) + assert_response_status(201) + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test.rb new file mode 100644 index 00000000..5d781a75 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test.rb @@ -0,0 +1,43 @@ +module DaVinciCRDTestKit + module V201 + class ClientFHIRApiReadTest < Inferno::Test + id :crd_v201_client_fhir_api_read_test + title 'Read Interaction' + description %( + Verify that the CRD client supports the read interaction for the given resource. The capabilities required by + each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 + ) + + input :resource_ids, + optional: true + + def resource_type + config.options[:resource_type] + end + + def no_resources_skip_message + "No #{resource_type} resource ids were provided, skipping test. " + end + + def bad_resource_id_message(expected_id) + "Expected resource to have id: `#{expected_id}`, but found `#{resource.id}`" + end + + run do + skip_if resource_ids.blank?, no_resources_skip_message + + resource_id_list = resource_ids.split(',').map(&:strip) + assert resource_id_list.present?, "No #{resource_type} id provided." + + resource_id_list.each do |resource_id_to_read| + fhir_read resource_type, resource_id_to_read, tags: [resource_type, 'read'] + + assert_response_status(200) + assert_resource_type(resource_type) + assert resource.id.present? && resource.id == resource_id_to_read, + bad_resource_id_message(resource_id_to_read) + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test.rb new file mode 100644 index 00000000..c4c2fae6 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test.rb @@ -0,0 +1,234 @@ +module DaVinciCRDTestKit + module V201 + class ClientFHIRApiSearchTest < Inferno::Test + id :crd_v201_client_fhir_api_search_test + title 'Search Interaction' + description %( + Verify that the CRD client supports the specified search interaction for the given resource. The capabilities + required by each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 + ) + + input :search_param_values, + optional: true + + attr_accessor :successful_search + + def resource_type + config.options[:resource_type] + end + + def search_type + config.options[:search_type] + end + + def include_searches + ['organization_include', 'practitioner_include', 'location_include'] + end + + def reference_search_parameters + ['organization', 'practitioner', 'patient'] + end + + def bad_resource_id_message(expected_id, actual_id) + "Expected resource to have id: `#{expected_id}`, but found `#{actual_id}`" + end + + def perform_fhir_search(search_params, tags) + fhir_search(resource_type, params: search_params, tags:) + assert_response_status(200) + assert_resource_type(:bundle) + resource + end + + def status_search_result_check(bundle, status) + return if bundle.entry.empty? + + self.successful_search = true + + bundle.entry + .reject { |entry| entry&.resource&.resourceType == 'OperationOutcome' } + .map(&:resource) + .each do |resource| + assert_resource_type(resource_type, resource:) + assert(resource.status == status, %( + Each #{resource_type} resource in search result bundle should have a status of `#{status}`, instead got: + `#{resource.status}` for resource with id: `#{resource.id}` + )) + end + end + + def check_id_search_result_entry(bundle_entry, search_id, entry_resource_type) + assert_resource_type(entry_resource_type, resource: bundle_entry) + + assert bundle_entry.id.present?, "Expected id field in returned #{entry_resource_type} resource" + + assert bundle_entry.id == search_id, + bad_resource_id_message(search_id, bundle_entry.id) + end + + def id_search_result_check(bundle, search_id) + warning do + assert bundle.entry.any?, + "Search result bundle is empty for #{resource_type} _id search with an id of `#{search_id}`" + end + return if bundle.entry.empty? + + self.successful_search = true + + bundle.entry + .reject { |entry| entry&.resource&.resourceType == 'OperationOutcome' } + .map(&:resource) + .each do |resource| + check_id_search_result_entry(resource, search_id, resource_type) + end + end + + def check_include_reference(base_resource_entry, include_resource_id, include_resource_type) + base_resource_references = Array.wrap(get_reference_field(include_resource_type, base_resource_entry)).compact + + assert(base_resource_references.present?, %( + #{resource_type} resource with id #{base_resource_entry.id} did not include the field that references a + #{include_resource_type} resource} + )) + + base_resource_reference_match_found = base_resource_references.any? do |base_resource_reference| + base_resource_reference.reference_id == include_resource_id + end + + assert(base_resource_reference_match_found, %( + The #{resource_type} resource in search result bundle with id #{base_resource_entry.id} did not have a + #{include_resource_type} reference with an id of `#{include_resource_id}`.` + )) + end + + def include_search_result_check(bundle, search_id, included_resource_type) # rubocop:disable Metrics/CyclomaticComplexity + warning do + assert bundle.entry.any?, + "Search result bundle is empty for #{resource_type} _include #{search_type} search with an id + of `#{search_id}`" + end + return if bundle.entry.empty? + + self.successful_search = true + + base_resource_entry_list = bundle.entry.select do |entry| + entry.resource&.resourceType == resource_type + end + + assert(base_resource_entry_list.length == 1, %( + The #{included_resource_type} _include search for #{resource_type} resource with id #{search_id} + should include exactly 1 #{resource_type} resource, instead got #{base_resource_entry_list.length}. + )) + + base_resource_entry = base_resource_entry_list.first.resource + + bundle.entry + .map(&:resource) + .each do |resource| + entry_resource_type = resource.resourceType + + if entry_resource_type == resource_type + check_id_search_result_entry(resource, search_id, entry_resource_type) + elsif entry_resource_type != 'OperationOutcome' + entry_resource_type = included_resource_type.capitalize + assert_resource_type(entry_resource_type, resource:) + + included_resource_id = resource.id + assert included_resource_id.present?, "Expected id field in returned #{entry_resource_type} resource" + check_include_reference(base_resource_entry, included_resource_id, included_resource_type) + end + end + end + + def get_reference_field(reference_type, entry) + case reference_type + when 'patient' + entry.beneficiary + when 'practitioner' + entry.practitioner + when 'organization' + if resource_type == 'Encounter' + entry.serviceProvider + else + entry.organization + end + when 'location' + locations = entry.location + locations.map(&:location) + end + end + + def reference_search_result_check(bundle, reference_id, reference_type) + warning do + assert bundle.entry.any?, %( + Search result bundle is empty for #{resource_type} #{reference_type} search with a #{reference_type} id + `#{reference_id}` + ) + end + return if bundle.entry.empty? + + self.successful_search = true + + bundle.entry + .reject { |entry| entry&.resource&.resourceType == 'OperationOutcome' } + .map(&:resource) + .each do |resource| + assert_resource_type(resource_type, resource:) + + entry_reference_field = get_reference_field(reference_type, resource) + assert( + entry_reference_field.present?, + %( + #{resource_type} resource with id #{resource.id} did not include the field that references + a #{reference_type} resource + ) + ) + + entry_reference_id = entry_reference_field.reference_id + assert( + entry_reference_id == reference_id, + %( + The #{resource_type} resource in search result bundle with id #{resource.id} should have a + #{reference_type} reference with an id of `#{reference_id}`, instead got: `#{entry_reference_id}` + ) + ) + end + end + + run do + if search_type == 'status' + coverage_status = ['active', 'cancelled', 'draft', 'entered-in-error'] + coverage_status.each do |status| + bundle = perform_fhir_search({ status: }, [resource_type, 'status_search']) + status_search_result_check(bundle, status) + end + else + skip_if search_param_values.blank?, 'No search parameters passed in, skipping test.' + + search_id_list = search_param_values.split(',').map(&:strip) + search_id_list.each do |search_id| + if search_type == '_id' + bundle = perform_fhir_search({ _id: search_id }, [resource_type, 'id_search']) + id_search_result_check(bundle, search_id) + elsif reference_search_parameters.include?(search_type) + search_params = {} + search_params[search_type] = "#{search_type.capitalize}/#{search_id}" + bundle = perform_fhir_search(search_params, [resource_type, "#{search_type}_search"]) + reference_search_result_check(bundle, search_id, search_type) + elsif include_searches.include?(search_type) + include_resource_type = search_type.gsub('_include', '') + bundle = perform_fhir_search({ _id: search_id, _include: "#{resource_type}:#{include_resource_type}" }, + [resource_type, "include_#{include_resource_type}_search"]) + include_search_result_check(bundle, search_id, include_resource_type) + else + raise StandardError, + 'Passed in search_type does not match to any of the search types handled by this search test.' + end + end + end + skip_if !successful_search, + 'No resources returned in any of the search result bundles.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test.rb new file mode 100644 index 00000000..8f739b50 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test.rb @@ -0,0 +1,43 @@ +module DaVinciCRDTestKit + module V201 + class ClientFHIRApiUpdateTest < Inferno::Test + id :crd_v201_client_fhir_api_update_test + title 'Update Interaction' + description %( + Verify that the CRD client supports the update interaction for the given resource. The capabilities required by + each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 + ) + + input :update_resources, + type: 'textarea', + description: 'Provide a list of resources to update. e.g., [json_resource_1, json_resource_2]', + optional: true + + def resource_type + config.options[:resource_type] + end + + run do + skip_if update_resources.blank?, 'Provide a list of resources to update to run this test.' + assert_valid_json(update_resources) + update_resources_list = JSON.parse(update_resources) + skip_if(!update_resources_list.is_a?(Array), 'Resources to update not inputted in list format, skipping test.') + + valid_update_resources = + update_resources_list + .compact_blank + .map { |resource| FHIR.from_contents(resource.to_json) } + .select { |resource| resource.resourceType == resource_type } + .select { |resource| resource_is_valid?(resource:) } + + skip_if(valid_update_resources.blank?, + %(No valid #{resource_type} resources were provided to send in Update requests, skipping test.)) + + valid_update_resources.each do |update_resource| + fhir_update(update_resource, update_resource.id) + assert_response_status([200, 201]) + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test.rb new file mode 100644 index 00000000..10a83d31 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test.rb @@ -0,0 +1,63 @@ +module DaVinciCRDTestKit + module V201 + class ClientFHIRApiValidationTest < Inferno::Test + id :crd_v201_client_fhir_api_validation_test + title 'FHIR Resource Validation' + description %( + Verify that the given resources returned from the previous client API interactions are valid resources. Each + resource is validated against its corresponding [CRD resource profile](https://hl7.org/fhir/us/davinci-crd/STU2/artifacts.html). + ) + + def resource_type + config.options[:resource_type] + end + + def structure_definition_map + { + 'Practitioner' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner', + 'PractitionerRole' => 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole', + 'Patient' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient', + 'Encounter' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter', + 'Coverage' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-coverage', + 'Device' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-device', + 'Location' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location', + 'Organization' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization' + }.freeze + end + + def profile_url + structure_definition_map[resource_type] + end + + run do + load_tagged_requests(resource_type) + skip_if requests.empty?, 'No FHIR api requests were made' + + requests.keep_if { |req| req.status == 200 } + skip_if(requests.blank?, + 'There were no successful FHIR API requests made in previous tests to use in validation.') + + validated_resources = + requests + .map(&:resource) + .compact + .flat_map { |resource| resource.is_a?(FHIR::Bundle) ? resource.entry.map(&:resource) : resource } + .select { |resource| resource.resourceType == resource_type } + .uniq { |resource| resource.to_reference.reference } + .map { |resource| resource_is_valid?(resource:, profile_url:) } + + skip_if(validated_resources.blank?, + %(No #{resource_type} resources were returned from any of the FHIR API requests made in previous tests + that could be validated.)) + + validation_error_count = messages.count { |msg| msg[:type] == 'error' } + invalid_resource_count = validated_resources.reject { |valid| valid }.count + assert(validation_error_count.zero?, + %(#{invalid_resource_count}/#{validated_resources.length} #{resource_type} resources returned from + previous test's FHIR API requests failed validation.)) + + skip_if validated_resources.blank?, 'No FHIR resources were made in previous tests that could be validated.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test.rb new file mode 100644 index 00000000..d255e822 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test.rb @@ -0,0 +1,64 @@ +require_relative '../../client_hook_request_validation' + +module DaVinciCRDTestKit + module V201 + class DecodeAuthTokenTest < Inferno::Test + include ClientHookRequestValidation + id :crd_v201_decode_auth_token + title 'Bearer token can be decoded' + description %( + Verify that the Bearer token is a properly constructed JWT. As per the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#trusting-cds-clients), + each time a CDS client transmits a request to a CDS Service which requires authentication, the request MUST + include an Authorization header presenting the JWT as a "Bearer" token. + ) + + verifies_requirements 'cds-hooks_2.0@178' + + output :auth_tokens, :auth_token_payloads_json, :auth_token_headers_json + + def hook_name + config.options[:hook_name] + end + + run do + load_tagged_requests(hook_name) + skip_if requests.empty?, "No #{hook_name} requests were made in a previous test as expected." + auth_tokens = [] + auth_token_payloads_json = [] + auth_token_headers_json = [] + + requests.each_with_index do |request, index| + @request_number = index + 1 + + authorization_header = request.request_header('Authorization')&.value + + unless authorization_header.start_with?('Bearer ') + add_message('error', "#{request_number}Authorization token must be a JWT presented as a `Bearer` token") + end + + auth_token = authorization_header.delete_prefix('Bearer ') + auth_tokens << auth_token + + begin + payload, header = + JWT.decode( + auth_token, + nil, + false + ) + + auth_token_payloads_json << payload.to_json + auth_token_headers_json << header.to_json + rescue StandardError => e + add_message('error', "#{request_number}Token is not a properly constructed JWT: #{e.message}") + end + end + output auth_tokens: auth_tokens.to_json, + auth_token_payloads_json: auth_token_payloads_json.to_json, + auth_token_headers_json: auth_token_headers_json.to_json + + no_error_validation('Decoding Authorization header Bearer tokens failed.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb new file mode 100644 index 00000000..3914b5ba --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test.rb @@ -0,0 +1,109 @@ +require_relative '../../client_hook_request_validation' + +module DaVinciCRDTestKit + module V201 + class RetrieveJWKSTest < Inferno::Test + include ClientHookRequestValidation + + id :crd_v201_retrieve_jwks + title 'JWKS can be retrieved' + description %( + Verify that the JWKS can be retrieved from the JWKS uri if it is present in the `jku` field within the JWT token + header. As per the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#trusting-cds-clients), if the jku + header field is omitted, the CDS client and CDS service SHALL communicate the JWK Set out-of-band. Therefore, + if the client does not make their keys publicly available via a uri in the `jku` field, the user must + submit the jwk_set as an input to the test. + ) + + verifies_requirements 'cds-hooks_2.0@183', 'cds-hooks_2.0@185', 'cds-hooks_2.0@197', 'cds-hooks_2.0@199' + + input :auth_token_headers_json + input :cds_jwk_set, + title: 'CRD JSON Web Key Set (JWKS)', + type: 'textarea', + description: %( + The client's registered JWK Set containing it's public key, either + as a publicly accessible url containing the JWKS, or the raw JWKS. + Run or re-run the **Client Registration** group to set or + change this value. Used if the `jku` header is not found in the auth token jwt. + ), + locked: true, + optional: true + output :crd_jwks_json, :crd_jwks_keys_json + + run do + auth_token_headers = JSON.parse(auth_token_headers_json) + skip_if auth_token_headers.empty?, 'No Authorization tokens produced from the previous test.' + + crd_jwks_json = [] + crd_jwks_keys_json = [] + auth_token_headers.each_with_index do |token_header, index| + @request_number = index + 1 + + jku = JSON.parse(token_header)['jku'] + if jku.present? + get(jku) + + if response[:status] != 200 + add_message('error', %( + #{request_number}Unexpected response status: expected 200, but received + #{response[:status]})) + next + end + + @request_number = index + 1 + jwks = json_parse(response[:body]) + next if jwks.blank? + + crd_jwks_json << response[:body] + + jwks = JSON.parse(response[:body]) + else + skip_if cds_jwk_set.blank?, + %(#{request_number}JWK Set must be inputted if the client's JWK Set is not available via a URL + identified by the jku header field) + + jwks = JSON.parse(cds_jwk_set) + end + + keys = jwks['keys'] + unless keys.is_a?(Array) + add_message('error', "#{request_number}JWKS `keys` field must be an array") + next + end + + if keys.blank? + add_message('error', "#{request_number}The JWK set returned contains no public keys") + next + end + + keys.each do |jwk| + JWT::JWK.import(jwk.deep_symbolize_keys) + rescue StandardError + add_message('error', "#{request_number}Invalid JWK: #{jwk.to_json}") + end + + kid_presence = keys.all? { |key| key['kid'].present? } + if kid_presence.blank? + add_message('error', + "#{request_number}`kid` field must be present in each key if JWKS contains multiple keys") + next + end + + kid_uniqueness = keys.map { |key| key['kid'] }.uniq.length == keys.length + if kid_uniqueness.blank? + add_message('error', "#{request_number}`kid` must be unique within the client's JWK Set.") + next + end + + crd_jwks_keys_json << keys.to_json + end + + output crd_jwks_json: crd_jwks_json.to_json, + crd_jwks_keys_json: crd_jwks_keys_json.to_json + + no_error_validation('Retrieving JWKS failed.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test.rb new file mode 100644 index 00000000..aa47e5f4 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test.rb @@ -0,0 +1,70 @@ +require_relative '../../client_hook_request_validation' + +module DaVinciCRDTestKit + module V201 + class TokenHeaderTest < Inferno::Test + include ClientHookRequestValidation + + id :crd_v201_token_header + title 'Authorization token header contains required information' + description %( + Verify that the JWT header contains the header fields required by the + [CDS hooks spec](https://cds-hooks.hl7.org/2.0#trusting-cds-clients). + The `alg`, `kid`, and `typ` fields are required. This test also verifies that the `typ` field is set to + `JWT` and that the key used to sign the token can be identified in the JWKS. + ) + + verifies_requirements 'cds-hooks_2.0@182', 'cds-hooks_2.0@184', 'cds-hooks_2.0@202' + + input :auth_token_headers_json, :crd_jwks_keys_json + output :auth_tokens_jwk_json + + run do + auth_token_headers = JSON.parse(auth_token_headers_json) + crd_jwks_keys = JSON.parse(crd_jwks_keys_json) + skip_if auth_token_headers.empty?, 'No Authorization tokens produced from the previous tests.' + skip_if crd_jwks_keys.empty?, 'No JWKS keys produced from the previous test.' + + auth_tokens_jwk_json = [] + auth_token_headers.each_with_index do |token_header, index| + @request_number = index + 1 + + header = JSON.parse(token_header) + algorithm = header['alg'] + + add_message('error', "#{request_number}Token header must have the `alg` field") if algorithm.blank? + + add_message('error', "#{request_number}Token header `alg` field cannot be set to none") if algorithm == 'none' + + if header['typ'].blank? + add_message('error', "#{request_number}Token header must have the `typ` field") + elsif header['typ'] != 'JWT' + add_message('error', %( + #{request_number}Token header `typ` field must be set to 'JWT', instead was + #{header['typ']})) + end + + if header['kid'].blank? + add_message('error', "#{request_number}Token header must have the `kid` field") + next + end + + kid = header['kid'] + keys = JSON.parse(crd_jwks_keys[index]) + + jwk = keys.find { |key| key['kid'] == kid } + if jwk.blank? + add_message('error', "#{request_number}JWKS did not contain a public key with an id of `#{kid}`") + next + end + + auth_tokens_jwk_json << jwk.to_json + end + + output auth_tokens_jwk_json: auth_tokens_jwk_json.to_json + + no_error_validation('Token headers missing required information.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb new file mode 100644 index 00000000..0e3411cc --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test.rb @@ -0,0 +1,84 @@ +require_relative '../../client_hook_request_validation' + +module DaVinciCRDTestKit + module V201 + class TokenPayloadTest < Inferno::Test + include ClientHookRequestValidation + include ClientURLs + id :crd_v201_token_payload + title 'Authorization token payload has required claims and a valid signature' + description %( + Verify that the JWT payload contains the payload fields required by the + [CDS hooks spec](https://cds-hooks.hl7.org/2.0#trusting-cds-clients). + The `iss`, `aud`, `exp`, `iat`, and `jti` claims are required. + Additionally: + + - `iss` must match the `issuer` from the **CRD JWT Issuer** input + - `aud` must match the URL of the CDS Service endpoint being invoked + - `exp` must represent a time in the future + - `jti` must be a non-blank string that uniquely identifies this authentication JWT + ) + + verifies_requirements 'cds-hooks_2.0@180', 'cds-hooks_2.0@181', 'cds-hooks_2.0@187', 'cds-hooks_2.0@189', + 'cds-hooks_2.0@190', 'cds-hooks_2.0@191', 'cds-hooks_2.0@192', 'cds-hooks_2.0@196', + 'cds-hooks_2.0@203' + + REQUIRED_CLAIMS = ['iss', 'aud', 'exp', 'iat', 'jti'].freeze + + def required_claims + REQUIRED_CLAIMS.dup + end + + def hook_url + inferno_base_url + config.options[:hook_path] + end + + input :auth_tokens, + :auth_tokens_jwk_json, + :cds_jwt_iss + + run do + auth_tokens_list = JSON.parse(auth_tokens) + auth_tokens_jwk = JSON.parse(auth_tokens_jwk_json) + skip_if auth_tokens_list.empty?, 'No Authorization tokens produced from the previous tests.' + skip_if auth_tokens_jwk.empty?, 'No Authorization token JWK produced from the previous test.' + + auth_tokens_jwk.each_with_index do |auth_token_jwk, index| + @request_number = index + 1 + + begin + jwk = JSON.parse(auth_token_jwk).deep_symbolize_keys + + payload, = + JWT.decode( + auth_tokens_list[index], + JWT::JWK.import(jwk).public_key, + true, + algorithms: [jwk[:alg]], + exp_leeway: 60, + iss: cds_jwt_iss, + aud: hook_url, + verify_not_before: false, + verify_iat: false, + verify_jti: true, + verify_iss: true, + verify_aud: true + ) + rescue StandardError => e + add_message('error', "#{request_number}Token validation error: #{e.message}") + next + end + + missing_claims = required_claims - payload.keys + missing_claims_string = missing_claims.map { |claim| "`#{claim}`" }.join(', ') + + unless missing_claims.empty? + add_message('error', "#{request_number}JWT payload missing required claims: #{missing_claims_string}") + next + end + end + no_error_validation('Token payload is missing required claims or does not have a valid signature.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/routes/cds-services.json b/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json similarity index 97% rename from lib/davinci_crd_test_kit/routes/cds-services.json rename to lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json index 5156d0ee..cd53ad36 100644 --- a/lib/davinci_crd_test_kit/routes/cds-services.json +++ b/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json @@ -4,7 +4,7 @@ { "hook": "appointment-book", "title": "Appointment Booking CDS Service", - "description": "An example of a CDS Service that is invoked when user of a CRD Client books a future appointment for a patient", + "description": "An example of a CDS Service that is invoked when user of a CRD client books a future appointment for a patient", "id": "appointment-book-service", "prefetch": { "user": "{{context.userId}}", diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb new file mode 100644 index 00000000..194b45ab --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_appointment_book_group.rb @@ -0,0 +1,108 @@ +require_relative 'invocation/appointment_book_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_optional_fields_test' +require_relative 'verify_request/hook_request_required_fields_test' +require_relative 'verify_request/hook_request_valid_context_test' +require_relative 'verify_request/hook_request_valid_prefetch_test' +require_relative 'verify_request/hook_request_fetched_data_test' +require_relative 'verify_request/hook_request_prefetch_equals_queried_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V201 + class ClientAppointmentBookGroup < Inferno::TestGroup + title 'appointment-book' + id :crd_v201_client_appointment_book + description <<~DESCRIPTION + The appointment-book hook is invoked when the user is scheduling one or more future encounters/visits for the + patient. These tests are based on the following criteria: + * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book), + which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID + fields + * Specific [appointment-book `context` requirements](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/) + defined in the CDS Hooks specification + + This version of the CRD implementation guide refers to version 1.0 of the hook. + DESCRIPTION + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@172' + + run_as_group + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :appointment_book_auth_token_headers_json }, + auth_tokens: { name: :appointment_book_auth_tokens }, + auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json }, + client_access_token: { name: :appointment_book_client_access_token }, + override_access_token: { name: :appointment_book_override_access_token, + title: 'appointment-book Prefetch Validation Override Bearer Token' }, + client_fhir_server: { name: :appointment_book_client_fhir_server }, + crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json }, + custom_response_template: { name: :appointment_book_custom_response_template }, + selected_response_types: { name: :appointment_book_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :appointment_book_auth_token_headers_json }, + auth_token_payloads_json: { name: :appointment_book_auth_token_payloads_json }, + auth_tokens: { name: :appointment_book_auth_tokens }, + auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json }, + client_access_token: { name: :appointment_book_client_access_token }, + client_fhir_server: { name: :appointment_book_client_fhir_server }, + crd_jwks_json: { name: :appointment_book_crd_jwks_json }, + crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json } + }, + options: { + hook_name: 'appointment-book', + hook_path: APPOINTMENT_BOOK_PATH + } + ) + + group do + title 'Make Hook Requests' + test from: :crd_v201_appointment_book_request + end + + group do + title 'Verify Authorization' + test from: :crd_v201_decode_auth_token + test from: :crd_v201_retrieve_jwks + test from: :crd_v201_token_header + test from: :crd_v201_token_payload + end + + group do + title 'Verify Requests' + test from: :crd_v201_hook_request_required_fields + test from: :crd_v201_hook_request_optional_fields + test from: :crd_v201_hook_request_valid_context do + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', + 'hl7.fhir.us.davinci-crd_2.0.1@177', 'hl7.fhir.us.davinci-crd_2.0.1@178', + 'hl7.fhir.us.davinci-crd_2.0.1@179', 'hl7.fhir.us.davinci-crd_2.0.1@180', + 'hl7.fhir.us.davinci-crd_2.0.1@286', + 'cds-hooks-library_1.0.1@17', 'cds-hooks-library_1.0.1@18', + 'cds-hooks-library_1.0.1@19', 'cds-hooks-library_1.0.1@21', + 'cds-hooks-library_1.0.1@22', 'cds-hooks-library_1.0.1@23', + 'cds-hooks-library_1.0.1@25', 'cds-hooks-library_1.0.1@26', + 'cds-hooks-library_1.0.1@27', 'cds-hooks-library_1.0.1@29', + 'cds-hooks-library_1.0.1@30', 'cds-hooks-library_1.0.1@31' + end + test from: :crd_v201_hook_request_valid_prefetch + test from: :crd_v201_hook_request_fetched_data + test from: :crd_v201_hook_request_prefetch_equals_queried + end + + group do + title 'Verify Response Handling' + + test from: :crd_v201_inferno_response_validation + test from: :crd_v201_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_card_must_support_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_card_must_support_group.rb new file mode 100644 index 00000000..eab0409c --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_card_must_support_group.rb @@ -0,0 +1,31 @@ +require_relative 'must_support/client_card_must_support_coverage_information' +require_relative 'must_support/client_card_must_support_external_reference' +require_relative 'must_support/client_card_must_support_instructions' + +module DaVinciCRDTestKit + module V201 + class ClientCardMustSupportGroup < Inferno::TestGroup + title 'Card Must Support' + id :crd_v201_client_card_must_support + description <<~DESCRIPTION + CRD clients are required to support the following card types + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + + This group checks that instances of each of these card types were observed across all hook calls + made by the client as a part of this test session. In the case of the Coverage Information card type, + all must support elements defined in the [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) + must be demonstrated. + + These tests must be run after the tests in the "Hooks" group are run. + DESCRIPTION + + run_as_group + + test from: :crd_v201_client_card_must_support_coverage_information + test from: :crd_v201_client_card_must_support_external_reference + test from: :crd_v201_client_card_must_support_instructions + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb new file mode 100644 index 00000000..5d00aba2 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_discharge_group.rb @@ -0,0 +1,105 @@ +require_relative 'invocation/encounter_discharge_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_optional_fields_test' +require_relative 'verify_request/hook_request_required_fields_test' +require_relative 'verify_request/hook_request_valid_context_test' +require_relative 'verify_request/hook_request_valid_prefetch_test' +require_relative 'verify_request/hook_request_fetched_data_test' +require_relative 'verify_request/hook_request_prefetch_equals_queried_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V201 + class ClientEncounterDischargeGroup < Inferno::TestGroup + title 'encounter-discharge' + id :crd_v201_client_encounter_discharge + description <<~DESCRIPTION + The encounter-discharge hook is invoked when the user is performing the discharge process for an encounter where + the notion of 'discharge' is relevant - typically an inpatient encounter. These tests are based on the + following criteria: + * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge), + which includes the profiles that are expected to be used for the resources resolved to by `context` + FHIR ID fields + * Specific [encounter-discharge `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/) + defined in the CDS Hooks specification + + This version of the CRD implementation guide refers to version 1.0 of the hook. + DESCRIPTION + + run_as_group + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json }, + auth_tokens: { name: :encounter_discharge_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_discharge_client_access_token }, + override_access_token: { name: :encounter_discharge_override_access_token, + title: 'encounter-discharge Prefetch Validation Override Bearer Token' }, + client_fhir_server: { name: :encounter_discharge_client_fhir_server }, + crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json }, + custom_response_template: { name: :encounter_discharge_custom_response_template }, + selected_response_types: { name: :encounter_discharge_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json }, + auth_token_payloads_json: { name: :encounter_discharge_auth_token_payloads_json }, + auth_tokens: { name: :encounter_discharge_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_discharge_client_access_token }, + client_fhir_server: { name: :encounter_discharge_client_fhir_server }, + crd_jwks_json: { name: :encounter_discharge_crd_jwks_json }, + crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json } + }, + options: { + hook_name: 'encounter-discharge', + hook_path: ENCOUNTER_DISCHARGE_PATH + } + ) + + group do + title 'Make Hook Requests' + test from: :crd_v201_encounter_discharge_request + end + + group do + title 'Verify Authorization' + test from: :crd_v201_decode_auth_token + test from: :crd_v201_retrieve_jwks + test from: :crd_v201_token_header + test from: :crd_v201_token_payload + end + + group do + title 'Verify Requests' + test from: :crd_v201_hook_request_required_fields + test from: :crd_v201_hook_request_optional_fields + test from: :crd_v201_hook_request_valid_context do + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@201', 'hl7.fhir.us.davinci-crd_2.0.1@202', + 'hl7.fhir.us.davinci-crd_2.0.1@203', + 'cds-hooks-library_1.0.1@45', 'cds-hooks-library_1.0.1@46', + 'cds-hooks-library_1.0.1@47', 'cds-hooks-library_1.0.1@49', + 'cds-hooks-library_1.0.1@50', 'cds-hooks-library_1.0.1@51', + 'cds-hooks-library_1.0.1@53', 'cds-hooks-library_1.0.1@54', + 'cds-hooks-library_1.0.1@55' + end + test from: :crd_v201_hook_request_valid_prefetch + test from: :crd_v201_hook_request_fetched_data + test from: :crd_v201_hook_request_prefetch_equals_queried + end + + group do + title 'Verify Response Handling' + + test from: :crd_v201_inferno_response_validation + test from: :crd_v201_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb new file mode 100644 index 00000000..9d1d064d --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_encounter_start_group.rb @@ -0,0 +1,105 @@ +require_relative 'invocation/encounter_start_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_optional_fields_test' +require_relative 'verify_request/hook_request_required_fields_test' +require_relative 'verify_request/hook_request_valid_context_test' +require_relative 'verify_request/hook_request_valid_prefetch_test' +require_relative 'verify_request/hook_request_fetched_data_test' +require_relative 'verify_request/hook_request_prefetch_equals_queried_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V201 + class ClientEncounterStartGroup < Inferno::TestGroup + title 'encounter-start' + id :crd_v201_client_encounter_start + description <<~DESCRIPTION + The encounter-start hook is invoked when the user is initiating a new encounter. These tests are based on the + following criteria: + * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start), + which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID + fields + * Specific [encounter-start `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/) + defined in the CDS Hooks specification + + This version of the CRD implementation guide refers to version 1.0 of the hook. + DESCRIPTION + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@187' + + run_as_group + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :encounter_start_auth_token_headers_json }, + auth_tokens: { name: :encounter_start_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_start_client_access_token }, + override_access_token: { name: :encounter_start_override_access_token, + title: 'encounter-start Prefetch Validation Override Bearer Token' }, + client_fhir_server: { name: :encounter_start_client_fhir_server }, + crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json }, + custom_response_template: { name: :encounter_start_custom_response_template }, + selected_response_types: { name: :encounter_start_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :encounter_start_auth_token_headers_json }, + auth_token_payloads_json: { name: :encounter_start_auth_token_payloads_json }, + auth_tokens: { name: :encounter_start_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_start_client_access_token }, + client_fhir_server: { name: :encounter_start_client_fhir_server }, + crd_jwks_json: { name: :encounter_start_crd_jwks_json }, + crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json } + }, + options: { + hook_name: 'encounter-start', + hook_path: ENCOUNTER_START_PATH + } + ) + + group do + title 'Make Hook Requests' + test from: :crd_v201_encounter_start_request + end + + group do + title 'Verify Authorization' + test from: :crd_v201_decode_auth_token + test from: :crd_v201_retrieve_jwks + test from: :crd_v201_token_header + test from: :crd_v201_token_payload + end + + group do + title 'Verify Requests' + test from: :crd_v201_hook_request_required_fields + test from: :crd_v201_hook_request_optional_fields + test from: :crd_v201_hook_request_valid_context do + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@192', 'hl7.fhir.us.davinci-crd_2.0.1@193', + 'hl7.fhir.us.davinci-crd_2.0.1@194', + 'cds-hooks-library_1.0.1@33', 'cds-hooks-library_1.0.1@34', + 'cds-hooks-library_1.0.1@35', 'cds-hooks-library_1.0.1@37', + 'cds-hooks-library_1.0.1@38', 'cds-hooks-library_1.0.1@39', + 'cds-hooks-library_1.0.1@41', 'cds-hooks-library_1.0.1@42', + 'cds-hooks-library_1.0.1@43' + end + test from: :crd_v201_hook_request_valid_prefetch + test from: :crd_v201_hook_request_fetched_data + test from: :crd_v201_hook_request_prefetch_equals_queried + end + + group do + title 'Verify Response Handling' + + test from: :crd_v201_inferno_response_validation + test from: :crd_v201_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_fhir_api_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_fhir_api_group.rb new file mode 100644 index 00000000..099ea4a4 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_fhir_api_group.rb @@ -0,0 +1,790 @@ +require 'tls_test_kit' +require_relative '../crd_client_options' +require_relative 'api/client_fhir_api_read_test' +require_relative 'api/client_fhir_api_search_test' +require_relative 'api/client_fhir_api_create_test' +require_relative 'api/client_fhir_api_update_test' +require_relative 'api/client_fhir_api_validation_test' +require 'smart_app_launch/smart_stu1_suite' +require 'smart_app_launch/smart_stu2_suite' + +module DaVinciCRDTestKit + module V201 + class ClientFHIRAPIGroup < Inferno::TestGroup + title 'FHIR API' + description <<~DESCRIPTION + Systems wishing to conform to the [CRD client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html) + role are responsible for returning data requested by the CRD server needed to provide decision support. The Da + Vinci CRD client FHIR API Test Group contains tests that test the ['server' capabilities](https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1) + of the CRD client and ensures that the CRD client can respond to CRD server queriers. These 'server' capabilities + are based on [US Core](https://hl7.org/fhir/us/core/STU3.1.1/). This test kit does not test the base US Core + capabilities. In addition to the U.S. Core expectations, the CRD client SHALL support all 'SHOULD' `read` and + `search` capabilities listed for resources referenced in supported hooks and order types if it does not support + returning the associated resources as part of CDS Hooks pre-fetch. The CRD client SHALL also support `update` + functionality for all resources listed where the client allows invoking hooks based on the resource. + + This test group contains two main groups of tests: + * SMART App Launch Authorization: A group of tests that perform FHIR API authorization using [SMART on FHIR](https://hl7.org/fhir/smart-app-launch/index.html) + EHR Launch Sequence + * CRD FHIR RESTful Capabilities: A group of tests that test each CRD resource profile and ensure the CRD client + supports the appropriate FHIR operations required on each resource + DESCRIPTION + id :crd_v201_client_fhir_api + + input :url, + title: 'FHIR Endpoint', + description: 'URL of the CRD FHIR server' + + group do + title 'Authorization' + description %( + Perform an EHR [SMART App Launch](https://www.hl7.org/fhir/smart-app-launch/) to Authorize the client FHIR + server with Inferno so that Inferno may access resources on the FHIR server in order to perform the + FHIR RESTful Capabilities tests. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@64', 'hl7.fhir.us.davinci-crd_2.0.1@65', + 'hl7.fhir.us.davinci-crd_2.0.1@66', 'hl7.fhir.us.davinci-crd_2.0.1@89', + 'hl7.fhir.us.davinci-crd_2.0.1@92', 'cds-hooks_2.0@174' + + config( + inputs: { + smart_auth_info: { + name: :smart_auth_info, + title: 'EHR Launch Credentials', + options: { + mode: 'auth', + components: [ + Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services + ] + } + } + }, + outputs: { + smart_auth_info: { name: :smart_auth_info } + } + ) + + group from: :smart_discovery do + required_suite_options CRDClientOptions::SMART_1_REQUIREMENT + run_as_group + + test from: :tls_version_test do + title 'CRD FHIR Server is secured by transport layer security' + description <<~DESCRIPTION + Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html), + the CRD Implementation Guide imposes the following rule about TLS: + + As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety), + communications between CRD clients and CRD servers SHALL + use TLS. Mutual TLS is not required by this specification but is permitted. CRD servers and + CRD clients SHOULD enforce a minimum version and other TLS configuration requirements based + on HRex rules for PHI exchange. + + This test verifies that the FHIR server is using TLS 1.2 or higher. + DESCRIPTION + id :crd_v201_server_tls_version_stu1 + + config( + options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION } + ) + end + end + + group from: :smart_ehr_launch, + required_suite_options: CRDClientOptions::SMART_1_REQUIREMENT, + run_as_group: true + + group from: :smart_discovery_stu2 do + required_suite_options CRDClientOptions::SMART_2_REQUIREMENT + run_as_group + + test from: :tls_version_test do + title 'CRD FHIR Server is secured by transport layer security' + description <<~DESCRIPTION + Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html), + the CRD Implementation Guide imposes the following rule about TLS: + + As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety), + communications between CRD clients and CRD servers SHALL + use TLS. Mutual TLS is not required by this specification but is permitted. CRD servers and + CRD clients SHOULD enforce a minimum version and other TLS configuration requirements based + on HRex rules for PHI exchange. + + This test verifies that the FHIR server is using TLS 1.2 or higher. + DESCRIPTION + id :crd_v201_server_tls_version_stu2 + + config( + options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION } + ) + end + end + + group from: :smart_ehr_launch_stu2, + required_suite_options: CRDClientOptions::SMART_2_REQUIREMENT, + run_as_group: true + + group from: :smart_openid_connect do + run_as_group + optional + config( + inputs: { + id_token: { name: :ehr_id_token } + } + ) + end + + group from: :smart_token_refresh do + run_as_group + optional + config( + inputs: { + received_scopes: { name: :ehr_received_scopes } + } + ) + end + end + + group do + title 'FHIR RESTful Capabilities' + description %( + This test group contains groups of tests for each CRD resource profile and ensures the + [CRD client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html) + supports the appropriate FHIR operations required on each resource. For each resource, Inferno will + perform the required FHIR operations, and then it will validate any resources that are returned as a result of + these FHIR operations. + + The resources that are a part of the CRD IG configuration include: + * [Appointment](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Appointment1-1) + * [CommunicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#CommunicationRequest1-2) + * [Coverage](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Coverage1-3) + * [Device](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Device1-4) + * [DeviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#DeviceRequest1-5) + * [Encounter](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Encounter1-6) + * [Patient](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Patient1-7) + * [Practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Practitioner1-8) + * [PractitionerRole](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#PractitionerRole1-9) + * [Location](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Location1-10) + * [MedicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#MedicationRequest1-11) + * [NutritionOrder](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#NutritionOrder1-12) + * [Organization](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Organization1-13) + * [ServiceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#ServiceRequest1-14) + * [ClaimResponse](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#ClaimResponse1-15) + * [Task](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Task1-16) + * [VisionPrescription](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#VisionPrescription1-17) + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@43' + + input :url + input :smart_auth_info, + type: :auth_info, + title: 'OAuth Credentials', + options: { mode: 'access' }, + optional: true + + fhir_client do + url :url + auth_info :smart_auth_info + end + + group do + title 'Appointment' + description %( + Verify the CRD client can perform the required FHIR interactions on the Appointment resource, and + validate any returned resources against the [CRD Appointment profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-appointment.html) + + Required Appointment resource FHIR interactions: + * SHOULD support `update` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'Appointment' }, + inputs: { + update_resources: { + name: :appointment_update_resources, + title: 'Appointment Resources' + } + } + } + end + + group do + title 'CommunicationRequest' + description %( + Verify the CRD client can perform the required FHIR interactions on the CommunicationRequest resource, and + validate any returned resources against the [CRD CommunicationRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html) + + Required CommunicationRequest resource FHIR interactions: + * SHOULD support `update` + + Resource Conformance: SHOULD + ) + optional + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'CommunicationRequest' }, + inputs: { + update_resources: { + name: :communication_request_update_resources, + title: 'CommunicationRequest Resources' + } + } + } + end + + group do + title 'Coverage' + description %( + Verify the CRD client can perform the required FHIR interactions on the Coverage resource, and + validate any returned resources against the [CRD Coverage profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-coverage.html) + + Required Coverage resource FHIR interactions: + * SHALL support search by [`patient`](http://hl7.org/fhir/R4/coverage.html#search) + * SHALL support search by [`status`](http://hl7.org/fhir/R4/coverage.html#search) + + Resource Conformance: SHALL + ) + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_coverage_patient_search_test, + title: 'Search by patient', + config: { + options: { resource_type: 'Coverage', search_type: 'patient' }, + inputs: { search_param_values: { + name: :patient_ids, + title: 'Patient IDs', + description: 'Comma separated list of Patient IDs that in sum contain all MUST SUPPORT elements' + } } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_coverage_status_search_test, + title: 'Search by status', + config: { + options: { resource_type: 'Coverage', search_type: 'status' }, + inputs: { search_param_values: { + name: :patient_ids + } } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'Coverage' } + } + end + + group do + title 'Device' + description %( + Verify the CRD client can perform the required FHIR interactions on the Device resource, and + validate any returned resources against the [CRD Device profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) + + Required Device resource FHIR interactions: + * SHOULD support `read` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_read_test, + optional: true, + config: { + options: { resource_type: 'Device' }, + inputs: { + resource_ids: { + name: :device_ids, + title: 'Device IDs', + description: 'Comma separated list of Device IDs that in sum contain all MUST SUPPORT elements' + } + } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'Device' } + } + end + + group do + title 'DeviceRequest' + description %( + Verify the CRD client can perform the required FHIR interactions on the DeviceRequest resource, and + validate any returned resources against the [CRD DeviceRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) + + Required DeviceRequest resource FHIR interactions: + * SHOULD support `update` + + Resource Conformance: SHOULD + ) + optional + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'DeviceRequest' }, + inputs: { + update_resources: { + name: :device_request_update_resources, + title: 'DeviceRequest Resources' + } + } + } + end + + group do + title 'Encounter' + description %( + Verify the CRD client can perform the required FHIR interactions on the Encounter resource, and + validate any returned resources against the [CRD Encounter profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html) + + Required Encounter resource FHIR interactions: + * SHOULD support `update` + * SHALL support search by [`_id`](http://hl7.org/fhir/R4/encounter.html#search) + * SHALL support search by [`organization`](http://hl7.org/fhir/R4/encounter.html#search) and + performing an `_include` on Location + + Resource Conformance: SHALL + ) + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'Encounter' }, + inputs: { + update_resources: { + name: :encounter_update_resources, + title: 'Encounter Resources' + } + } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_encounter_id_search_test, + title: 'Search by _id', + config: { + options: { resource_type: 'Encounter', search_type: '_id' }, + inputs: { search_param_values: { + name: :encounter_ids, + title: 'Encounter IDs', + description: 'Comma separated list of Encounter IDs that in sum contain all MUST SUPPORT elements' + } } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_encounter_organization_search_test, + title: 'Search by organization', + config: { + options: { resource_type: 'Encounter', search_type: 'organization' }, + inputs: { search_param_values: { + name: :organization_ids, + title: 'Organization IDs', + description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements' + } } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_encounter_location_include_test, + title: 'Search by _id and _include location', + config: { + options: { resource_type: 'Encounter', search_type: 'location_include' }, + inputs: { search_param_values: { + name: :encounter_ids, + title: 'Encounter IDs', + description: 'Comma separated list of Encounter IDs that in sum contain all MUST SUPPORT elements' + } } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'Encounter' } + } + end + + group do + title 'Patient' + description %( + Verify the CRD client can perform the required FHIR interactions on the Patient resource, and + validate any returned resources against the [CRD Patient profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html) + + Required Patient resource FHIR interactions: + * SHOULD support `read` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_read_test, + optional: true, + config: { + options: { resource_type: 'Patient' }, + inputs: { + resource_ids: { + name: :patient_ids, + title: 'Patient IDs', + description: 'Comma separated list of Patient IDs that in sum contain all MUST SUPPORT elements' + } + } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'Patient' } + } + end + + group do + title 'Practitioner' + description %( + Verify the CRD client can perform the required FHIR interactions on the Practitioner resource, and + validate any returned resources against the [CRD Practitioner profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) + + Required Practitioner resource FHIR interactions: + * SHOULD support `read` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_read_test, + optional: true, + config: { + options: { resource_type: 'Practitioner' }, + inputs: { + resource_ids: { + name: :practitioner_ids, + title: 'Practitioner IDs', + description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT ' \ + 'elements' + } + } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'Practitioner' } + } + end + + group do + title 'PractitionerRole' + description %( + Verify the CRD client can perform the required FHIR interactions on the PractitionerRole resource, and + validate any returned resources against the [US Core PractitionerRole profile](https://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html) + + Required PractitionerRole resource FHIR interactions: + * SHALL support search by [`_id`](http://hl7.org/fhir/R4/practitionerrole.html#search) + * SHALL support search by [`organization`](http://hl7.org/fhir/R4/practitionerrole.html#search) and + performing an `_include` on Organization + * SHALL support search by [`practitioner`](http://hl7.org/fhir/R4/practitionerrole.html#search) and + performing an `_include` on Practitioner + + Resource Conformance: SHALL + ) + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_practitioner_role_id_search_test, + title: 'Search by _id', + config: { + options: { resource_type: 'PractitionerRole', search_type: '_id' }, + inputs: { search_param_values: { + name: :practitioner_role_ids, + title: 'PractitionerRole IDs', + description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements' + } } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_practitioner_role_organization_search_test, + title: 'Search by organization', + config: { + options: { resource_type: 'PractitionerRole', search_type: 'organization' }, + inputs: { search_param_values: { + name: :organization_ids, + title: 'Organization IDs', + description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements' + } } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_practitioner_role_practitioner_search_test, + title: 'Search by practitioner', + config: { + options: { resource_type: 'PractitionerRole', search_type: 'practitioner' }, + inputs: { search_param_values: { + name: :practitioner_ids, + title: 'Practitioner IDs', + description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements' + } } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_practitioner_role_organization_include_test, + title: 'Search by _id and _include organization', + config: { + options: { resource_type: 'PractitionerRole', search_type: 'organization_include' }, + inputs: { search_param_values: { + name: :practitioner_role_ids, + title: 'PractitionerRole IDs', + description: %( + Comma separated list of PractitionerRole IDs that in sum contain all MUST SUPPORT elements + ) + } } + } + + test from: :crd_v201_client_fhir_api_search_test, + id: :crd_v201_client_practitioner_role_practitioner_include_test, + title: 'Search by _id and _include practitioner', + config: { + options: { resource_type: 'PractitionerRole', search_type: 'practitioner_include' }, + inputs: { search_param_values: { + name: :practitioner_role_ids, + title: 'PractitionerRole IDs', + description: %( + Comma separated list of PractitionerRole IDs that in sum contain all MUST SUPPORT elements + ) + } } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'PractitionerRole' } + } + end + + group do + title 'Location' + description %( + Verify the CRD client can perform the required FHIR interactions on the Location resource, and + validate any returned resources against the [CRD Location profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-location.html) + + Required Location resource FHIR interactions: + * SHOULD support `read` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_read_test, + optional: true, + config: { + options: { resource_type: 'Location' }, + inputs: { + resource_ids: { + name: :location_ids, + title: 'Location IDs', + description: 'Comma separated list of Location IDs that in sum contain all MUST SUPPORT elements' + } + } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'Location' } + } + end + + group do + title 'MedicationRequest' + description %( + Verify the CRD client can perform the required FHIR interactions on the MedicationRequest resource, and + validate any returned resources against the [CRD MedicationRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) + + Required MedicationRequest resource FHIR interactions: + * SHOULD support `update` + + Resource Conformance: SHOULD + ) + optional + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'MedicationRequest' }, + inputs: { + update_resources: { + name: :medication_request_update_resources, + title: 'MedicationRequest Resources' + } + } + } + end + + group do + title 'NutritionOrder' + description %( + Verify the CRD client can perform the required FHIR interactions on the NutritionOrder resource, and + validate any returned resources against the [CRD NutritionOrder profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) + + Required NutritionOrder resource FHIR interactions: + * SHOULD support `update` + + Resource Conformance: SHOULD + ) + optional + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'NutritionOrder' }, + inputs: { + update_resources: { + name: :nutrition_order_update_resources, + title: 'NutritionOrder Resources' + } + } + } + end + + group do + title 'Organization' + description %( + Verify the CRD client can perform the required FHIR interactions on the Organization resource, and + validate any returned resources against the [CRD Organization profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-organization.html) + + Required Organization resource FHIR interactions: + * SHOULD support `read` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_read_test, + optional: true, + config: { + options: { resource_type: 'Organization' }, + inputs: { + resource_ids: { + name: :organization_ids, + title: 'Organization IDs', + description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT ' \ + 'elements' + } + } + } + + test from: :crd_v201_client_fhir_api_validation_test, + config: { + options: { resource_type: 'Organization' } + } + end + + group do + title 'ServiceRequest' + description %( + Verify the CRD client can perform the required FHIR interactions on the ServiceRequest resource, and + validate any returned resources against the [CRD ServiceRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) + + Required ServiceRequest resource FHIR interactions: + * SHOULD support `update` + + Resource Conformance: SHOULD + ) + optional + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'ServiceRequest' }, + inputs: { + update_resources: { + name: :service_request_update_resources, + title: 'ServiceRequest Resources' + } + } + } + end + + group do + title 'ClaimResponse' + description %( + Verify the CRD client can perform the required FHIR interactions on the ClaimResponse resource, and + validate any returned resources against the [CRD ClaimResponse profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-claimresponse.html) + + Required ClaimResponse resource FHIR interactions: + * SHOULD support `create` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_create_test, + optional: true, + config: { + options: { resource_type: 'ClaimResponse' }, + inputs: { + create_resources: { + name: :claim_response_create_resources, + title: 'ClaimResponse Resources' + } + } + } + end + + group do + title 'Task' + description %( + Verify the CRD client can perform the required FHIR interactions on the Task resource, and + validate any returned resources against the [CRD Task profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-taskquestionnaire.html) + + Required Task resource FHIR interactions: + * SHOULD support `create` + + Resource Conformance: SHOULD + ) + optional + + test from: :crd_v201_client_fhir_api_create_test, + optional: true, + config: { + options: { resource_type: 'Task' }, + inputs: { + create_resources: { + name: :task_create_resources, + title: 'Task Resources' + } + } + } + end + + group do + title 'VisionPrescription' + description %( + Verify the CRD client can perform the required FHIR interactions on the VisionPrescription resource, and + validate any returned resources against the [CRD VisionPrescription profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) + + Required VisionPrescription resource FHIR interactions: + * SHOULD support `update` + + Resource Conformance: SHOULD + ) + optional + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' + + test from: :crd_v201_client_fhir_api_update_test, + optional: true, + config: { + options: { resource_type: 'VisionPrescription' }, + inputs: { + update_resources: { + name: :vision_prescription_update_resources, + title: 'VisionPrescription Resources' + } + } + } + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb new file mode 100644 index 00000000..bf0ab5b6 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_hooks_group.rb @@ -0,0 +1,74 @@ +require_relative 'client_appointment_book_group' +require_relative 'client_encounter_discharge_group' +require_relative 'client_encounter_start_group' +require_relative 'client_order_dispatch_group' +require_relative 'client_order_select_group' +require_relative 'client_order_sign_group' + +module DaVinciCRDTestKit + module V201 + class ClientHooksGroup < Inferno::TestGroup + title 'Hooks' + description <<~DESCRIPTION + This Group contains tests which verify that valid hook requests can be made for each of the following + [six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html): + * [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + * [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + * [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + * [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + * [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + * [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + + Each hook group contains a test which waits for incoming hook requests from the CRD client, and tests which + verify the incoming hook requests conform to the specific hook requirements specified the + CRD IG and the [CDS hooks spec](https://cds-hooks.hl7.org/2.0/). + + Each hook group tests the following: + * If the CRD client can invoke the specific hook service request + * If the incoming hook request is properly authorized with a JWT Bearer token according to the [CDS Hooks authorization requirements](https://cds-hooks.hl7.org/2.0/#trusting-cds-clients) + * If the incoming hook request contains valid required fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1) + * If the incoming hook request contains valid optional fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1) + * If the hook request's `context` field is valid according to the specific `context` requirements defined for + each hook type + * If the incoming hook request contains the optional `prefetch` field with valid resources + * If the hook response generated by Inferno is conformant. + * If the client can properly display the cards returned as a result of the hook request + + Note: In order to successfully return a conformant `Coverage Information` system action, a Coverage resource must either be + provided in the service request's `prefetch` field, or must be fetchable from the client's FHIR server for + the patient provided in the service request. + DESCRIPTION + id :crd_v201_client_hooks + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@149' + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` + header of all requests. Run or re-run the **Client Registration** group to set or + change this value. + ), + locked: true + + input_order :cds_jwt_iss, :cds_jwk_set + + group from: :crd_v201_client_appointment_book, + optional: true + + group from: :crd_v201_client_encounter_start, + optional: true + + group from: :crd_v201_client_encounter_discharge, + optional: true + + group from: :crd_v201_client_order_select, + optional: true + + group from: :crd_v201_client_order_dispatch, + optional: true + + group from: :crd_v201_client_order_sign, + optional: true + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb new file mode 100644 index 00000000..e39a8c81 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_order_dispatch_group.rb @@ -0,0 +1,111 @@ +require_relative 'invocation/order_dispatch_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_optional_fields_test' +require_relative 'verify_request/hook_request_required_fields_test' +require_relative 'verify_request/hook_request_valid_context_test' +require_relative 'verify_request/hook_request_valid_prefetch_test' +require_relative 'verify_request/hook_request_fetched_data_test' +require_relative 'verify_request/hook_request_prefetch_equals_queried_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V201 + class ClientOrderDispatchGroup < Inferno::TestGroup + title 'order-dispatch' + id :crd_v201_client_order_dispatch + description <<~DESCRIPTION + The order-dispatch hook fires when a practitioner is selecting a candidate performer for a pre-existing order + that was not tied to a specific performer. These tests are based on the following criteria: + * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch), + which includes the profiles that are expected to be used for the resources resolved to by `context` + FHIR ID fields + * Specific [order-dispatch `context` requirements](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/) + defined in the CDS Hooks specification + + This version of the CRD implementation guide refers to version 1.0 of the hook. + DESCRIPTION + + run_as_group + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json }, + auth_tokens: { name: :order_dispatch_auth_tokens }, + auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json }, + client_access_token: { name: :order_dispatch_client_access_token }, + override_access_token: { name: :order_dispatch_override_access_token, + title: 'order-dispatch Prefetch Validation Override Bearer Token' }, + client_fhir_server: { name: :order_dispatch_client_fhir_server }, + crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json }, + custom_response_template: { name: :order_dispatch_custom_response_template }, + selected_response_types: { name: :order_dispatch_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json }, + auth_token_payloads_json: { name: :order_dispatch_auth_token_payloads_json }, + auth_tokens: { name: :order_dispatch_auth_tokens }, + auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json }, + client_access_token: { name: :order_dispatch_client_access_token }, + client_fhir_server: { name: :order_dispatch_client_fhir_server }, + crd_jwks_json: { name: :order_dispatch_crd_jwks_json }, + crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json } + }, + options: { + hook_name: 'order-dispatch', + hook_path: ORDER_DISPATCH_PATH + } + ) + + group do + title 'Make Hook Requests' + test from: :crd_v201_order_dispatch_request + end + + group do + title 'Verify Authorization' + test from: :crd_v201_decode_auth_token + test from: :crd_v201_retrieve_jwks + test from: :crd_v201_token_header + test from: :crd_v201_token_payload + end + + group do + title 'Verify Requests' + test from: :crd_v201_hook_request_required_fields + test from: :crd_v201_hook_request_optional_fields + test from: :crd_v201_hook_request_valid_context do + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150', + 'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285', + 'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287', + 'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289', + 'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291', + 'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293', + 'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295', + 'cds-hooks-library_1.0.1@57', 'cds-hooks-library_1.0.1@58', + 'cds-hooks-library_1.0.1@59', 'cds-hooks-library_1.0.1@61', + 'cds-hooks-library_1.0.1@62', 'cds-hooks-library_1.0.1@63', + 'cds-hooks-library_1.0.1@65', 'cds-hooks-library_1.0.1@66', + 'cds-hooks-library_1.0.1@67', 'cds-hooks-library_1.0.1@69', + 'cds-hooks-library_1.0.1@70', 'cds-hooks-library_1.0.1@71', + 'cds-hooks-library_1.0.1@72' + end + test from: :crd_v201_hook_request_valid_prefetch + test from: :crd_v201_hook_request_fetched_data + test from: :crd_v201_hook_request_prefetch_equals_queried + end + + group do + title 'Verify Response Handling' + + test from: :crd_v201_inferno_response_validation + test from: :crd_v201_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb new file mode 100644 index 00000000..5a29697c --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_order_select_group.rb @@ -0,0 +1,116 @@ +require_relative 'invocation/order_select_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_optional_fields_test' +require_relative 'verify_request/hook_request_required_fields_test' +require_relative 'verify_request/hook_request_valid_context_test' +require_relative 'verify_request/hook_request_valid_prefetch_test' +require_relative 'verify_request/hook_request_fetched_data_test' +require_relative 'verify_request/hook_request_prefetch_equals_queried_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V201 + class ClientOrderSelectGroup < Inferno::TestGroup + title 'order-select' + id :crd_v201_client_order_select + description <<~DESCRIPTION + The order-select hook fires when a clinician selects one or more orders to place for a patient, + (including orders for medications, procedures, labs and other orders). If supported by the CDS client, this + hook may also be invoked each time the clinician selects a detail regarding the order. These tests are based on + the following criteria: + * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-selecte), + which includes the profiles that are expected to be used for the resources resolved to by `context` + FHIR ID fields + * Specific [order-select `context` requirements](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/) + defined in the CDS Hooks specification + + This version of the CRD implementation guide refers to version 1.0 of the hook. + DESCRIPTION + + run_as_group + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :order_select_auth_token_headers_json }, + auth_tokens: { name: :order_select_auth_tokens }, + auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json }, + client_access_token: { name: :order_select_client_access_token }, + override_access_token: { name: :order_select_override_access_token, + title: 'order-select Prefetch Validation Override Bearer Token' }, + client_fhir_server: { name: :order_select_client_fhir_server }, + crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json }, + custom_response_template: { name: :order_select_custom_response_template }, + selected_response_types: { name: :order_select_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :order_select_auth_token_headers_json }, + auth_token_payloads_json: { name: :order_select_auth_token_payloads_json }, + auth_tokens: { name: :order_select_auth_tokens }, + auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json }, + client_access_token: { name: :order_select_client_access_token }, + client_fhir_server: { name: :order_select_client_fhir_server }, + crd_jwks_json: { name: :order_select_crd_jwks_json }, + crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json } + }, + options: { + hook_name: 'order-select', + hook_path: ORDER_SELECT_PATH + } + ) + + group do + title 'Make Hook Requests' + test from: :crd_v201_order_select_request + end + + group do + title 'Verify Authorization' + test from: :crd_v201_decode_auth_token + test from: :crd_v201_retrieve_jwks + test from: :crd_v201_token_header + test from: :crd_v201_token_payload + end + + group do + title 'Verify Requests' + test from: :crd_v201_hook_request_required_fields + test from: :crd_v201_hook_request_optional_fields + test from: :crd_v201_hook_request_valid_context do + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@150', + 'hl7.fhir.us.davinci-crd_2.0.1@212', 'hl7.fhir.us.davinci-crd_2.0.1@213', + 'hl7.fhir.us.davinci-crd_2.0.1@214', 'hl7.fhir.us.davinci-crd_2.0.1@215', + 'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285', + 'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287', + 'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289', + 'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291', + 'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293', + 'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295', + 'cds-hooks-library_1.0.1@74', 'cds-hooks-library_1.0.1@75', + 'cds-hooks-library_1.0.1@76', 'cds-hooks-library_1.0.1@78', + 'cds-hooks-library_1.0.1@79', 'cds-hooks-library_1.0.1@80', + 'cds-hooks-library_1.0.1@82', 'cds-hooks-library_1.0.1@83', + 'cds-hooks-library_1.0.1@84', 'cds-hooks-library_1.0.1@86', + 'cds-hooks-library_1.0.1@87', 'cds-hooks-library_1.0.1@88', + 'cds-hooks-library_1.0.1@90', 'cds-hooks-library_1.0.1@91', + 'cds-hooks-library_1.0.1@92' + end + test from: :crd_v201_hook_request_valid_prefetch + test from: :crd_v201_hook_request_fetched_data + test from: :crd_v201_hook_request_prefetch_equals_queried + end + + group do + title 'Verify Response Handling' + + test from: :crd_v201_inferno_response_validation + test from: :crd_v201_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb new file mode 100644 index 00000000..8e73fe88 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_order_sign_group.rb @@ -0,0 +1,113 @@ +require_relative 'invocation/order_sign_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_optional_fields_test' +require_relative 'verify_request/hook_request_required_fields_test' +require_relative 'verify_request/hook_request_valid_context_test' +require_relative 'verify_request/hook_request_valid_prefetch_test' +require_relative 'verify_request/hook_request_fetched_data_test' +require_relative 'verify_request/hook_request_prefetch_equals_queried_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V201 + class ClientOrderSignGroup < Inferno::TestGroup + title 'order-sign' + id :crd_v201_client_order_sign + description <<~DESCRIPTION + The order-sign hook fires when a clinician is ready to sign one or more orders for a patient, (including orders + for medications, procedures, labs and other orders). These tests are based on the following criteria: + * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign), + which includes the profiles that are expected to be used for the resources resolved to by `context` + FHIR ID fields + * Specific [order-sign `context` requirements](https://cds-hooks.org/hooks/order-sign/) + defined in the CDS Hooks specification + + This version of the CRD implementation guide refers to version 1.1 of the hook which, at the time of publication, + was not available as a snapshot. Therefore the preceding link refers to the CDS hooks current build. + DESCRIPTION + + run_as_group + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :order_sign_auth_token_headers_json }, + auth_tokens: { name: :order_sign_auth_tokens }, + auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json }, + client_access_token: { name: :order_sign_client_access_token }, + override_access_token: { name: :order_sign_override_access_token, + title: 'order-sign Prefetch Validation Override Bearer Token' }, + client_fhir_server: { name: :order_sign_client_fhir_server }, + crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json }, + custom_response_template: { name: :order_sign_custom_response_template }, + selected_response_types: { name: :order_sign_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :order_sign_auth_token_headers_json }, + auth_token_payloads_json: { name: :order_sign_auth_token_payloads_json }, + auth_tokens: { name: :order_sign_auth_tokens }, + auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json }, + client_access_token: { name: :order_sign_client_access_token }, + client_fhir_server: { name: :order_sign_client_fhir_server }, + crd_jwks_json: { name: :order_sign_crd_jwks_json }, + crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json } + }, + options: { + hook_name: 'order-sign', + hook_path: ORDER_SIGN_PATH + } + ) + + group do + title 'Make Hook Requests' + test from: :crd_v201_order_sign_request + end + + group do + title 'Verify Authorization' + test from: :crd_v201_decode_auth_token + test from: :crd_v201_retrieve_jwks + test from: :crd_v201_token_header + test from: :crd_v201_token_payload + end + + group do + title 'Verify Requests' + test from: :crd_v201_hook_request_required_fields + test from: :crd_v201_hook_request_optional_fields + test from: :crd_v201_hook_request_valid_context do + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@150', + 'hl7.fhir.us.davinci-crd_2.0.1@220', 'hl7.fhir.us.davinci-crd_2.0.1@221', + 'hl7.fhir.us.davinci-crd_2.0.1@222', 'hl7.fhir.us.davinci-crd_2.0.1@223', + 'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285', + 'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287', + 'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289', + 'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291', + 'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293', + 'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295', + 'cds-hooks-library_1.0.1@1', 'cds-hooks-library_1.0.1@2', + 'cds-hooks-library_1.0.1@3', 'cds-hooks-library_1.0.1@5', + 'cds-hooks-library_1.0.1@6', 'cds-hooks-library_1.0.1@7', + 'cds-hooks-library_1.0.1@9', 'cds-hooks-library_1.0.1@10', + 'cds-hooks-library_1.0.1@11', 'cds-hooks-library_1.0.1@13', + 'cds-hooks-library_1.0.1@14', 'cds-hooks-library_1.0.1@15' + end + test from: :crd_v201_hook_request_valid_prefetch + test from: :crd_v201_hook_request_fetched_data + test from: :crd_v201_hook_request_prefetch_equals_queried + end + + group do + title 'Verify Response Handling' + + test from: :crd_v201_inferno_response_validation + test from: :crd_v201_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client_registration_group.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_registration_group.rb similarity index 65% rename from lib/davinci_crd_test_kit/client_registration_group.rb rename to lib/davinci_crd_test_kit/client/v2.0.1/client_registration_group.rb index 8e0e1e5b..90047376 100644 --- a/lib/davinci_crd_test_kit/client_registration_group.rb +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_registration_group.rb @@ -1,12 +1,13 @@ -require_relative 'client_tests/client_registration_verification_test' -require_relative 'client_tests/client_service_registration_attestation_test' +require_relative 'registration/client_registration_verification_test' +require_relative 'registration/client_service_registration_attestation_test' module DaVinciCRDTestKit - class PASClientRegistrationGroup < Inferno::TestGroup - id :crd_client_registration - title 'Client Registration' - description %( - Register the CRD client under test with Inferno's simulated CRD Server by + module V201 + class PASClientRegistrationGroup < Inferno::TestGroup + id :crd_v201_client_registration + title 'Client Registration' + description %( + Register the CRD client under test with Inferno's simulated CRD server by providing required information for Inferno to use in identifying and verify hook requests. @@ -20,9 +21,10 @@ class PASClientRegistrationGroup < Inferno::TestGroup of the client under test with the Inferno service. If the client needs to make a change to its registered values during execution, this test will need to be re-run. ) - run_as_group + run_as_group - test from: :crd_client_registration_verification - test from: :crd_client_service_registration_attestation + test from: :crd_v201_client_registration_verification + test from: :crd_v201_client_service_registration_attestation + end end end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/client_urls.rb b/lib/davinci_crd_test_kit/client/v2.0.1/client_urls.rb new file mode 100644 index 00000000..721b16eb --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/client_urls.rb @@ -0,0 +1,13 @@ +require_relative '../client_base_urls' + +module DaVinciCRDTestKit + module V201 + module ClientURLs + include ClientBaseURLs + + def suite_id + DaVinciCRDTestKit::V201::CRDClientSuite.id + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/crd_client_suite.rb b/lib/davinci_crd_test_kit/client/v2.0.1/crd_client_suite.rb new file mode 100644 index 00000000..3dbea9c9 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/crd_client_suite.rb @@ -0,0 +1,130 @@ +require_relative 'client_fhir_api_group' +require_relative 'client_hooks_group' +require_relative 'client_card_must_support_group' +require_relative 'client_registration_group' +require_relative '../endpoints/cds_services_discovery_handler' +require_relative '../../cross_suite/tags' +require_relative 'client_urls' +require_relative '../crd_client_options' +require_relative '../endpoints/hook_request_endpoint' +require_relative '../../ext/inferno_core/runnable' + +module DaVinciCRDTestKit + module V201 + class CRDClientSuite < Inferno::TestSuite + id :crd_client + title 'Da Vinci CRD Client v2.0.1 Test Suite' + description <<~DESCRIPTION + The Da Vinci CRD Client Test Suite tests the conformance of client systems + to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) + Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). + + For details on the design and use of these tests, see the wiki including + - [Suite Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details) + for a high-level description of the test + organization, including its components and limitations. + - [Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions) + for a step-by-step guide to execution of these + tests against a CRD client, including [instructions for a demonstration execution](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions#demonstration-execution) + against the [public reference implementation](https://crd-request-generator.davinci.hl7.org/). + DESCRIPTION + + suite_summary <<~SUMMARY + The Da Vinci CRD Client Test Suite tests the conformance of client systems + to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) + Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). + SUMMARY + + links [ + { + label: 'Report Issue', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/issues' + }, + { + label: 'Open Source', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit' + }, + { + label: 'Download', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/releases' + } + ] + + requirement_sets( + { + identifier: 'hl7.fhir.us.davinci-crd_2.0.1', + title: 'Da Vinci Coverage Requirements Discovery (CRD) v2.0.1', + actor: 'Client' + }, + { + identifier: 'cds-hooks_2.0', + title: 'CDS Hooks', + actor: 'Client' + }, + { + identifier: 'cds-hooks-library_1.0.1', + title: 'CDS Hooks Library', + actor: 'Client', + requirements: 'referenced' + } + ) + + fhir_resource_validator do + igs('hl7.fhir.us.davinci-crd#2.0.1') + + exclude_message do |message| + message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/) + end + end + + suite_option :smart_app_launch_version, + title: 'SMART App Launch Version', + list_options: [ + { + label: 'SMART App Launch 1.0.0', + value: CRDClientOptions::SMART_1 + }, + { + label: 'SMART App Launch 2.0.0', + value: CRDClientOptions::SMART_2 + } + ] + + def self.extract_token_from_query_params(request) + request.query_parameters['token'] + end + + route :get, '/cds-services', CDSServicesDiscoveryHandler + allow_cors APPOINTMENT_BOOK_PATH, ENCOUNTER_START_PATH, ENCOUNTER_DISCHARGE_PATH, ORDER_DISPATCH_PATH, + ORDER_SELECT_PATH, ORDER_SIGN_PATH, '/cds-services' + suite_endpoint :post, APPOINTMENT_BOOK_PATH, HookRequestEndpoint + suite_endpoint :post, ENCOUNTER_START_PATH, HookRequestEndpoint + suite_endpoint :post, ENCOUNTER_DISCHARGE_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_DISPATCH_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_SELECT_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_SIGN_PATH, HookRequestEndpoint + + resume_test_route :get, RESUME_PASS_PATH do |request| + CRDClientSuite.extract_token_from_query_params(request) + end + resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request| + CRDClientSuite.extract_token_from_query_params(request) + end + + group do + id :crd_v201_client_hook_invocation + title 'Hook Invocation' + description %( + This group checks that the system can register as a CDS client with + Inferno's simulated CRD server and make hook invocations. + ) + + group from: :crd_v201_client_registration + group from: :crd_v201_client_hooks + group from: :crd_v201_client_card_must_support + end + + group from: :crd_v201_client_fhir_api + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb new file mode 100644 index 00000000..2b6add40 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test.rb @@ -0,0 +1,105 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class AppointmentBookReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v201_appointment_book_request + title 'Request received for appointment-book hook' + description %( + This test waits for multiple incoming [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + hook requests and responds to the client with the response types selected as an input. This hook is a 'primary' + hook, meaning that CRD servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) + system action for these hooks, even if the response indicates that further information is needed or that the + level of detail provided is insufficient to determine coverage. + + For more details on how Inferno's simulated CDS Service behave during hook invocation see the + [simulated CRD server(https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + ) + config options: { accepts_multiple_requests: true } + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@171', + 'hl7.fhir.us.davinci-crd_2.0.1@183', 'hl7.fhir.us.davinci-crd_2.0.1@243', + 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', + 'cds-hooks_2.0@15' + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` + header of all requests. Run or re-run the **Client Registration** group to set or + change this value. + ), + locked: true + input :appointment_book_selected_response_types, + title: 'Response types to return from appointment-book hook requests', + description: %( + Select the cards/action response types that the Inferno hook request endpoints will return. The default + response type that will be returned for this hook is the `Coverage Information` card type. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + } + ] + } + input :appointment_book_custom_response_template, + title: 'Custom response template for appointment-book hook requests', + description: %( + A JSON string may be provided here to replace the normal response + from the hook request endpoint + ), + type: 'textarea', + optional: true + output :continuation_url + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Appointment Book CDS Service Test**: + + Invoke the appointment-book hook and send requests to: + + `#{appointment_book_url}` + + Inferno will process the requests and return CDS cards if successful. + + [Click here](#{continuation_url}) when you have finished + submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb new file mode 100644 index 00000000..9a8d57bb --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test.rb @@ -0,0 +1,102 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class EncounterDischargeReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v201_encounter_discharge_request + title 'Request received for encounter-discharge hook' + description %( + This test waits for multiple incoming [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + hook requests and responds to the client with the response types selected as an input. + + For more details on how Inferno's simulated CDS Service behave during hook invocation see the + [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@197', 'hl7.fhir.us.davinci-crd_2.0.1@243', + 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', + 'cds-hooks_2.0@15' + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` + header of all requests. Run or re-run the **Client Registration** group to set or + change this value. + ), + locked: true + input :encounter_discharge_selected_response_types, + title: 'Response types to return from encounter-discharge hook requests', + description: %( + Select the cards/action response types that the Inferno hook request endpoints will return. The default + response type that will be returned for this hook is the `Instructions` card type. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + } + ] + } + input :encounter_discharge_custom_response_template, + title: 'Custom response template for encounter-discharge hook requests', + description: %( + A JSON string may be provided here to replace the normal response + from the hook request endpoint + ), + type: 'textarea', + optional: true + output :continuation_url + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Encounter Discharge CDS Service Test**: + + Invoke the encounter-discharge hook and send requests to: + + `#{encounter_discharge_url}` + + Inferno will process the requests and return CDS cards if successful. + + [Click here](#{continuation_url}) when you have finished submitting + requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb new file mode 100644 index 00000000..9624fcd2 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test.rb @@ -0,0 +1,102 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class EncounterStartReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v201_encounter_start_request + title 'Request received for encounter-start hook' + description %( + This test waits for multiple incoming [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + hook requests and responds to the client with the response types selected as an input. + + For more details on how Inferno's simulated CDS Service behave during hook invocation see the + [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@186', 'hl7.fhir.us.davinci-crd_2.0.1@243', + 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', + 'cds-hooks_2.0@15' + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` + header of all requests. Run or re-run the **Client Registration** group to set or + change this value. + ), + locked: true + input :encounter_start_selected_response_types, + title: 'Response types to return from encounter-start hook requests', + description: %( + Select the cards/action response types that the Inferno hook request endpoints will return. The default + response type that will be returned for this hook is the `Instructions` card type. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + } + ] + } + input :encounter_start_custom_response_template, + title: 'Custom response template for encounter-start hook requests', + description: %( + A JSON string may be provided here to replace the normal response + from the hook request endpoint + ), + type: 'textarea', + optional: true + output :continuation_url + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Encounter Start CDS Service Test**: + + Invoke the encounter-start hook and send requests to: + + `#{encounter_start_url}` + + Inferno will process the requests and return CDS cards if successful. + + [Click here](#{continuation_url}) when you have finished submitting + requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test.rb new file mode 100644 index 00000000..ec31ba9f --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test.rb @@ -0,0 +1,114 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class OrderDispatchReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v201_order_dispatch_request + title 'Request received for order-dispatch hook' + description %( + This test waits for multiple incoming [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + hook requests and responds to the client with the response types selected as an input. This hook is a 'primary' + hook, meaning that CRD servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) + system action for these hooks, even if the response indicates that further information is needed or that the + level of detail provided is insufficient to determine coverage. + + For more details on how Inferno's simulated CDS Service behave during hook invocation see the + [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@205', + 'hl7.fhir.us.davinci-crd_2.0.1@207', 'hl7.fhir.us.davinci-crd_2.0.1@243', + 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', + 'cds-hooks_2.0@15' + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` + header of all requests. Run or re-run the **Client Registration** group to set or + change this value. + ), + locked: true + input :order_dispatch_selected_response_types, + title: 'Response types to return from order-dispatch hook requests', + description: %( + Select the cards/action response types that the Inferno hook request endpoints will return. The default + response type that will be returned for this hook is the `Coverage Information` card type. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + }, + { + label: 'Propose Alternate Request', + value: 'propose_alternate_request' + }, + { + label: 'Additional Orders as Companions/Prerequisites', + value: 'companions_prerequisites' + } + ] + } + input :order_dispatch_custom_response_template, + title: 'Custom response template for order-dispatch hook requests', + description: %( + A JSON string may be provided here to replace the normal response + from the hook request endpoint + ), + type: 'textarea', + optional: true + output :continuation_url + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Order Dispatch CDS Service Test**: + + Invoke the order-dispatch hook and send requests to: + + `#{order_dispatch_url}` + + Inferno will process the requests and return CDS cards if successful. + + [Click here](#{continuation_url}) when you have finished submitting + requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test.rb new file mode 100644 index 00000000..29904457 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test.rb @@ -0,0 +1,110 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class OrderSelectReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v201_order_select_request + title 'Request received for order-select hook' + description %( + This test waits for multiple incoming [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + hook requests and responds to the client with the response types selected as an input. + + For more details on how Inferno's simulated CDS Service behave during hook invocation see the + [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@209', 'hl7.fhir.us.davinci-crd_2.0.1@243', + 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', + 'cds-hooks_2.0@15' + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` + header of all requests. Run or re-run the **Client Registration** group to set or + change this value. + ), + locked: true + input :order_select_selected_response_types, + title: 'Response types to return from order-select hook requests', + description: %( + Select the cards/action response types that the Inferno hook request endpoints will return. The default + response type that will be returned for this hook is the `Instructions` card type. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + }, + { + label: 'Propose Alternate Request', + value: 'propose_alternate_request' + }, + { + label: 'Additional Orders as Companions/Prerequisites', + value: 'companions_prerequisites' + } + ] + } + input :order_select_custom_response_template, + title: 'Custom response template for order-select hook requests', + description: %( + A JSON string may be provided here to replace the normal response + from the hook request endpoint + ), + type: 'textarea', + optional: true + output :continuation_url + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Order Select CDS Service Test**: + + Invoke the order-select hook and send requests to: + + `#{order_select_url}` + + Inferno will process the requests and return CDS cards if successful. + + [Click here](#{continuation_url}) when you have finished submitting + requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test.rb new file mode 100644 index 00000000..bc5979e6 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test.rb @@ -0,0 +1,112 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class OrderSignReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v201_order_sign_request + title 'Request received for order-sign hook' + description %( + This test waits for multiple incoming [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + hook requests and responds to the client with the response types selected as an input. This hook is a 'primary' + hook, meaning that CRD servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) + system action for these hooks, even if the response indicates that further information is needed or that the + level of detail provided is insufficient to determine coverage. + + For more details on how Inferno's simulated CDS Service behave during hook invocation see the + [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@218', 'hl7.fhir.us.davinci-crd_2.0.1@225', + 'hl7.fhir.us.davinci-crd_2.0.1@243', 'hl7.fhir.us.davinci-crd_2.0.1@244', + 'hl7.fhir.us.davinci-crd_2.0.1@245', 'cds-hooks_2.0@15' + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` + header of all requests. Run or re-run the **Client Registration** group to set or + change this value. + ), + locked: true + input :order_sign_selected_response_types, + title: 'Response types to return from order-sign hook requests', + description: %( + Select the cards/action response types that the Inferno hook request endpoints will return. The default + response type that will be returned for this hook is the `Coverage Information` card type. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + }, + { + label: 'Propose Alternate Request', + value: 'propose_alternate_request' + }, + { + label: 'Additional Orders as Companions/Prerequisites', + value: 'companions_prerequisites' + } + ] + } + input :order_sign_custom_response_template, + title: 'Custom response template for order-sign hook requests', + description: %( + A JSON string may be provided here to replace the normal response + from the hook request endpoint + ), + type: 'textarea', + optional: true + output :continuation_url + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Order Sign CDS Service Test**: + + Invoke the order-sign hook and send requests to: + + `#{order_sign_url}` + + Inferno will process the requests and return CDS cards if successful. + + [Click here](#{continuation_url}) when you have finished submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb b/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb new file mode 100644 index 00000000..180c43cd --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_coverage_information.rb @@ -0,0 +1,93 @@ +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class ClientCardMustSupportCoverageInformationTest < Inferno::Test + include CardsIdentification + + title 'Coverage Information Action Support' + id :crd_v201_client_card_must_support_coverage_information + description <<~DESCRIPTION + Checks that the client demonstrated support for the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) + action type. At least one hook invocation performed during this test session must have returned a Coverage Information action. + Additionally, all [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/StructureDefinition-ext-coverage-information.html) + must support elements must be demonstrated across all the returned actions. + + If this test fails, adjust the [cards returned by Inferno's simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) + and/or the hook requests made by the client during the Hooks tests such that Coverage Information actions are returned + that cover the full scope of the coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/StructureDefinition-ext-coverage-information.html) + and support for them is demonstrated. + DESCRIPTION + + ALL_HOOKS = [ + APPOINTMENT_BOOK_TAG, + ENCOUNTER_START_TAG, + ENCOUNTER_DISCHARGE_TAG, + ORDER_DISPATCH_TAG, + ORDER_SELECT_TAG, + ORDER_SIGN_TAG + ].freeze + + def metadata + @metadata ||= YAML.load_file( + File.join(__dir__, '..', '..', '..', 'cross_suite', 'coverage-information_stu201_metadata.yml') + ) + end + + def configured_hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load(hook_name) + crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] + end + + def requests_to_analyze + if configured_hook_name.present? + load_requests_for_tags(tags_to_load(configured_hook_name)) + else + ALL_HOOKS.each_with_object([]) do |hook_name, request_list| + request_list.concat(load_requests_for_tags(tags_to_load(hook_name))) + end + end + end + + def load_requests_for_tags(tags_to_load) + load_tagged_requests(*tags_to_load) + end + + class MustSupportMetadataHolder + attr_accessor :metadata + + def initialize(metadata) + self.metadata = metadata + end + + def must_supports + @must_supports ||= { + extensions: metadata[:must_supports][:extensions] || [], + slices: metadata[:must_supports][:slices] || [], + elements: metadata[:must_supports][:elements] || [] + } + end + end + + run do + loaded_requests = requests_to_analyze + + sorted_cards = sorted_cards_from_requests(loaded_requests) + + assert sorted_cards['actions'][COVERAGE_INFORMATION_RESPONSE_TYPE].present?, + 'Coverage Information action support not demonstrated.' + + coverage_information_extensions = extract_coverage_information_extensions(sorted_cards) + assert_must_support_elements_present(coverage_information_extensions, COVERAGE_INFO_EXT_URL, + metadata: MustSupportMetadataHolder.new(metadata)) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb b/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb new file mode 100644 index 00000000..9f00afef --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_external_reference.rb @@ -0,0 +1,62 @@ +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class ClientCardMustSupportExternalReferenceTest < Inferno::Test + include CardsIdentification + + title 'External Reference Card Support' + id :crd_v201_client_card_must_support_external_reference + description <<~DESCRIPTION + Checks that the client demonstrated support for the [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) + card type. At least one hook invocation performed during this test session must have returned an External Reference card. + + If this test fails, adjust the [cards returned by Inferno's simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) + and/or the hook requests made by the client during the Hooks tests such that an External Reference card is returned and support for it is demonstrated. + DESCRIPTION + + ALL_HOOKS = [ + APPOINTMENT_BOOK_TAG, + ENCOUNTER_START_TAG, + ENCOUNTER_DISCHARGE_TAG, + ORDER_DISPATCH_TAG, + ORDER_SELECT_TAG, + ORDER_SIGN_TAG + ].freeze + + def configured_hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load(hook_name) + crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] + end + + def requests_to_analyze + if configured_hook_name.present? + load_requests_for_tags(tags_to_load(configured_hook_name)) + else + ALL_HOOKS.each_with_object([]) do |hook_name, request_list| + request_list.concat(load_requests_for_tags(tags_to_load(hook_name))) + end + end + end + + def load_requests_for_tags(tags_to_load) + load_tagged_requests(*tags_to_load) + end + + run do + loaded_requests = requests_to_analyze + sorted_cards = sorted_cards_from_requests(loaded_requests) + + assert sorted_cards['cards'][EXTERNAL_REFERENCE_RESPONSE_TYPE].present?, + 'External Reference card support not demonstrated.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb b/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb new file mode 100644 index 00000000..57c43dd8 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/must_support/client_card_must_support_instructions.rb @@ -0,0 +1,62 @@ +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class ClientCardMustSupportInstructionsTest < Inferno::Test + include CardsIdentification + + title 'Instructions Card Support' + id :crd_v201_client_card_must_support_instructions + description <<~DESCRIPTION + Checks that the client demonstrated support for the [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) + card type. At least one hook invocation performed during this test session must have returned an Instructions card. + + If this test fails, adjust the [cards returned by Inferno's simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) + and/or the hook requests made by the client during the Hooks tests such that an Instructions card is returned and support for it is demonstrated. + DESCRIPTION + + ALL_HOOKS = [ + APPOINTMENT_BOOK_TAG, + ENCOUNTER_START_TAG, + ENCOUNTER_DISCHARGE_TAG, + ORDER_DISPATCH_TAG, + ORDER_SELECT_TAG, + ORDER_SIGN_TAG + ].freeze + + def configured_hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load(hook_name) + crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] + end + + def requests_to_analyze + if configured_hook_name.present? + load_requests_for_tags(tags_to_load(configured_hook_name)) + else + ALL_HOOKS.each_with_object([]) do |hook_name, request_list| + request_list.concat(load_requests_for_tags(tags_to_load(hook_name))) + end + end + end + + def load_requests_for_tags(tags_to_load) + load_tagged_requests(*tags_to_load) + end + + run do + loaded_requests = requests_to_analyze + sorted_cards = sorted_cards_from_requests(loaded_requests) + + assert sorted_cards['cards'][INSTRUCTIONS_RESPONSE_TYPE].present?, + 'Instructions card support not demonstrated.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_registration_verification_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_registration_verification_test.rb new file mode 100644 index 00000000..57485835 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_registration_verification_test.rb @@ -0,0 +1,94 @@ +require 'jwt' + +module DaVinciCRDTestKit + module V201 + class CRDClientRegistrationVerification < Inferno::Test + include ClientURLs + + id :crd_v201_client_registration_verification + title 'Verify CRD Client Registration' + description %( + During this test, Inferno will verify that the CRD client registration details + provided are conformant. + ) + + verifies_requirements 'cds-hooks_2.0@174', 'cds-hooks_2.0@197' + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + The `iss` claim of the JWT in the Authorization header sent by the CRD client under test on + all CRD requests. This value will be used to associate incoming requests with this test + session and any requests that use a different `iss` value will not be recognized. + ), + type: 'text' + input :cds_jwk_set, + title: 'CRD JSON Web Key Set (JWKS)', + type: 'textarea', + description: %( + The CRD client's JWK Set containing it's public key. May be either + a publicly accessible url containing the JWKS, or the raw JWKS. + The client suite may be run without this input, but it is required + for the tests to pass. + ), + optional: true + + run do + assert cds_jwk_set.present?, 'Provide a jwk set in the **CRD JSON Web Key Set (JWKS)** input.' + + jwks_warnings = [] + parsed_jwk_set = jwk_set(cds_jwk_set, jwks_warnings) + jwks_warnings.each { |warning| add_message('warning', warning) } + + assert parsed_jwk_set.length.positive?, 'JWKS content does not include any valid keys.' + + assert messages.none? { |msg| msg[:type] == 'error' }, 'Invalid key set provided. See Messages for details.' + end + + def jwk_set(jku, warning_messages = []) # rubocop:disable Metrics/CyclomaticComplexity + jwk_set = JWT::JWK::Set.new + + if jku.blank? + warning_messages << 'No key set input.' + return jwk_set + end + + jwk_body = # try as raw jwk set + begin + JSON.parse(jku) + rescue JSON::ParserError + nil + end + + if jwk_body.blank? + retrieved = Faraday.get(jku) # try as url pointing to a jwk set + jwk_body = + begin + JSON.parse(retrieved.body) + rescue JSON::ParserError + warning_messages << "Failed to fetch valid json from jwks uri #{jku}." + nil + end + else + warning_messages << 'Providing the JWK Set directly is strongly discouraged.' + end + + return jwk_set if jwk_body.blank? + + jwk_body['keys']&.each_with_index do |key_hash, index| + parsed_key = + begin + JWT::JWK.new(key_hash) + rescue JWT::JWKError => e + id = key_hash['kid'] | index + warning_messages << "Key #{id} invalid: #{e}" + nil + end + jwk_set << parsed_key unless parsed_key.blank? + end + + jwk_set + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_service_registration_attestation_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_service_registration_attestation_test.rb new file mode 100644 index 00000000..2c5c8a59 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/registration/client_service_registration_attestation_test.rb @@ -0,0 +1,40 @@ +module DaVinciCRDTestKit + module V201 + class CRDClientServiceRegistrationAttestation < Inferno::Test + include ClientURLs + + id :crd_v201_client_service_registration_attestation + title 'Attest to the registration of the Inferno Service by the CRD client' + description %( + During this test, the tester will confirm that Inferno has been registered as a + trusted CRD server that can access the CRD client's FHIR Server. + ) + + verifies_requirements 'cds-hooks_2.0@174' + + output :attest_true_url + output :attest_false_url + + run do + identifier = SecureRandom.hex(32) + attest_true_url = "#{resume_pass_url}?token=#{identifier}" + attest_false_url = "#{resume_fail_url}?token=#{identifier}" + output(attest_true_url:) + output(attest_false_url:) + wait( + identifier:, + message: <<~MESSAGE + **Registration of Inferno as a trusted CRD server**: + + I attest that Inferno has been registered as a trusted CRD server that is allowed to access + data stored on the CRD client's FHIR Server. + + [Click here](#{attest_true_url}) if the above statement is **true**. + + [Click here](#{attest_false_url}) if the above statement is **false**. + MESSAGE + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb new file mode 100644 index 00000000..5116df44 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test.rb @@ -0,0 +1,86 @@ +require_relative '../../../cross_suite/tags' + +module DaVinciCRDTestKit + module V201 + class HookRequestFetchedDataTest < Inferno::Test + id :crd_v201_hook_request_fetched_data + title 'Minimum resource dataset was accessible during the hook invocation' + description %( + Clients must make a set of data related to the request available to the CRD server via either prefetch + as a part of the hook invocation or via FHIR API during server processing of the hook call. According + to the IG, the minimal data set includes: + - Patient + - Relevant Coverage + - Authoring Practitioner + - Authoring Organization + - Requested performing Practitioner (if specified) + - Requested performing Organization (if specified) + - Requested Location (if specified) + - Associated Medication (if any) + - Associated Device (if any) + + When it receives a hook invocation, Inferno analyzes the hook request to determine what resources it + needs access to and requests those that are not provided as a part of the prefetched data. All data + is requested via the read interaction except for Coverages which requires a search interaction. + + This test checks that those requests were successful, demonstrating that the system can provide access + to this required information. + + For more details on what Inferno's simulated CDS Service fetches during hook invocation and + how the client must respond to pass this test, see the + [Data Fetching During Hook Invocations](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#data-fetching-during-hook-invocations) + documentation. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@43', 'hl7.fhir.us.davinci-crd_2.0.1@323' + + def hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load + crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] + end + + def no_error_validation(message) + assert messages.none? { |msg| msg[:type] == 'error' }, message + end + + run do + hook_requests = load_tagged_requests(*tags_to_load) + + hook_requests.each do |hook_request| + request_body = JSON.parse(hook_request.request_body) + hook_instance = request_body['hookInstance'] + + if request_body.dig('fhirAuthorization', 'access_token').blank? + add_message(:error, "Access token not provided for FHIR data access on hook instance `#{hook_instance}`.") + end + + failed_data_fetches = + load_tagged_requests(TagMethods.hook_instance_data_fetch_tag(hook_instance)).reject do |fetch| + fetch.status.to_s.starts_with?('2') + end + + next unless failed_data_fetches.present? + + server = "#{request_body['fhirServer'].chomp('/')}/" + failed_data_fetches.each do |request| + reference = request.url.starts_with?(server) ? request.url[server.length..] : request.url + if reference.starts_with?('Coverage') + add_message(:error, + "Failed to perform Coverage search `#{reference}` for hook instance `#{hook_instance}`.") + else + add_message(:error, "Failed to read reference `#{reference}` for hook instance `#{hook_instance}`.") + end + end + end + + no_error_validation('Inferno could not fetch some required data during the hook invocations.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test.rb new file mode 100644 index 00000000..f157941a --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test.rb @@ -0,0 +1,63 @@ +require_relative '../../client_hook_request_validation' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class HookRequestOptionalFieldsTest < Inferno::Test + include ClientHookRequestValidation + include ClientURLs + + id :crd_v201_hook_request_optional_fields + title 'Hook request optional fields are valid' + description %( + Under the [CDS hooks HTTP Request section](https://cds-hooks.hl7.org/2.0/#http-request_1), the specification + requires that a CDS service request SHALL include a JSON POST body which MAY contain the following + optional input fields: + * `fhirServer` - *URL* + * `fhirAuthorization` - *object* + * `prefetch` - *object* + + This test checks that the optional fields that are present are of the correct type. This test + will not fail if the hook request does not contain an optional field, it only produces an informational message. + If the client provides its FHIR server URL in the `fhirServer` field, and it's authorization token in the + `fhirAuthorization` field object, they will be produced as an output from this test to be used in + subsequent tests. + ) + + verifies_requirements 'cds-hooks_2.0@1', 'cds-hooks_2.0@3', 'cds-hooks_2.0@20', 'cds-hooks_2.0@21', + 'cds-hooks_2.0@23', 'cds-hooks_2.0@65', 'cds-hooks_2.0@66', 'cds-hooks_2.0@67', + 'cds-hooks_2.0@68', 'cds-hooks_2.0@69', 'cds-hooks_2.0@70' + + def hook_name + config.options[:hook_name] + end + + output :client_fhir_server + output :client_access_token, + optional: true + + run do + load_tagged_requests(hook_name) + skip_if requests.empty?, "No #{hook_name} requests were made in a previous test as expected." + client_fhir_server = nil + requests.each_with_index do |request, index| + @request_number = index + 1 + request_body = json_parse(request.request_body) + if request_body.blank? + add_message('error', "#{request_number}Hook request body cannot be empty.") + next + end + + fhir_server_info = hook_request_optional_fields_check(request_body, ig_version: 'v201') + client_fhir_server ||= fhir_server_info + end + + unless client_fhir_server.nil? + output client_fhir_server: client_fhir_server[:fhir_server_uri], + client_access_token: client_fhir_server[:fhir_access_token] + end + no_error_validation('Some service requests contain invalid optional fields.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb new file mode 100644 index 00000000..2222c0d1 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_prefetch_equals_queried_test.rb @@ -0,0 +1,96 @@ +require_relative '../../../cross_suite/prefetch_contents_validation' + +module DaVinciCRDTestKit + module V201 + class HookRequestPrefetchEqualsQueriedTest < Inferno::Test + include PrefetchContentsValidation + + id :crd_v201_hook_request_prefetch_equals_queried + title 'Prefetched data is equivalent to queried data' + description %( + This test verifies that each key present in the incoming hook request's `prefetch` field is equivalent to the + data returned by a query to the fhir server using the parameterized prefetch template. + + The queries will be performed after the hook response has been returned. + ) + verifies_requirements 'cds-hooks_2.0@45' + + input :client_fhir_server, + optional: true + input :client_access_token, + optional: true + input :override_access_token, + title: 'Prefetch Validation Override Bearer Token', + description: %( + Optionally provide a bearer token to use in place of the one provided in the hook request + when checking that the prefetched data is equivalent to what can be access via FHIR. + Use only if the bearer token in the request will not be valid even right after the hook + request is made. If provided it must have the same scope as the bearer token provided + in the hook request. + ), + optional: true + + fhir_client do + url :client_fhir_server + bearer_token access_token + end + + def access_token + override_access_token.present? ? override_access_token : client_access_token + end + + def hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load + crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] + end + + def cds_services_json + JSON.parse(File.read(File.join( + __dir__, '..', 'cds-services-v201.json' + )))['services'] + end + + def advertised_prefetch_fields + advertised_hook_service = cds_services_json.find { |service| service['hook'] == hook_name } + advertised_hook_service['prefetch'] + end + + def no_error_validation(message) + assert messages.none? { |msg| msg[:type] == 'error' }, message + end + + run do + hook_requests = load_tagged_requests(*tags_to_load) + + skip_if hook_requests.blank?, 'No Hook Requests to verify.' + + pass_if !prefetched_data?(hook_requests), 'No prefetched data provided.' + + skip_if client_fhir_server.blank?, + 'No FHIR server provided in the hook request to use to validate the prefetch data.' + + if override_access_token.present? + add_message(:warning, + 'Override access token provided. Ensure that it has the same scope as used when ' \ + 'prefetching data for the hook request.') + end + + hook_requests.each_with_index do |request, index| + @request_number = index + 1 + check_prefetch_data_against_query(request, advertised_prefetch_fields) + end + + no_error_validation('Prefetched data does not match the requested queries.') + + pass 'Prefetched data matches the requested queries.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test.rb new file mode 100644 index 00000000..ac867549 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test.rb @@ -0,0 +1,55 @@ +require_relative '../../client_hook_request_validation' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class HookRequestRequiredFieldsTest < Inferno::Test + include ClientHookRequestValidation + include ClientURLs + + id :crd_v201_hook_request_required_fields + title 'Hook request contains required fields' + description %( + Under the [CDS hooks HTTP Request section](https://cds-hooks.hl7.org/2.0/#http-request_1), the specification + requires that a CDS service request SHALL include a JSON POST body with the following input fields: + * `hook` - *string* + * `hookInstance` - *string* containing a globally unique UUID + * `context` - *object* + + Additionally, if the optional `fhirAuthorization` field is present, then the `fhirServer` field is required. + + This test also checks that the `hook` field contains the correct CDS service name that the CDS client + is sending a request for + ) + + verifies_requirements 'cds-hooks_2.0@1', 'cds-hooks_2.0@18', 'cds-hooks_2.0@19', + 'cds-hooks_2.0@20', 'cds-hooks_2.0@22', 'cds-hooks_2.0@25' + + def hook_name + config.options[:hook_name] + end + + output :contexts, :prefetches + + run do + load_tagged_requests(hook_name) + skip_if requests.empty?, "No #{hook_name} requests were made in a previous test as expected." + contexts = [] + prefetches = [] + requests.each_with_index do |request, index| + @request_number = index + 1 + request_body = json_parse(request.request_body) + next if request_body.blank? + + contexts << request_body['context'] if request_body['context'].is_a?(Hash) + prefetches << request_body['prefetch'] if request_body['prefetch'].is_a?(Hash) + hook_request_required_fields_check(request_body, hook_name, ig_version: 'v201') + end + + output contexts: contexts.to_json, + prefetches: prefetches.to_json + no_error_validation('Some service requests made are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test.rb new file mode 100644 index 00000000..bce52046 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test.rb @@ -0,0 +1,70 @@ +require_relative '../../client_hook_request_validation' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class HookRequestValidContextTest < Inferno::Test + include ClientURLs + include ClientHookRequestValidation + + id :crd_v201_hook_request_valid_context + title 'Hook request contains valid context' + description %( + As stated in the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#http-request), a CDS service request's + `context` field contains hook-specific contextual data that the CDS service will need. The context is + specified in the hook definition to guide developers on the information available at the point in the + workflow when the hook is triggered. + + The `context` requirements for each [hook specified in the CRD IG](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html) + can be found below: + * [appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/) + * [encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/) + * [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/) + * [order-select](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/) + * [order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/) + * [order-sign](https://cds-hooks.org/hooks/order-sign/) + + This test performs the following: + * Verifies that the incoming hook request's `context` field contains the fields required by each hook and + that they are in the correct format + * Checks the optional fields and ensures they are in the correct format + * Validates any resources contained in a `context` field that contains a Bundle or FHIR resource + * Makes FHIR requests for any `context` fields that contain an id or reference and validates each resource + response against its corresponding CRD resource profile + * Check some specific `context` requirements for hooks that have special requirements for certain fields + + The client must provide its FHIR server URL and access token in the hook request in order to run + this test. + ) + + input :contexts, :client_fhir_server + input :client_access_token, + optional: true + + fhir_client do + url :client_fhir_server + bearer_token :client_access_token + end + + def hook_name + config.options[:hook_name] + end + + run do + hook_contexts = json_parse(contexts) + if hook_contexts + skip_if(hook_contexts.none?(&:present?), "No #{hook_name} requests contained the `context` field.") + hook_contexts.each_with_index do |context, index| + @request_number = index + 1 + if context.blank? + add_message('error', "#{request_number}Missing required context field.") + next + end + hook_request_context_check(context, hook_name, ig_version: 'v201') + end + end + no_error_validation('Context is not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test.rb new file mode 100644 index 00000000..b236ba9c --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test.rb @@ -0,0 +1,62 @@ +require_relative '../../client_hook_request_validation' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V201 + class HookRequestValidPrefetchTest < Inferno::Test + include ClientHookRequestValidation + include ClientURLs + + id :crd_v201_hook_request_valid_prefetch + title 'Hook request contains valid prefetched data' + description %( + As stated in the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#http-request), a CDS service request's + `prefetch` field is an optional field that contains key/value pairs of FHIR queries that the service is + requesting the CDS client to perform and provide on each service call. The key is a string that describes + the type of data being requested and the value is a string representing the FHIR query. + See [Prefetch Template](https://cds-hooks.hl7.org/2.0#prefetch-template) + for more information about how the `prefetch` formatting works. + + This test verifies that the incoming hook request's `prefetch` field is in a valid JSON format, + validates each contained resource against its corresponding CRD resource profile, and checks + that the data matches what is requested in by the + [prefetch templates published by Inferno's simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/v2.0.1/cds-services-v201.json). + Since prefetch support is not required, this test will pass if `prefetch` is not present or has no entries. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@54', 'cds-hooks_2.0@30', 'cds-hooks_2.0@47' + + input :contexts, :prefetches + + def hook_name + config.options[:hook_name] + end + + def cds_services_json + JSON.parse(File.read(File.join( + __dir__, '..', 'cds-services-v201.json' + )))['services'] + end + + def advertised_prefetch_fields + advertised_hook_service = cds_services_json.find { |service| service['hook'] == hook_name } + advertised_hook_service['prefetch'] + end + + run do + hook_contexts = json_parse(contexts) + hook_prefetches = json_parse(prefetches) + + pass_if hook_prefetches.blank?, 'No prefetched data provided.' + + hook_prefetches.each_with_index do |prefetch, index| + next if prefetch.blank? + + @request_number = index + 1 + context = hook_contexts[index].present? ? hook_contexts[index] : {} + hook_request_prefetch_check(advertised_prefetch_fields, prefetch, context, ig_version: 'v201') + end + no_error_validation('Prefetch is not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb new file mode 100644 index 00000000..2c8cbce3 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/client_display_cards_attest.rb @@ -0,0 +1,83 @@ +require_relative '../client_urls' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class ClientCardDisplayAttest < Inferno::Test + include ClientURLs + include CardsIdentification + + id :crd_v201_card_display_attest_test + title 'Check that returned decision support details are displayed to the user' + description %( + Since Inferno has no way to evaluate the client's UI, testers must manually + verify that the cards and system actions returned by Inferno are presented + to the user in an appopriate way that allows for consideration and action + if warranted. + ) + + def hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load + crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] + end + + def responded_card_types + list_card_types_in_requests(requests) + end + + def format_responded_response_types + responded_card_types + .map do |response_type| + response_type_string = + response_type.split('_') + .map(&:capitalize) + .join(' ') + .prepend('- ') + .sub('Smart', 'SMART') + .sub('Create Update', 'Create/Update') + .sub('Companions Prerequisites', 'Companions/Prerequisites') + .sub('Card', '(card)') + .sub('Action', '(systemAction)') + response_type_string + end + .join("\n") + end + + output :attest_true_url + output :attest_false_url + + run do + load_tagged_requests(*tags_to_load) + skip_if responded_card_types.blank?, 'No responses sent to the client.' + + identifier = SecureRandom.hex(32) + attest_true_url = "#{resume_pass_url}?token=#{identifier}" + attest_false_url = "#{resume_fail_url}?token=#{identifier}" + output(attest_true_url:) + output(attest_false_url:) + wait( + identifier:, + message: <<~MESSAGE + **Card Display Attestation**: + + I attest that the following CDS response types returned were processed by the + client system and displayed to the user: + + #{format_responded_response_types} + + [Click here](#{attest_true_url}) if the above statement is **true**. + + [Click here](#{attest_false_url}) if the above statement is **false**. + MESSAGE + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb b/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb new file mode 100644 index 00000000..7fbf6ea3 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.0.1/verify_response/inferno_response_validation.rb @@ -0,0 +1,79 @@ +require_relative '../../../cross_suite/cards_validation' + +module DaVinciCRDTestKit + module V201 + class InfernoResponseValidationTest < Inferno::Test + include CardsValidation + + title 'Inferno CDS Service Response is Conformant' + description %( + This test verifies that each service response built by Inferno and returned to the client is conformant. + These responses must be conformant for the client to demonstrate its ability to accept CDS Service responses. + + If this test fails when a custom response was provided, adjust the custom response template + and the submitted requests so that the response built by Inferno is conformant. See + the documentation for details on how Inferno builds a response from the provided + custom template. + + If this test fails when Inferno mocked the response based on selected card types, please + report this failure to the Inferno team via github issues. + ) + id :crd_v201_inferno_response_validation + + input :custom_response_template, optional: true + + def hook_name + config.options[:hook_name] + end + + def crd_test_group + config.options[:crd_test_group] + end + + def tags_to_load + crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] + end + + def response_label(index = nil) + response_type = (custom_response_template.present? ? 'Custom built' : 'Mocked') + "#{response_type} response#{index.present? ? " #{index}" : ''}" + end + + def valid_cards + @valid_cards ||= [] + end + + def validate_system_actions(system_actions) + return if system_actions.nil? + + system_actions.each do |action| + action_fields_validation(action, ig_version: 'v201') + end + end + + run do + load_tagged_requests(*tags_to_load) + + skip_if request.blank?, "No #{response_label.downcase}s to verify." + + entity_validated = false + requests.each_with_index do |request, index| + response_hash = JSON.parse(request.response_body) + + next unless response_hash['cards'].present? || response_hash['systemActions'].present? + + entity_validated = true + perform_cards_validation(response_hash['cards'], response_hash['systemActions'].present?, index) + validate_system_actions(response_hash['systemActions']) + rescue JSON::ParserError + next + end + + skip_if !entity_validated, + "No #{response_label.downcase} cards or system actions to verify returned by Inferno." + + no_error_validation("Invalid Inferno #{response_label.downcase}(s). Check messages for issues found.") + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb new file mode 100644 index 00000000..886c5077 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/api/client_coverage_info_update_test.rb @@ -0,0 +1,212 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class ClientCoverageInfoUpdateTest < Inferno::Test + include CardsIdentification + include TaggedRequestLoadHelper + + title "Client's FHIR server stores updates from coverage-information responses" + id :crd_v221_client_coverage_info_update + description <<~DESCRIPTION + This test verifies that when the client receives a [Coverage Information response type](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type), + it stores the [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) + and makes it available when accessing the associated resource. + + During this test, Inferno will find all [Coverage Information responses](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type), + attempt to read the updated FHIR resource from the client's FHIR server, and verify + that the [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) + in the response is now present in the returned resource. When comparing the + [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) + in the response with what is returned from the client FHIR server, Inferno + expects that client stores and exposes the extension without modification, meaning + that the exact set of sub-extensions in the response and their values are present + in the stored version. + + Inferno will not always be able to perform this check. CRD clients are not required + to expose FHIR read APIs for all request resource types, so resource types for which + the client's CapabilityStatement does not indicate read interaction support will be omitted. + Additionally, Inferno will not check complex cases where determining the expected + stored extensions is difficult. For example, when there are multiple Coverage Information + responses for a single resource or multiple coverage-information extensions in a + single Coverage Information response. Implementers are still responsible for storing updates + in these cases. To pass this test at least one target resource that Inferno can access must be found. + The stored [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) + must be correct for all resources checked by Inferno. + DESCRIPTION + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-36-B', 'hl7.fhir.us.davinci-crd_2.2.1@resp-46' + + uses_request :capability_statement + + run do + supported_resource_types = extract_supported_resource_types(resource) # extract before loading other requests + + loaded_requests = requests_to_analyze # all requests for one hook or all requests for all hooks + skip_if loaded_requests.blank?, 'No hook requests found, run hook tests first.' + + resources_to_check, unsupported = find_coverage_info_responses(loaded_requests) + .partition { |request_details| supported_resource_types.include?(request_details[:resource_type]) } + unsupported.each do |request_details| + add_message('info', "#{error_prefix(request_details)}Resource type #{request_details[:resource_type]} " \ + 'is not supported by the client\'s FHIR API. This resource will not be verified.') + end + skip_if resources_to_check.blank?, + 'No coverage-info responses found that Inferno could verify: ' \ + 're-run hook tests generating responses that Inferno can verify.' + + resources_to_check.each do |resource_details| + check_for_stored_coverage_information_extension(resource_details) + end + + assert_no_error_messages('Not all coverage-information extensions stored. See Messages for details.') + end + + # important information to record: + # - relative resource reference (resource type + id) + # - coverage-information extension + # - position (response index + systemAction index) + def find_coverage_info_responses(requests) + all_responses = requests.flat_map.with_index do |request, request_index| + find_coverage_info_actions_in_response(request, request_index) + end + + all_responses.group_by { |resource_details| [resource_details[:resource_type], resource_details[:target_id]] } + .filter_map do |(_type, _id), entries| + if entries.size > 1 + add_message('info', + "#{error_prefix(entries.first)}Multiple coverage-info responses found. Due to the " \ + 'complexity of determining the expected state, this resource will not be verified.') + next + end + + if entries.first[:coverage_information_extensions].size > 1 + add_message('info', + "#{error_prefix(entries.first)}Multiple coverage-information extensions found. Due to the " \ + 'complexity of determining the expected state, this resource will not be verified.') + next + end + + entries.first + end + end + + def find_coverage_info_actions_in_response(request, request_index) + response = JSON.parse(request.response_body) + return [] unless response.is_a?(Hash) && response.key?('systemActions') + + response['systemActions'].map.with_index do |action, action_index| + if coverage_information_response_type?(action) + extract_coverage_information_details(action, action_index, request_index) + end + end.compact + rescue JSON::ParserError + [] # no responses to check, error registered elsewhere + end + + def extract_coverage_information_details(action, action_index, request_index) + { + request_index:, + action_index:, + resource_type: action.dig('resource', 'resourceType'), + target_id: action.dig('resource', 'id'), + coverage_information_extensions: FHIR.from_contents(action['resource'].to_json).extension.select do |ext| + ext.url == COVERAGE_INFO_EXT_URL + end + } + end + + def extract_supported_resource_types(capability_statement) + return [] unless capability_statement.rest.is_a?(Array) + + capability_statement.rest.select { |rest| rest.mode == 'server' }.flat_map do |rest| + next [] unless rest.resource.is_a?(Array) + + rest.resource.select do |resource| + supports_read?(resource) + end.flat_map(&:type).compact + end.uniq + end + + def supports_read?(resource) + resource.interaction&.any? do |interaction| + interaction.code == 'read' + end + end + + def check_for_stored_coverage_information_extension(resource_details) + fhir_read resource_details[:resource_type], resource_details[:target_id] + unless resource.present? && resource.resourceType == resource_details[:resource_type] + add_message('error', "#{error_prefix(resource_details)}Unable to read target resource.") + return + end + + stored_extensions = resource.extension.select { |ext| ext.url == COVERAGE_INFO_EXT_URL } + if stored_extensions.blank? + add_message('error', "#{error_prefix(resource_details)}coverage-information extension(s) not stored.") + return + end + + difference_string = coverage_info_extension_differences( + resource_details[:coverage_information_extensions], + stored_extensions + ) + return unless difference_string.present? + + add_message('error', "#{error_prefix(resource_details)}#{difference_string}.") + end + + def coverage_info_extension_differences(expected, actual) + raise ArgumentError, 'expected must contain exactly one coverage-information extension' if expected.size != 1 + + if expected.size != actual.size + return "Expected #{expected.size} coverage-information extension(s), found #{actual.size}." + end + + differences = compare_coverage_info_sub_extensions(expected[0], actual[0]) + return unless differences.present? + + "Stored coverage-information extension does not match what was sent by the server: #{differences.join(', ')}" + end + + def compare_coverage_info_sub_extensions(expected, actual) + expected_by_url = expected.extension.group_by(&:url) + actual_by_url = actual.extension.group_by(&:url) + + (expected_by_url.keys | actual_by_url.keys).filter_map do |url| + compare_url_sub_extensions(url, expected_by_url, actual_by_url) + end + end + + def compare_url_sub_extensions(url, expected_by_url, actual_by_url) + if !expected_by_url.key?(url) + "unexpected sub-extension '#{url}' found in stored resource" + elsif !actual_by_url.key?(url) + "sub-extension '#{url}' missing from stored resource" + elsif normalized_extensions(expected_by_url[url]) != normalized_extensions(actual_by_url[url]) + "sub-extension '#{url}' value differs" + end + end + + def normalized_extensions(extensions) + extensions.map { |e| normalize_extension(e.to_hash) }.sort_by(&:to_json) + end + + # Recursively sort nested arrays so sub-extension order doesn't affect equality. + def normalize_extension(value) + case value + when Hash then value.transform_values { |v| normalize_extension(v) } + when Array then value.map { |item| normalize_extension(item) }.sort_by(&:to_json) + else value + end + end + + def error_prefix(resource_details) + "(Request #{resource_details[:request_index] + 1}) " \ + "coverage-info systemAction #{resource_details[:action_index] + 1} " \ + "targeting resource #{resource_details[:resource_type]}/#{resource_details[:target_id]}: " + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb new file mode 100644 index 00000000..62b75098 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/api/client_crd_update_verification_group.rb @@ -0,0 +1,18 @@ +require_relative 'client_coverage_info_update_test' + +module DaVinciCRDTestKit + module V221 + class ClientCRDUpdateVerificationGroup < Inferno::TestGroup + id :crd_v221_client_update_verification + title 'CRD Update Tests' + description %( + This CRD-specific group verifies that the client was able to + persist updates provided by the payer server as a part of + decision support responses. + ) + run_as_group + + test from: :crd_v221_client_coverage_info_update + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb new file mode 100644 index 00000000..5cb99856 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test.rb @@ -0,0 +1,68 @@ +require_relative '../../multi_request_message_helper' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class DecodeAuthTokenTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + include DaVinciCRDTestKit::TaggedRequestLoadHelper + id :crd_v221_decode_auth_token + title 'Bearer tokens can be decoded' + description %( + During this test, Inferno will verify that for each request the Bearer token is a properly constructed JWT. + As per the [CDS hooks specification](https://cds-hooks.hl7.org/2026Jan/en/#trusting-cds-clients), + each time a CDS client transmits a request to a CDS Service which requires authentication, the request MUST + include an Authorization header presenting the JWT as a "Bearer" token. + ) + + verifies_requirements 'cds-hooks_3.0.0-ballot@178' + + output :auth_tokens, :auth_token_payloads_json, :auth_token_headers_json + + run do + load_hook_requests + skip_if requests.empty?, "No #{hook_name} requests were made in a previous test as expected." + auth_tokens = [] + auth_token_payloads_json = [] + auth_token_headers_json = [] + + requests.each_with_index do |request, index| + authorization_header = request.request_header('Authorization')&.value + + unless authorization_header&.start_with?('Bearer ') + add_request_message('error', 'Authorization token must be a JWT presented as a `Bearer` token', index) + auth_tokens << nil + auth_token_payloads_json << nil + auth_token_headers_json << nil + next + end + + auth_token = authorization_header.delete_prefix('Bearer ') + auth_tokens << auth_token + + begin + payload, header = + JWT.decode( + auth_token, + nil, + false + ) + + auth_token_payloads_json << payload.to_json + auth_token_headers_json << header.to_json + rescue StandardError => e + add_request_message('error', "Token is not a properly constructed JWT: #{e.message}", index) + auth_token_payloads_json << nil + auth_token_headers_json << nil + end + end + output auth_tokens: auth_tokens.to_json, + auth_token_payloads_json: auth_token_payloads_json.to_json, + auth_token_headers_json: auth_token_headers_json.to_json + + assert_no_error_messages("#{requests_with_errors_prefix}Decoding Authorization header Bearer tokens failed. " \ + 'See Messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb new file mode 100644 index 00000000..58d4f22f --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test.rb @@ -0,0 +1,120 @@ +require_relative '../../multi_request_message_helper' + +module DaVinciCRDTestKit + module V221 + class RetrieveJWKSTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + + id :crd_v221_retrieve_jwks + title 'JWKSs can be retrieved' + description %( + During this test, Inferno will verify that for each request the JWKS can be retrieved from the JWKS uri if + it is present in the `jku` field within the JWT token header. Additionally, keys will be extracted and + outputted for use in subsequent tests. If the client does not provide a uri in the `jku` field, + Inferno will extract keys from the raw JWKS JSON provided out of band as a part of the "Registration" group. + ) + + verifies_requirements 'cds-hooks_3.0.0-ballot@183', 'cds-hooks_3.0.0-ballot@185', 'cds-hooks_3.0.0-ballot@197', + 'cds-hooks_3.0.0-ballot@199' + + input :auth_token_headers_json + input :cds_jwk_set, + title: 'CRD JSON Web Key Set (JWKS)', + type: 'textarea', + description: %( + The client's registered JWK Set containing it's public key. Used + only when a request was received with a JWT without the `jku` header. + Inferno assumes this input, provided during the "Registration" + group, contains the raw JSON representation of a JWKS (if a URI was provided + it would be populated in the `jku` header). Run or re-run the "Registration" + group to set or change this value. + ), + locked: true, + optional: true + output :crd_jwks_keys_json + + run do + auth_token_headers = JSON.parse(auth_token_headers_json) # NOTE: pre-verified json + skip_if auth_token_headers.compact.empty?, 'No Authorization tokens produced from the previous test.' + skip_if cds_jwk_set.blank? && cds_jwk_set_input_needed?(auth_token_headers), + "JWK Set must be inputted if the client's JWK Set is not available" + + crd_jwks_keys_json = [] + auth_token_headers.each_with_index do |token_header, index| + unless token_header.present? + crd_jwks_keys_json << nil + next + end + + jku = JSON.parse(token_header)['jku'] # NOTE: pre-verified json + jwks = + if jku.present? + get(jku) + + if response[:status] == 200 + parse_json_request_entity(response[:body], 'Fetched jku url response', index) + else + add_request_message('error', + "Unexpected response status: expected 200, but received #{response[:status]}", + index) + nil + end + else + parse_json_request_entity(cds_jwk_set, 'JWK Set input', index) + end + if jwks.blank? + crd_jwks_keys_json << nil + next + end + + keys = jwks['keys'] + unless keys.is_a?(Array) + add_request_message('error', 'JWKS `keys` field must be an array', index) + crd_jwks_keys_json << nil + next + end + + if keys.blank? + add_request_message('error', 'The JWK set returned contains no public keys', index) + crd_jwks_keys_json << nil + next + end + + keys.each do |jwk| + JWT::JWK.import(jwk.deep_symbolize_keys) + rescue StandardError + add_request_message('error', "Invalid JWK: #{jwk.to_json}", index) + end + + kid_presence = keys.all? { |key| key['kid'].present? } + if kid_presence.blank? + add_request_message('error', + '`kid` field must be present in each key if JWKS contains multiple keys', + index) + crd_jwks_keys_json << nil + next + end + + kid_uniqueness = keys.map { |key| key['kid'] }.uniq.length == keys.length + if kid_uniqueness.blank? + add_request_message('error', "`kid` must be unique within the client's JWK Set.", index) + crd_jwks_keys_json << nil + next + end + + crd_jwks_keys_json << keys.to_json + end + + output crd_jwks_keys_json: crd_jwks_keys_json.to_json + + assert_no_error_messages("#{requests_with_errors_prefix}Retrieving JWKS failed. See Messages for details.") + end + + def cds_jwk_set_input_needed?(auth_token_headers) + auth_token_headers.any? do |token_header| + token_header.present? && JSON.parse(token_header)['jku'].blank? + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb new file mode 100644 index 00000000..91ef352d --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test.rb @@ -0,0 +1,92 @@ +require_relative '../../multi_request_message_helper' + +module DaVinciCRDTestKit + module V221 + class TokenHeaderTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + + id :crd_v221_token_header + title 'Authorization token headers contain required information' + description %( + During this test, Inferno will verify that for each request the JWT header is conformant to the + requirements in the [CDS hooks specification](https://cds-hooks.hl7.org/2026Jan/en/#trusting-cds-clients), + including the following: + - The `alg`, `kid`, and `typ` fields are required. + - The `typ` field must be "JWT". + - The key used to sign the token must be present in the JWKS. + ) + + verifies_requirements 'cds-hooks_3.0.0-ballot@182', 'cds-hooks_3.0.0-ballot@184', 'cds-hooks_3.0.0-ballot@202' + + input :auth_token_headers_json, :crd_jwks_keys_json + output :auth_tokens_jwk_json + + run do + auth_token_headers = JSON.parse(auth_token_headers_json) + crd_jwks_keys = JSON.parse(crd_jwks_keys_json) + skip_if auth_token_headers.compact.empty?, 'No Authorization tokens produced from the previous tests.' + skip_if crd_jwks_keys.compact.empty?, 'No JWKS keys produced from the previous test.' + + auth_tokens_jwk_json = [] + auth_token_headers.each_with_index do |token_header, index| + unless token_header.present? + auth_tokens_jwk_json << nil + next + end + + header = JSON.parse(token_header) # NOTE: pre-verified json + algorithm = header['alg'] + + if algorithm.blank? + add_request_message('error', 'Token header must have the `alg` field', index) + auth_tokens_jwk_json << nil + next + end + + if algorithm == 'none' + add_request_message('error', 'Token header `alg` field cannot be set to none', index) + auth_tokens_jwk_json << nil + next + end + + if header['typ'].blank? + add_request_message('error', 'Token header must have the `typ` field', index) + elsif header['typ'] != 'JWT' + add_request_message('error', + "Token header `typ` field must be set to 'JWT', instead was #{header['typ']}", + index) + end + + if header['kid'].blank? + add_request_message('error', 'Token header must have the `kid` field', index) + auth_tokens_jwk_json << nil + next + end + + kid = header['kid'] + if crd_jwks_keys[index].nil? + add_request_message('error', 'No JWKS keys available for this request', index) + auth_tokens_jwk_json << nil + next + end + + keys = JSON.parse(crd_jwks_keys[index]) # NOTE: pre-verified json + + jwk = keys.find { |key| key['kid'] == kid } + if jwk.blank? + add_request_message('error', "JWKS did not contain a public key with an id of `#{kid}`", index) + auth_tokens_jwk_json << nil + next + end + + auth_tokens_jwk_json << jwk.to_json + end + + output auth_tokens_jwk_json: auth_tokens_jwk_json.to_json + + assert_no_error_messages("#{requests_with_errors_prefix}Token header missing required information. " \ + 'See Messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb new file mode 100644 index 00000000..07f00103 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test.rb @@ -0,0 +1,93 @@ +require_relative '../../multi_request_message_helper' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class TokenPayloadTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + include DaVinciCRDTestKit::TaggedRequestLoadHelper + include ClientURLs + + id :crd_v221_token_payload + title 'Authorization token payloads have required claims and valid signatures' + description %( + During this test, Inferno will verify that for each request the JWT payload is conformant to the + requirements in the [CDS hooks specification](https://cds-hooks.hl7.org/2026Jan/en/#trusting-cds-clients), + including the following: + - The `iss`, `aud`, `exp`, `iat`, and `jti` claims are required. + - `iss` must match the `issuer` from the **CRD JWT Issuer** input. + - `aud` must match the URL of the CDS Service endpoint being invoked. + - `exp` must represent a time in the future. + - `jti` must be a non-blank string that uniquely identifies this authentication JWT. + ) + + verifies_requirements 'cds-hooks_3.0.0-ballot@180', 'cds-hooks_3.0.0-ballot@181', 'cds-hooks_3.0.0-ballot@187', + 'cds-hooks_3.0.0-ballot@189', 'cds-hooks_3.0.0-ballot@190', 'cds-hooks_3.0.0-ballot@191', + 'cds-hooks_3.0.0-ballot@192', 'cds-hooks_3.0.0-ballot@196', 'cds-hooks_3.0.0-ballot@203' + + REQUIRED_CLAIMS = ['iss', 'aud', 'exp', 'iat', 'jti'].freeze + + def required_claims + REQUIRED_CLAIMS.dup + end + + # Replace the scheme+host of request.url with the configured external host + # so that aud validation works correctly when Inferno is behind a reverse proxy. + def public_hook_url(request) + hook_suffix = URI.parse(request.url).path.delete_prefix(URI.parse(inferno_base_url).path) + inferno_base_url + hook_suffix + end + + input :auth_tokens, + :auth_tokens_jwk_json, + :cds_jwt_iss + + run do + auth_tokens_list = JSON.parse(auth_tokens) + auth_tokens_jwk = JSON.parse(auth_tokens_jwk_json) + requests = load_hook_requests + skip_if auth_tokens_list.compact.empty?, 'No Authorization tokens produced from the previous tests.' + skip_if auth_tokens_jwk.compact.empty?, 'No Authorization token JWK produced from the previous test.' + + auth_tokens_jwk.each_with_index do |auth_token_jwk, index| + next unless auth_token_jwk.present? + + request = requests[index] + + begin + jwk = JSON.parse(auth_token_jwk).deep_symbolize_keys # NOTE: pre-verified json + + payload, = + JWT.decode( + auth_tokens_list[index], + JWT::JWK.import(jwk).public_key, + true, + algorithms: [jwk[:alg]], + exp_leeway: 60, + iss: cds_jwt_iss, + aud: public_hook_url(request), + verify_not_before: false, + verify_iat: false, + verify_jti: true, + verify_iss: true, + verify_aud: true + ) + rescue StandardError => e + add_request_message('error', "Token validation error: #{e.message}", index) + next + end + + missing_claims = required_claims - payload.keys + missing_claims_string = missing_claims.map { |claim| "`#{claim}`" }.join(', ') + + unless missing_claims.empty? + add_request_message('error', "JWT payload missing required claims: #{missing_claims_string}", index) + next + end + end + assert_no_error_messages("#{requests_with_errors_prefix}Token payload is missing required claims or " \ + 'does not have a valid signature. See Messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json b/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json new file mode 100644 index 00000000..83fc2b02 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json @@ -0,0 +1,198 @@ + +{ + "services": [ + { + "hook": "appointment-book", + "title": "Appointment Booking CDS Service", + "description": "A simulated CDS Service requesting a subset of the standard prefetches that is invoked when user of a CRD client books a future appointment for a patient", + "id": "appointment-book-subset", + "prefetch" : { + "pat": "Patient/{{context.patientId}}", + "enc": "Encounter/{{context.encounterId}}", + "cov": "Coverage?patient={{context.patientId}}&status=active", + "devReqs" : "DeviceRequest?_id={{context.appointments.entry.resource.basedOn.extension('http://hl7.org/fhir/StructureDefinition/alternate-reference').value.resolve().ofType(DeviceRequest).id}}", + "servReqs" : "ServiceRequest?_id={{context.appointments.entry.resource.basedOn.resolve().ofType(ServiceRequest).id}}", + "medReqs" : "MedicationRequest?_id={{context.appointments.entry.resource.basedOn.extension('http://hl7.org/fhir/StructureDefinition/alternate-reference').value.resolve().ofType(MedicationRequest).id}}", + "devs": "Device?_id={{%devReqs.entry.resource.code.resolve().id}}", + "meds": "Medication?_id={{%medReqs.entry.resource.medication.resolve().id}}", + "roles" : "PractitionerRole?_id={{%devReqs.entry.resource.performer.resolve().ofType(PractitionerRole).id|%medReqs.entry.resource.performer.resolve().ofType(PractitionerRole).id|%servReqs.entry.resource.performer.resolve().ofType(PractitionerRole).id}}", + "pracs" : "Practitioner?_id={{%roles.entry.resource.practitioner.resolve().id|%devReqs.entry.resource.performer.resolve().ofType(Practitioner).id|%medReqs.entry.resource.performer.resolve().ofType(Practitioner).id|%servReqs.entry.resource.performer.resolve().ofType(Practitioner).id}}", + "locs" : "Location?_id={{%roles.entry.resource.location.resolve().id|%enc.location.location.resolve().id|%servReqs.entry.resource.locationReference.resolve().ofType(Location).id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "encounter-start", + "title": "Encounter Start CDS Service", + "description": "A simulated CDS Service requesting a subset of the standard prefetches that is invoked when the user is initiating a new encounter.", + "id": "encounter-start-subset", + "prefetch" : { + "pat": "Patient/{{context.patientId}}", + "enc": "Encounter/{{context.encounterId}}", + "cov": "Coverage?patient={{context.patientId}}&status=active", + "roles" : "PractitionerRole?_id={{%enc.participant.individual.resolve().ofType(PractitionerRole).id}}", + "pracs" : "Practitioner?_id={{%roles.entry.resource.practitioner.resolve().id|%enc.participant.individual.resolve().ofType(Practitioner).id}}", + "orgs" : "Organization?_id={{%roles.entry.resource.organization.resolve().id}}", + "locs" : "Location?_id={{%roles.entry.resource.location.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "encounter-discharge", + "title": "Encounter Disharge CDS Service Example", + "description": "A simulated CDS Service requesting a subset of the standard prefetches that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.", + "id": "encounter-discharge-subset", + "prefetch" : { + "pat": "Patient/{{context.patientId}}", + "enc": "Encounter/{{context.encounterId}}", + "cov": "Coverage?patient={{context.patientId}}&status=active", + "roles" : "PractitionerRole?_id={{%enc.participant.individual.resolve().ofType(PractitionerRole).id}}", + "pracs" : "Practitioner?_id={{%roles.entry.resource.practitioner.resolve().id|%enc.participant.individual.resolve().ofType(Practitioner).id}}", + "orgs" : "Organization?_id={{%roles.entry.resource.organization.resolve().id}}", + "locs" : "Location?_id={{%roles.entry.resource.location.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "order-dispatch", + "title": "Order Dispatch CDS Service Example", + "description": "A simulated CDS Service requesting a subset of the standard prefetches that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer", + "id": "order-dispatch-subset", + "prefetch": { + "pat": "Patient/{{context.patientId}}", + "enc": "Encounter/{{context.encounterId}}", + "cov": "Coverage?patient={{context.patientId}}&status=active", + "comReqs": "CommunicationRequest?_id={{context.dispatchedOrders.resolve().ofType(CommunicationRequest).id}}", + "devReqs": "DeviceRequest?_id={{context.dispatchedOrders.resolve().ofType(DeviceRequest).id}}", + "medReqs": "MedicationRequest?_id={{context.dispatchedOrders.resolve().ofType(MedicationRequest).id}}", + "nutOrds": "NutritionOrder?_id={{context.dispatchedOrders.resolve().ofType(NutritionOrder).id}}", + "servReqs": "ServiceRequest?_id={{context.dispatchedOrders.resolve().ofType(ServiceRequest).id}}", + "visRxs": "VisionPrescription?_id={{context.dispatchedOrders.resolve().ofType(VisionPrescription).id}}", + "devs": "Device?_id={{%devReqs.entry.resource.code.resolve().id}}", + "meds": "Medication?_id={{%medReqs.entry.resource.medication.resolve().id}}", + "roles": "PractitionerRole?_id={{%comReqs.entry.resource.sender.resolve().ofType(PractitionerRole).id|%comReqs.entry.resource.recipient.resolve().ofType(PractitionerRole).id|%devReqs.entry.resource.performer.resolve().ofType(PractitionerRole).id|%medReqs.entry.resource.performer.resolve().ofType(PractitionerRole).id|%servReqs.entry.resource.performer.resolve().ofType(PractitionerRole).id}}", + "pracs": "Practitioner?_id={{%roles.entry.resource.practitioner.resolve().id|%comReqs.entry.resource.sender.resolve().ofType(Practitioner).id|%comReqs.entry.resource.recipient.resolve().ofType(Practitioner).id|%devReqs.entry.resource.performer.resolve().ofType(Practitioner).id|%medReqs.entry.resource.performer.resolve().ofType(Practitioner).id|%servReqs.entry.resource.performer.resolve().ofType(Practitioner).id}}", + "locs": "Location?_id={{%roles.entry.resource.location.resolve().id|%enc.location.location.resolve().id|%servReqs.entry.resource.locationReference.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "order-select", + "title": "Order Select CDS Service", + "description": "A simulated CDS Service requesting a subset of the standard prefetches that fires when a clinician selects one or more orders to place for a patient", + "id": "order-select-subset", + "prefetch": { + "pat": "Patient/{{context.patientId}}", + "enc": "Encounter/{{context.encounterId}}", + "cov": "Coverage?patient={{context.patientId}}&status=active", + "devs": "Device?_id={{context.draftOrders.entry.resource.ofType(DeviceRequest).code.resolve().id}}", + "meds": "Medication?_id={{context.draftOrders.entry.resource.ofType(MedicationRequest).medication.resolve().id}}", + "roles": "PractitionerRole?_id={{context.draftOrders.entry.resource.sender.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.recipient.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.performer.resolve().ofType(PractitionerRole).id}}", + "pracs": "Practitioner?_id={{%roles.entry.resource.practitioner.resolve().id|context.draftOrders.entry.resource.sender.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.recipient.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.performer.resolve().ofType(Practitioner).id}}", + "locs": "Location?_id={{%roles.entry.resource.location.resolve().id|%enc.location.location.resolve().id|context.draftOrders.entry.resource.locationReference.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "order-sign", + "title": "Order Sign CDS Service", + "description": "A simulated CDS Service requesting a subset of the standard prefetches that fires when a clinician is ready to sign one or more orders for a patient", + "id": "order-sign-subset", + "prefetch": { + "pat": "Patient/{{context.patientId}}", + "enc": "Encounter/{{context.encounterId}}", + "cov": "Coverage?patient={{context.patientId}}&status=active", + "devs": "Device?_id={{context.draftOrders.entry.resource.ofType(DeviceRequest).code.resolve().id}}", + "meds": "Medication?_id={{context.draftOrders.entry.resource.ofType(MedicationRequest).medication.resolve().id}}", + "roles": "PractitionerRole?_id={{context.draftOrders.entry.resource.sender.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.recipient.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.performer.resolve().ofType(PractitionerRole).id}}", + "pracs": "Practitioner?_id={{%roles.entry.resource.practitioner.resolve().id|context.draftOrders.entry.resource.sender.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.recipient.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.performer.resolve().ofType(Practitioner).id}}", + "locs": "Location?_id={{%roles.entry.resource.location.resolve().id|%enc.location.location.resolve().id|context.draftOrders.entry.resource.locationReference.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + } + ] +} diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json b/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json new file mode 100644 index 00000000..f6d93f10 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json @@ -0,0 +1,202 @@ + +{ + "services": [ + { + "hook": "appointment-book", + "title": "Appointment Booking CDS Service", + "description": "A simulated CDS Service that is invoked when user of a CRD client books a future appointment for a patient", + "id": "appointment-book-service", + "prefetch" : { + "patient": "Patient/{{context.patientId}}", + "encounter": "Encounter/{{context.encounterId}}", + "coverage": "Coverage?patient={{context.patientId}}&status=active", + "deviceRequests" : "DeviceRequest?_id={{context.appointments.entry.resource.basedOn.extension('http://hl7.org/fhir/StructureDefinition/alternate-reference').value.resolve().ofType(DeviceRequest).id}}", + "serviceRequests" : "ServiceRequest?_id={{context.appointments.entry.resource.basedOn.resolve().ofType(ServiceRequest).id}}", + "medicationRequests" : "MedicationRequest?_id={{context.appointments.entry.resource.basedOn.extension('http://hl7.org/fhir/StructureDefinition/alternate-reference').value.resolve().ofType(MedicationRequest).id}}", + "devices": "Device?_id={{%deviceRequests.entry.resource.code.resolve().id}}", + "medications": "Medication?_id={{%medicationRequests.entry.resource.medication.resolve().id}}", + "practitionerRoles" : "PractitionerRole?_id={{%encounter.participant.individual.resolve().ofType(PractitionerRole).id|context.appointments.entry.resource.participant.actor.resolve().ofType(PractitionerRole).id|%deviceRequests.entry.resource.performer.resolve().ofType(PractitionerRole).id|%deviceRequests.entry.resource.requester.resolve().ofType(PractitionerRole).id|%medicationRequests.entry.resource.performer.resolve().ofType(PractitionerRole).id|%medicationRequests.entry.resource.requester.resolve().ofType(PractitionerRole).id|%serviceRequests.entry.resource.performer.resolve().ofType(PractitionerRole).id|%serviceRequests.entry.resource.requester.resolve().ofType(PractitionerRole).id}}", + "practitioners" : "Practitioner?_id={{%practitionerRoles.entry.resource.practitioner.resolve().id|%encounter.participant.individual.resolve().ofType(Practitioner).id|context.appointments.entry.resource.participant.actor.resolve().ofType(Practitioner).id|%deviceRequests.entry.resource.performer.resolve().ofType(Practitioner).id|%deviceRequests.entry.resource.requester.resolve().ofType(Practitioner).id|%medicationRequests.entry.resource.performer.resolve().ofType(Practitioner).id|%medicationRequests.entry.resource.requester.resolve().ofType(Practitioner).id|%serviceRequests.entry.resource.performer.resolve().ofType(Practitioner).id|%serviceRequests.entry.resource.requester.resolve().ofType(Practitioner).id}}", + "organizations" : "Organization?_id={{%practitionerRoles.entry.resource.organization.resolve().id|%encounter.serviceProvider.resolve().ofType(Organization).id|%medicationRequests.entry.resource.dispenseRequest.performer.resolve().ofType(Organization).id|%serviceRequests.entry.resource.performer.resolve().ofType(Organization).id}}", + "locations" : "Location?_id={{%practitionerRoles.entry.resource.location.resolve().id|%encounter.location.location.resolve().id|context.appointments.entry.resource.participant.actor.resolve().ofType(Location).id|%serviceRequests.entry.resource.locationReference.resolve().ofType(Location).id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "encounter-start", + "title": "Encounter Start CDS Service", + "description": "A simulated CDS Service that is invoked when the user is initiating a new encounter.", + "id": "encounter-start-service", + "prefetch" : { + "patient": "Patient/{{context.patientId}}", + "encounter": "Encounter/{{context.encounterId}}", + "coverage": "Coverage?patient={{context.patientId}}&status=active", + "practitionerRoles" : "PractitionerRole?_id={{%encounter.participant.individual.resolve().ofType(PractitionerRole).id}}", + "practitioners" : "Practitioner?_id={{%practitionerRoles.entry.resource.practitioner.resolve().id|%encounter.participant.individual.resolve().ofType(Practitioner).id}}", + "organizations" : "Organization?_id={{%practitionerRoles.entry.resource.organization.resolve().id|%encounter.serviceProvider.resolve().ofType(Organization).id}}", + "locations" : "Location?_id={{%practitionerRoles.entry.resource.location.resolve().id|%encounter.location.location.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "encounter-discharge", + "title": "Encounter Disharge CDS Service Example", + "description": "A simulated CDS Service that is invoked when the user is performing the discharge process for an encounter - typically an inpatient encounter.", + "id": "encounter-discharge-service", + "prefetch" : { + "patient": "Patient/{{context.patientId}}", + "encounter": "Encounter/{{context.encounterId}}", + "coverage": "Coverage?patient={{context.patientId}}&status=active", + "practitionerRoles" : "PractitionerRole?_id={{%encounter.participant.individual.resolve().ofType(PractitionerRole).id}}", + "practitioners" : "Practitioner?_id={{%practitionerRoles.entry.resource.practitioner.resolve().id|%encounter.participant.individual.resolve().ofType(Practitioner).id}}", + "organizations" : "Organization?_id={{%practitionerRoles.entry.resource.organization.resolve().id|%encounter.serviceProvider.resolve().ofType(Organization).id}}", + "locations" : "Location?_id={{%practitionerRoles.entry.resource.location.resolve().id|%encounter.location.location.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "order-dispatch", + "title": "Order Dispatch CDS Service Example", + "description": "A simulated CDS Service that fires when a practitioner is selecting a candidate performer for a pre-existing order that was not tied to a specific performer", + "id": "order-dispatch-service", + "prefetch": { + "patient": "Patient/{{context.patientId}}", + "encounter": "Encounter/{{context.encounterId}}", + "coverage": "Coverage?patient={{context.patientId}}&status=active", + "communicationRequests": "CommunicationRequest?_id={{context.dispatchedOrders.resolve().ofType(CommunicationRequest).id}}", + "deviceRequests": "DeviceRequest?_id={{context.dispatchedOrders.resolve().ofType(DeviceRequest).id}}", + "medicationRequests": "MedicationRequest?_id={{context.dispatchedOrders.resolve().ofType(MedicationRequest).id}}", + "nutritionOrders": "NutritionOrder?_id={{context.dispatchedOrders.resolve().ofType(NutritionOrder).id}}", + "serviceRequests": "ServiceRequest?_id={{context.dispatchedOrders.resolve().ofType(ServiceRequest).id}}", + "visionPrescriptions": "VisionPrescription?_id={{context.dispatchedOrders.resolve().ofType(VisionPrescription).id}}", + "devices": "Device?_id={{%deviceRequests.entry.resource.code.resolve().id}}", + "medications": "Medication?_id={{%medicationRequests.entry.resource.medication.resolve().id}}", + "practitionerRoles": "PractitionerRole?_id={{%encounter.participant.individual.resolve().ofType(PractitionerRole).id|%communicationRequests.entry.resource.sender.resolve().ofType(PractitionerRole).id|%communicationRequests.entry.resource.recipient.resolve().ofType(PractitionerRole).id|%communicationRequests.entry.resource.requester.resolve().ofType(PractitionerRole).id|%deviceRequests.entry.resource.performer.resolve().ofType(PractitionerRole).id|%deviceRequests.entry.resource.requester.resolve().ofType(PractitionerRole).id|%medicationRequests.entry.resource.performer.resolve().ofType(PractitionerRole).id|%medicationRequests.entry.resource.requester.resolve().ofType(PractitionerRole).id|%serviceRequests.entry.resource.performer.resolve().ofType(PractitionerRole).id|%serviceRequests.entry.resource.requester.resolve().ofType(PractitionerRole).id|%nutritionOrders.entry.resource.orderer.resolve().ofType(PractitionerRole).id|%visionPrescriptions.entry.resource.prescriber.resolve().ofType(PractitionerRole).id}}", + "practitioners": "Practitioner?_id={{%practitionerRoles.entry.resource.practitioner.resolve().id|%encounter.participant.individual.resolve().ofType(Practitioner).id|%communicationRequests.entry.resource.sender.resolve().ofType(Practitioner).id|%communicationRequests.entry.resource.recipient.resolve().ofType(Practitioner).id|%communicationRequests.entry.resource.requester.resolve().ofType(Practitioner).id|%deviceRequests.entry.resource.performer.resolve().ofType(Practitioner).id|%deviceRequests.entry.resource.requester.resolve().ofType(Practitioner).id|%medicationRequests.entry.resource.performer.resolve().ofType(Practitioner).id|%medicationRequests.entry.resource.requester.resolve().ofType(Practitioner).id|%serviceRequests.entry.resource.performer.resolve().ofType(Practitioner).id|%serviceRequests.entry.resource.requester.resolve().ofType(Practitioner).id|%nutritionOrders.entry.resource.orderer.resolve().ofType(Practitioner).id|%visionPrescriptions.entry.resource.prescriber.resolve().ofType(Practitioner).id}}", + "organizations": "Organization?_id={{%practitionerRoles.entry.resource.organization.resolve().id|%encounter.serviceProvider.resolve().ofType(Organization).id|%communicationRequests.entry.resource.recipient.resolve().ofType(Organization).id|%communicationRequests.entry.resource.sender.resolve().ofType(Organization).id|%medicationRequests.entry.resource.dispenseRequest.performer.resolve().id|%serviceRequests.entry.resource.performer.resolve().ofType(Organization).id}}", + "locations": "Location?_id={{%practitionerRoles.entry.resource.location.resolve().id|%encounter.location.location.resolve().id|%serviceRequests.entry.resource.locationReference.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "order-select", + "title": "Order Select CDS Service", + "description": "A simulated CDS Service that fires when a clinician selects one or more orders to place for a patient", + "id": "order-select-service", + "prefetch": { + "patient": "Patient/{{context.patientId}}", + "encounter": "Encounter/{{context.encounterId}}", + "coverage": "Coverage?patient={{context.patientId}}&status=active", + "devices": "Device?_id={{context.draftOrders.entry.resource.ofType(DeviceRequest).code.resolve().id}}", + "medications": "Medication?_id={{context.draftOrders.entry.resource.ofType(MedicationRequest).medication.resolve().id}}", + "practitionerRoles": "PractitionerRole?_id={{%encounter.participant.individual.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.sender.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.recipient.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.requester.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.performer.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.orderer.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.prescriber.resolve().ofType(PractitionerRole).id}}", + "practitioners": "Practitioner?_id={{%practitionerRoles.entry.resource.practitioner.resolve().id|%encounter.participant.individual.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.sender.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.recipient.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.requester.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.performer.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.orderer.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.prescriber.resolve().ofType(Practitioner).id}}", + "organizations": "Organization?_id={{%practitionerRoles.entry.resource.organization.resolve().id|%encounter.serviceProvider.resolve().ofType(Organization).id|context.draftOrders.entry.resource.dispenseRequest.performer.resolve().id|context.draftOrders.entry.resource.sender.resolve().ofType(Organization).id|context.draftOrders.entry.resource.recipient.resolve().ofType(Organization).id|context.draftOrders.entry.resource.performer.resolve().ofType(Organization).id}}", + "locations": "Location?_id={{%practitionerRoles.entry.resource.location.resolve().id|%encounter.location.location.resolve().id|context.draftOrders.entry.resource.locationReference.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + }, + { + "hook": "order-sign", + "title": "Order Sign CDS Service", + "description": "A simulated CDS Service that fires when a clinician is ready to sign one or more orders for a patient", + "id": "order-sign-service", + "prefetch": { + "patient": "Patient/{{context.patientId}}", + "encounter": "Encounter/{{context.encounterId}}", + "coverage": "Coverage?patient={{context.patientId}}&status=active", + "devices": "Device?_id={{context.draftOrders.entry.resource.ofType(DeviceRequest).code.resolve().id}}", + "medications": "Medication?_id={{context.draftOrders.entry.resource.ofType(MedicationRequest).medication.resolve().id}}", + "practitionerRoles": "PractitionerRole?_id={{%encounter.participant.individual.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.sender.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.recipient.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.requester.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.performer.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.orderer.resolve().ofType(PractitionerRole).id|context.draftOrders.entry.resource.prescriber.resolve().ofType(PractitionerRole).id}}", + "practitioners": "Practitioner?_id={{%practitionerRoles.entry.resource.practitioner.resolve().id|%encounter.participant.individual.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.sender.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.recipient.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.requester.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.performer.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.orderer.resolve().ofType(Practitioner).id|context.draftOrders.entry.resource.prescriber.resolve().ofType(Practitioner).id}}", + "organizations": "Organization?_id={{%practitionerRoles.entry.resource.organization.resolve().id|%encounter.serviceProvider.resolve().ofType(Organization).id|context.draftOrders.entry.resource.dispenseRequest.performer.resolve().id|context.draftOrders.entry.resource.sender.resolve().ofType(Organization).id|context.draftOrders.entry.resource.recipient.resolve().ofType(Organization).id|context.draftOrders.entry.resource.performer.resolve().ofType(Organization).id}}", + "locations": "Location?_id={{%practitionerRoles.entry.resource.location.resolve().id|%encounter.location.location.resolve().id|context.draftOrders.entry.resource.locationReference.resolve().id}}" + }, + "extension" : { + "davinci-crd.version" : [ + "2.2", + "2.0" + ], + "davinci-crd.configuration-options" : [ + { + "code" : "coverage-info", + "type" : "boolean", + "name" : "Coverage Information", + "description" : "Information related to the patient's coverage, including whether a service is covered, requires prior authorization, is approved without seeking prior authorization, and/or requires additional documentation or data collection", + "default" : true + } + ] + } + } + ] +} diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb new file mode 100644 index 00000000..6ba65509 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_appointment_book_group.rb @@ -0,0 +1,102 @@ +require_relative 'invocation/appointment_book_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_conformance_test' +require_relative 'verify_request/hook_request_requested_version_test' +require_relative 'verify_request/hook_request_prefetch_profiles_test' +require_relative 'verify_request/hook_request_prefetch_complete_test' +require_relative 'verify_request/hook_request_granted_scopes_test' +require_relative 'verify_request/hook_request_secured_transport_test' +require_relative 'verify_request/hook_request_coverage_verification_test' +require_relative 'verify_request/hook_request_data_fetch_verification_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' +require_relative 'verify_response/hook_response_support_coverage_information_test' + +module DaVinciCRDTestKit + module V221 + class ClientAppointmentBookGroup < Inferno::TestGroup + title 'appointment-book' + id :crd_v221_client_appointment_book + description <<~DESCRIPTION + The [appointment-book](https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html) hook is invoked when + the user is scheduling one or more future encounters/visits for the patient. + The CRD IG places [additional constraints on the use of the appintment-book hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book), + including the profiles that resources in each request must conform to. + DESCRIPTION + run_as_group + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A' + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :appointment_book_auth_token_headers_json }, + auth_tokens: { name: :appointment_book_auth_tokens }, + auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json }, + client_access_token: { name: :appointment_book_client_access_token }, + client_fhir_server: { name: :appointment_book_client_fhir_server }, + crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json }, + custom_response_template: { name: :appointment_book_custom_response_template }, + selected_response_types: { name: :appointment_book_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :appointment_book_auth_token_headers_json }, + auth_token_payloads_json: { name: :appointment_book_auth_token_payloads_json }, + auth_tokens: { name: :appointment_book_auth_tokens }, + auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json }, + client_access_token: { name: :appointment_book_client_access_token }, + client_fhir_server: { name: :appointment_book_client_fhir_server }, + crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json } + }, + options: { + hook_name: 'appointment-book' + } + ) + + group do + title 'Interaction' + test from: :crd_v221_appointment_book_request + end + + group do + title 'Authorization' + test from: :crd_v221_decode_auth_token + test from: :crd_v221_retrieve_jwks + test from: :crd_v221_token_header + test from: :crd_v221_token_payload + end + + group do + title 'Requests' + test from: :crd_v221_hook_request_conformance do + verifies_requirements(*HookRequestConformanceTest.verifies_requirements, + 'hl7.fhir.us.davinci-crd_2.2.1@hook-24', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-1', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-2') + end + test from: :crd_v221_hook_request_requested_version + test from: :crd_v221_hook_request_prefetch_profiles + test from: :crd_v221_hook_request_prefetch_complete + test from: :crd_v221_hook_request_coverage_verification + test from: :crd_v221_hook_data_fetch_verification + test from: :crd_v221_hook_request_granted_scopes + test from: :crd_v221_hook_request_secured_transport + end + + group do + title 'Response Handling' + + test from: :crd_v221_inferno_response_validation + test from: :crd_v221_card_display_attest_test + test from: :crd_v221_client_hook_response_support_coverage_information do + title 'Client supports the Coverage Information response type on the appointment-book hook' + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-26' + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb new file mode 100644 index 00000000..b811e44c --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_cross_hook_group.rb @@ -0,0 +1,28 @@ +require_relative 'cross_hook/client_card_must_support_coverage_information_test' +require_relative 'cross_hook/client_location_address_propagation_test' +require_relative 'cross_hook/client_fhirpath_collection_as_comma_delimited_string_test' +require_relative 'cross_hook/client_hook_instances_unique_test' +require_relative 'cross_hook/client_prefetch_complete_and_subset_test' + +module DaVinciCRDTestKit + module V221 + class ClientCrossHookGroup < Inferno::TestGroup + title 'Cross Hook' + id :crd_v221_client_cross_hook + description <<~DESCRIPTION + This group checks CRD requirements that pertain across all hooks + rather than a specific one. + + These tests must be run after the tests in the "Hooks" group are run. + DESCRIPTION + + run_as_group + + test from: :crd_v221_client_card_must_support_coverage_information + test from: :crd_v221_client_location_address_propagation + test from: :crd_v221_client_fhir_path_collection_as_comma_delimited_string + test from: :crd_v221_client_hook_instances_unique + test from: :crd_v221_client_prefetch_complete_and_subset + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb new file mode 100644 index 00000000..9fb5e3a3 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_discharge_group.rb @@ -0,0 +1,96 @@ +require_relative 'invocation/encounter_discharge_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_conformance_test' +require_relative 'verify_request/hook_request_requested_version_test' +require_relative 'verify_request/hook_request_prefetch_profiles_test' +require_relative 'verify_request/hook_request_prefetch_complete_test' +require_relative 'verify_request/hook_request_granted_scopes_test' +require_relative 'verify_request/hook_request_secured_transport_test' +require_relative 'verify_request/hook_request_coverage_verification_test' +require_relative 'verify_request/hook_request_data_fetch_verification_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V221 + class ClientEncounterDischargeGroup < Inferno::TestGroup + title 'encounter-discharge' + id :crd_v221_client_encounter_discharge + description <<~DESCRIPTION + The [encounter-discharge](https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html) hook is + invoked when the user is performing the discharge process for an encounter where + the notion of 'discharge' is relevant - typically an inpatient encounter. + The CRD IG places [additional constraints on the use of the encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge), + including the profiles that resources in each request must conform to. + DESCRIPTION + run_as_group + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A' + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json }, + auth_tokens: { name: :encounter_discharge_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_discharge_client_access_token }, + client_fhir_server: { name: :encounter_discharge_client_fhir_server }, + crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json }, + custom_response_template: { name: :encounter_discharge_custom_response_template }, + selected_response_types: { name: :encounter_discharge_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json }, + auth_token_payloads_json: { name: :encounter_discharge_auth_token_payloads_json }, + auth_tokens: { name: :encounter_discharge_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_discharge_client_access_token }, + client_fhir_server: { name: :encounter_discharge_client_fhir_server }, + crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json } + }, + options: { + hook_name: 'encounter-discharge' + } + ) + + group do + title 'Interaction' + test from: :crd_v221_encounter_discharge_request + end + + group do + title 'Authorization' + test from: :crd_v221_decode_auth_token + test from: :crd_v221_retrieve_jwks + test from: :crd_v221_token_header + test from: :crd_v221_token_payload + end + + group do + title 'Requests' + test from: :crd_v221_hook_request_conformance do + verifies_requirements(*HookRequestConformanceTest.verifies_requirements, + 'hl7.fhir.us.davinci-crd_2.2.1@hook-27') + end + test from: :crd_v221_hook_request_requested_version + test from: :crd_v221_hook_request_prefetch_profiles + test from: :crd_v221_hook_request_prefetch_complete + test from: :crd_v221_hook_request_coverage_verification + test from: :crd_v221_hook_data_fetch_verification + test from: :crd_v221_hook_request_granted_scopes + test from: :crd_v221_hook_request_secured_transport + end + + group do + title 'Response Handling' + + test from: :crd_v221_inferno_response_validation + test from: :crd_v221_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb new file mode 100644 index 00000000..0383e4b8 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_encounter_start_group.rb @@ -0,0 +1,95 @@ +require_relative 'invocation/encounter_start_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_conformance_test' +require_relative 'verify_request/hook_request_requested_version_test' +require_relative 'verify_request/hook_request_prefetch_profiles_test' +require_relative 'verify_request/hook_request_prefetch_complete_test' +require_relative 'verify_request/hook_request_granted_scopes_test' +require_relative 'verify_request/hook_request_secured_transport_test' +require_relative 'verify_request/hook_request_coverage_verification_test' +require_relative 'verify_request/hook_request_data_fetch_verification_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V221 + class ClientEncounterStartGroup < Inferno::TestGroup + title 'encounter-start' + id :crd_v221_client_encounter_start + description <<~DESCRIPTION + The [encounter-start](https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html) hook is invoked + when the user is initiating a new encounter. The CRD IG places [additional constraints on the use + of the encounter-start hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-start), + including the profiles that resources in each request must conform to. + DESCRIPTION + run_as_group + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A' + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :encounter_start_auth_token_headers_json }, + auth_tokens: { name: :encounter_start_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_start_client_access_token }, + client_fhir_server: { name: :encounter_start_client_fhir_server }, + crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json }, + custom_response_template: { name: :encounter_start_custom_response_template }, + selected_response_types: { name: :encounter_start_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :encounter_start_auth_token_headers_json }, + auth_token_payloads_json: { name: :encounter_start_auth_token_payloads_json }, + auth_tokens: { name: :encounter_start_auth_tokens }, + auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json }, + client_access_token: { name: :encounter_start_client_access_token }, + client_fhir_server: { name: :encounter_start_client_fhir_server }, + crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json } + }, + options: { + hook_name: 'encounter-start' + } + ) + + group do + title 'Interaction' + test from: :crd_v221_encounter_start_request + end + + group do + title 'Authorization' + test from: :crd_v221_decode_auth_token + test from: :crd_v221_retrieve_jwks + test from: :crd_v221_token_header + test from: :crd_v221_token_payload + end + + group do + title 'Requests' + test from: :crd_v221_hook_request_conformance do + verifies_requirements(*HookRequestConformanceTest.verifies_requirements, + 'hl7.fhir.us.davinci-crd_2.2.1@hook-29') + end + test from: :crd_v221_hook_request_requested_version + test from: :crd_v221_hook_request_prefetch_profiles + test from: :crd_v221_hook_request_prefetch_complete + test from: :crd_v221_hook_request_coverage_verification + test from: :crd_v221_hook_data_fetch_verification + test from: :crd_v221_hook_request_granted_scopes + test from: :crd_v221_hook_request_secured_transport + end + + group do + title 'Response Handling' + + test from: :crd_v221_inferno_response_validation + test from: :crd_v221_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb new file mode 100644 index 00000000..499e1169 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_fhir_api_group.rb @@ -0,0 +1,88 @@ +require 'us_core_test_kit' +require_relative '../crd_client_options' +require_relative 'api/client_crd_update_verification_group' + +module DaVinciCRDTestKit + module V221 + class ClientFHIRAPIGroup < Inferno::TestGroup + title 'FHIR API' + description <<~DESCRIPTION + CRD client systems are responsible for returning data requested by the CRD server needed to provide decision support. + This group contains tests that verify the required 'server' FHIR API capabilities. + These 'server' capabilities are based on the US Core Server Capability Statement for the US Core version chosen + when initiating the test session: + - [US Core 3.1.1 Server Capability Statement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html) + - [US Core 6.1.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html) + - [US Core 7.0.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html) + DESCRIPTION + id :crd_v221_client_fhir_api + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@conf-1' + + input_instructions %( + The location of and an access token for the client's FHIR server are expected to come in + the CDS Hooks request. The following information will be auto-populated from + the body of the latest hook invocation made during this session: + - The URL of the CRD client FHIR server from the `fhirServer` field. + - The OAuth Access Token from the `fhirAuthorization.access_token` field. + + If that access token will not be long-lived enough to perform + a full test of the US Core FHIR API, provide an updated token and/or refresh + token with Client ID and token endpoint so that Inferno can perform these tests. + ) + + input :url, + title: 'FHIR Endpoint', + description: %( + URL of the CRD client FHIR server. + ), + locked: true + input :smart_auth_info, + title: 'OAuth Credentials', + type: 'auth_info' + + group from: :'us_core_v311-us_core_v311_fhir_api' do + description %( + This test group verifies that the CRD client can respond to queries as required by the + [US Core 3.1.1 Server Capability Statement](http://hl7.org/fhir/us/core/STU3.1.1/CapabilityStatement-us-core-server.html). + + Note: these tests do not look for crd-specific data and so only verify conformance against + US Core profiles. The hook tests take the CRD-specific profiles into account. + ) + required_suite_options CRDClientOptions::US_CORE_3_REQUIREMENT + + group from: :crd_v221_client_update_verification, + id: :crd_v221_us_core_311_client_update_verification + reorder :crd_v221_us_core_311_client_update_verification, 1 + end + group from: :'us_core_v610-us_core_v610_fhir_api' do + description %( + This test group verifies that the CRD client can respond to queries as required by the + [US Core 6.1.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html). + + Note: these tests do not look for crd-specific data and so only verify conformance against + US Core profiles. The hook tests take the CRD-specific profiles into account. + ) + required_suite_options CRDClientOptions::US_CORE_6_REQUIREMENT + + group from: :crd_v221_client_update_verification, + id: :crd_v221_us_core_610_client_update_verification + reorder :crd_v221_us_core_610_client_update_verification, 1 + end + group from: :'us_core_v700-us_core_v700_fhir_api' do + description %( + This test group verifies that the CRD client can respond to queries as required by the + [US Core 7.0.0 Server Capability Statement](http://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html). + + Note: these tests do not look for crd-specific data and so only verify conformance against + US Core profiles. The hook tests take the CRD-specific profiles into account. + ) + required_suite_options CRDClientOptions::US_CORE_7_REQUIREMENT + + group from: :crd_v221_client_update_verification, + id: :crd_v221_us_core_700_client_update_verification + reorder :crd_v221_us_core_700_client_update_verification, 1 + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb new file mode 100644 index 00000000..7362878f --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_hooks_group.rb @@ -0,0 +1,64 @@ +require_relative 'client_appointment_book_group' +require_relative 'client_encounter_discharge_group' +require_relative 'client_encounter_start_group' +require_relative 'client_order_dispatch_group' +require_relative 'client_order_select_group' +require_relative 'client_order_sign_group' + +module DaVinciCRDTestKit + module V221 + class ClientHooksGroup < Inferno::TestGroup + title 'Hooks' + description <<~DESCRIPTION + This group contains sub-groups which each verify the ability of the client to make and react to responses from + one of the [six hooks described in the CRD IG](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html): + * [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book) + * [encounter-start](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-start) + * [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge) + * [order-select](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-select) + * [order-dispatch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch) + * [order-sign](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-sign) + + Each hook-specific group follows the same pattern: + 1. Allow the client to make hook invocations for the tested hook, waiting until the tester indicates + that all desired requests have been made, then + 2. Check the requests and their associated responses for conformance to CRD and CDS Hooks requirements. + Additionally, ask the tester to confirm that the responses were displayed appropriately by the client. + + The CRD IG does not require support for any specific hook, so all the hook-specific sub-groups are + optional. A conformant CRD client will have implemented at least one hook and will run and pass + the hook-specific groups corresponding to each hook that it implements. + DESCRIPTION + id :crd_v221_client_hooks + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + + input_order :cds_jwt_iss, :cds_jwk_set + + group from: :crd_v221_client_appointment_book, + optional: true + + group from: :crd_v221_client_encounter_start, + optional: true + + group from: :crd_v221_client_encounter_discharge, + optional: true + + group from: :crd_v221_client_order_select, + optional: true + + group from: :crd_v221_client_order_dispatch, + optional: true + + group from: :crd_v221_client_order_sign, + optional: true + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb new file mode 100644 index 00000000..aae9fcc4 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_long_running_hook_group.rb @@ -0,0 +1,32 @@ +require_relative 'long_running/client_long_running_receive_request_test' +require_relative 'long_running/client_skip_long_running_attestation_test' + +module DaVinciCRDTestKit + module V221 + class ClientLongRunningHookGroup < Inferno::TestGroup + title 'Long-running Hook Request' + id :crd_v221_client_long_running_hook + description <<~DESCRIPTION + When a hook invocation runs long, the CRD IG requires systems to provide + users with a way to bypass the hook and continue their workflow. + + Hook requests made during these tests will not be checked for conformance + or included in the cross-hook analyses around must support and other coverage requirements. + DESCRIPTION + + run_as_group + + input_order :cds_jwt_iss + + config( + options: { + hook_name: ANY_HOOK_TAG, + crd_test_group: LONG_RUNNING_GROUP_TAG + } + ) + + test from: :crd_v221_client_long_running_receive_request + test from: :crd_v221_client_skip_long_running_attestation_test + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb new file mode 100644 index 00000000..34769a2b --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_order_dispatch_group.rb @@ -0,0 +1,101 @@ +require_relative 'invocation/order_dispatch_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_conformance_test' +require_relative 'verify_request/hook_request_requested_version_test' +require_relative 'verify_request/hook_request_prefetch_profiles_test' +require_relative 'verify_request/hook_request_prefetch_complete_test' +require_relative 'verify_request/hook_request_granted_scopes_test' +require_relative 'verify_request/hook_request_secured_transport_test' +require_relative 'verify_request/hook_request_coverage_verification_test' +require_relative 'verify_request/hook_request_data_fetch_verification_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' +require_relative 'verify_response/hook_response_support_coverage_information_test' + +module DaVinciCRDTestKit + module V221 + class ClientOrderDispatchGroup < Inferno::TestGroup + title 'order-dispatch' + id :crd_v221_client_order_dispatch + description <<~DESCRIPTION + The [order-dispatch](https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html) hook fires when a + practitioner is selecting a candidate performer for a pre-existing order + that was not tied to a specific performer. The CRD IG places [additional constraints on the use + of the order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch), + including the profiles that resources in each request must conform to. + DESCRIPTION + run_as_group + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-B' + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json }, + auth_tokens: { name: :order_dispatch_auth_tokens }, + auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json }, + client_access_token: { name: :order_dispatch_client_access_token }, + client_fhir_server: { name: :order_dispatch_client_fhir_server }, + crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json }, + custom_response_template: { name: :order_dispatch_custom_response_template }, + selected_response_types: { name: :order_dispatch_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json }, + auth_token_payloads_json: { name: :order_dispatch_auth_token_payloads_json }, + auth_tokens: { name: :order_dispatch_auth_tokens }, + auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json }, + client_access_token: { name: :order_dispatch_client_access_token }, + client_fhir_server: { name: :order_dispatch_client_fhir_server }, + crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json } + }, + options: { + hook_name: 'order-dispatch' + } + ) + + group do + title 'Interaction' + test from: :crd_v221_order_dispatch_request + end + + group do + title 'Authorization' + test from: :crd_v221_decode_auth_token + test from: :crd_v221_retrieve_jwks + test from: :crd_v221_token_header + test from: :crd_v221_token_payload + end + + group do + title 'Requests' + test from: :crd_v221_hook_request_conformance do + verifies_requirements(*HookRequestConformanceTest.verifies_requirements, + 'hl7.fhir.us.davinci-crd_2.2.1@hook-31') + end + test from: :crd_v221_hook_request_requested_version + test from: :crd_v221_hook_request_prefetch_profiles + test from: :crd_v221_hook_request_prefetch_complete + test from: :crd_v221_hook_request_coverage_verification + test from: :crd_v221_hook_data_fetch_verification + test from: :crd_v221_hook_request_granted_scopes + test from: :crd_v221_hook_request_secured_transport + end + + group do + title 'Response Handling' + + test from: :crd_v221_inferno_response_validation + test from: :crd_v221_card_display_attest_test + test from: :crd_v221_client_hook_response_support_coverage_information do + title 'Client supports the Coverage Information response type on the order-dispatch hook' + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-33' + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb new file mode 100644 index 00000000..4fa17930 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_order_select_group.rb @@ -0,0 +1,102 @@ +require_relative 'invocation/order_select_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_conformance_test' +require_relative 'verify_request/hook_request_requested_version_test' +require_relative 'verify_request/hook_request_prefetch_profiles_test' +require_relative 'verify_request/hook_request_prefetch_complete_test' +require_relative 'verify_request/hook_request_granted_scopes_test' +require_relative 'verify_request/hook_request_secured_transport_test' +require_relative 'verify_request/hook_request_coverage_verification_test' +require_relative 'verify_request/hook_request_data_fetch_verification_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' + +module DaVinciCRDTestKit + module V221 + class ClientOrderSelectGroup < Inferno::TestGroup + title 'order-select' + id :crd_v221_client_order_select + description <<~DESCRIPTION + The [order-select](https://cds-hooks.hl7.org/hooks/STU1/order-select.html) hook fires + when a clinician selects one or more orders to place for a patient (including orders for medications, + procedures, labs and other orders). The CRD IG places [additional constraints on the use + of the order-select hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-select), + including the profiles that resources in each request must conform to. + DESCRIPTION + run_as_group + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-B' + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :order_select_auth_token_headers_json }, + auth_tokens: { name: :order_select_auth_tokens }, + auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json }, + client_access_token: { name: :order_select_client_access_token }, + client_fhir_server: { name: :order_select_client_fhir_server }, + crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json }, + custom_response_template: { name: :order_select_custom_response_template }, + selected_response_types: { name: :order_select_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :order_select_auth_token_headers_json }, + auth_token_payloads_json: { name: :order_select_auth_token_payloads_json }, + auth_tokens: { name: :order_select_auth_tokens }, + auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json }, + client_access_token: { name: :order_select_client_access_token }, + client_fhir_server: { name: :order_select_client_fhir_server }, + crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json } + }, + options: { + hook_name: 'order-select' + } + ) + + group do + title 'Interaction' + test from: :crd_v221_order_select_request + end + + group do + title 'Authorization' + test from: :crd_v221_decode_auth_token + test from: :crd_v221_retrieve_jwks + test from: :crd_v221_token_header + test from: :crd_v221_token_payload + end + + group do + title 'Requests' + test from: :crd_v221_hook_request_conformance do + verifies_requirements(*HookRequestConformanceTest.verifies_requirements, + 'hl7.fhir.us.davinci-crd_2.2.1@hook-35', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-3', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-6', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-9', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-10', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-11', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-12') + end + test from: :crd_v221_hook_request_requested_version + test from: :crd_v221_hook_request_prefetch_profiles + test from: :crd_v221_hook_request_prefetch_complete + test from: :crd_v221_hook_request_coverage_verification + test from: :crd_v221_hook_data_fetch_verification + test from: :crd_v221_hook_request_granted_scopes + test from: :crd_v221_hook_request_secured_transport + end + + group do + title 'Response Handling' + + test from: :crd_v221_inferno_response_validation + test from: :crd_v221_card_display_attest_test + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb new file mode 100644 index 00000000..a6d2988e --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_order_sign_group.rb @@ -0,0 +1,107 @@ +require_relative 'invocation/order_sign_receive_request_test' +require_relative 'auth/decode_auth_token_test' +require_relative 'auth/retrieve_jwks_test' +require_relative 'auth/token_header_test' +require_relative 'auth/token_payload_test' +require_relative 'verify_request/hook_request_conformance_test' +require_relative 'verify_request/hook_request_requested_version_test' +require_relative 'verify_request/hook_request_prefetch_profiles_test' +require_relative 'verify_request/hook_request_prefetch_complete_test' +require_relative 'verify_request/hook_request_granted_scopes_test' +require_relative 'verify_request/hook_request_secured_transport_test' +require_relative 'verify_request/hook_request_coverage_verification_test' +require_relative 'verify_request/hook_request_data_fetch_verification_test' +require_relative 'verify_response/inferno_response_validation' +require_relative 'verify_response/client_display_cards_attest' +require_relative 'verify_response/hook_response_support_coverage_information_test' + +module DaVinciCRDTestKit + module V221 + class ClientOrderSignGroup < Inferno::TestGroup + title 'order-sign' + id :crd_v221_client_order_sign + description <<~DESCRIPTION + The [order-sign](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html) hook fires + when a clinician is ready to sign one or more orders for a patient (including orders + for medications, procedures, labs and other orders). The CRD IG places [additional constraints on the use + of the order-sign hook](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-sign), + including the profiles that resources in each request must conform to. + DESCRIPTION + run_as_group + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-2-B' + + input_order :cds_jwt_iss, :cds_jwk_set + + config( + inputs: { + auth_token_headers_json: { name: :order_sign_auth_token_headers_json }, + auth_tokens: { name: :order_sign_auth_tokens }, + auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json }, + client_access_token: { name: :order_sign_client_access_token }, + client_fhir_server: { name: :order_sign_client_fhir_server }, + crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json }, + custom_response_template: { name: :order_sign_custom_response_template }, + selected_response_types: { name: :order_sign_selected_response_types } + }, + outputs: { + auth_token_headers_json: { name: :order_sign_auth_token_headers_json }, + auth_token_payloads_json: { name: :order_sign_auth_token_payloads_json }, + auth_tokens: { name: :order_sign_auth_tokens }, + auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json }, + client_access_token: { name: :order_sign_client_access_token }, + client_fhir_server: { name: :order_sign_client_fhir_server }, + crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json } + }, + options: { + hook_name: 'order-sign' + } + ) + + group do + title 'Interaction' + test from: :crd_v221_order_sign_request + end + + group do + title 'Authorization' + test from: :crd_v221_decode_auth_token + test from: :crd_v221_retrieve_jwks + test from: :crd_v221_token_header + test from: :crd_v221_token_payload + end + + group do + title 'Requests' + test from: :crd_v221_hook_request_conformance do + verifies_requirements(*HookRequestConformanceTest.verifies_requirements, + 'hl7.fhir.us.davinci-crd_2.2.1@hook-37', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-3', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-6', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-9', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-10', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-11', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-12') + end + test from: :crd_v221_hook_request_requested_version + test from: :crd_v221_hook_request_prefetch_profiles + test from: :crd_v221_hook_request_prefetch_complete + test from: :crd_v221_hook_request_coverage_verification + test from: :crd_v221_hook_data_fetch_verification + test from: :crd_v221_hook_request_granted_scopes + test from: :crd_v221_hook_request_secured_transport + end + + group do + title 'Response Handling' + + test from: :crd_v221_inferno_response_validation + test from: :crd_v221_card_display_attest_test + test from: :crd_v221_client_hook_response_support_coverage_information do + title 'Client supports the Coverage Information response type on the order-sign hook' + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-39' + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb new file mode 100644 index 00000000..2d5800bc --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_registration_group.rb @@ -0,0 +1,27 @@ +require_relative 'registration/client_registration_verification_test' +require_relative 'registration/client_service_registration_attestation_test' + +module DaVinciCRDTestKit + module V221 + class CRDClientRegistrationGroup < Inferno::TestGroup + id :crd_v221_client_registration + title 'Registration' + description %( + Before hook invocations can be made, the client tested in this session + must be registered with and trusted by Inferno's simulated CRD server + and vice-versa. Tests in this group confirm the registration of the partner + system on both ends. + + This group must be run before any other tests in the "Hook Invocation" group because inputs + provided to this group will be used by Inferno for the remainder of the tests + to identify client requests and verify behavior. The inputs will appear as locked and + unchangeable on these subsequent tests. If changes to these values are needed, + re-run this group and provide the corrected input values. + ) + run_as_group + + test from: :crd_v221_client_registration_verification + test from: :crd_v221_client_service_registration_attestation + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb b/lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb new file mode 100644 index 00000000..e79802f8 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/client_urls.rb @@ -0,0 +1,27 @@ +require_relative '../client_base_urls' + +module DaVinciCRDTestKit + module V221 + module ClientURLs + include ClientBaseURLs + + SUITE_ID = 'crd_client_v221'.freeze + + def self.base_url + "#{Inferno::Application['base_url']}/custom/#{SUITE_ID}" + end + + def self.discovery_url + "#{base_url}#{DaVinciCRDTestKit::DISCOVERY_PATH}" + end + + def self.prefetch_subset_discovery_url + "#{base_url}#{DaVinciCRDTestKit::PREFETCH_DISCOVERY_PATH}" + end + + def suite_id + SUITE_ID + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb b/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb new file mode 100644 index 00000000..de54bdd7 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/crd_client_suite.rb @@ -0,0 +1,183 @@ +require_relative 'client_fhir_api_group' +require_relative 'client_hooks_group' +require_relative 'client_cross_hook_group' +require_relative 'client_registration_group' +require_relative 'client_long_running_hook_group' +require_relative '../endpoints/cds_services_discovery_handler' +require_relative '../../cross_suite/tags' +require_relative 'client_urls' +require_relative '../crd_client_options' +require_relative '../endpoints/hook_request_endpoint' +require_relative '../../ext/inferno_core/runnable' + +module DaVinciCRDTestKit + module V221 + class CRDClientSuite < Inferno::TestSuite + id :crd_client_v221 + title 'Da Vinci CRD Client v2.2.1 Test Suite' + description <<~DESCRIPTION + The Da Vinci CRD Client v2.2.1 Test Suite tests the conformance of systems to the + capabilities of a CRD client as described in [version 2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1) + of the Da Vinci Coverage Requirements Discovery (CRD) Implementation Guide. + + Detailed information about this test suite can be found in the + [client section](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details) of the + [CRD Test Kit Wiki](https://github.com/inferno-framework/davinci-crd-test-kit/wiki), including: + - [What testers need to successfully execute these tests](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions-v2.2.1#pre-execution-setup-and-required-information), + - [Minimal](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions-v2.2.1#quick-start) + and [complete](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions-v2.2.1#additional-testing-options) + instructions for executing against a client system, and + - How to [interpret test results](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions-v2.2.1#interpreting-results). + DESCRIPTION + + suite_summary <<~SUMMARY + The Da Vinci CRD Client v2.2.1 Test Suite tests the conformance of client systems + to [version 2.2.1 of the Da Vinci Coverage Requirements Discovery (CRD) + Implementation Guide](https://hl7.org/fhir/us/davinci-crd/2.2.1). + SUMMARY + + links [ + { + label: 'Implementation Guide', + url: 'https://hl7.org/fhir/us/davinci-crd/2.2.1' + }, + { + label: 'Report Issue', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/issues' + }, + { + label: 'Open Source', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit' + }, + { + label: 'Download', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/releases' + } + ] + + requirement_sets( + { + identifier: 'hl7.fhir.us.davinci-crd_2.2.1', + title: 'Da Vinci Coverage Requirements Discovery (CRD) v2.2.1', + actor: 'CRD Client' + }, + { + identifier: 'cds-hooks_3.0.0-ballot', + title: 'CDS Hooks 3.0.0-ballot', + actor: 'Client' + }, + { + identifier: 'cds-hooks-library_1.0.1', + title: 'CDS Hooks Library', + actor: 'Client', + requirements: 'referenced' + }, + { + identifier: 'hl7.fhir.us.core_3.1.1', + title: 'US Core Implementation Guide v3.1.1', + actor: 'Server', + suite_options: { + us_core_version: CRDClientOptions::US_CORE_3 + } + }, + { + identifier: 'hl7.fhir.us.core_6.1.0', + title: 'US Core Implementation Guide v6.1.0', + actor: 'Server', + suite_options: { + us_core_version: CRDClientOptions::US_CORE_6 + } + }, + { + identifier: 'hl7.fhir.us.core_7.0.0', + title: 'US Core Implementation Guide v7.0.0', + actor: 'Server', + suite_options: { + us_core_version: CRDClientOptions::US_CORE_7 + } + } + ) + + verifies_requirements 'cds-hooks_3.0.0-ballot@1', # use of json for everything verified across the whole suite + 'cds-hooks_3.0.0-ballot@15', # use of POST verified by suite endpoint setup + 'cds-hooks_3.0.0-ballot@208', # use of CORS endpoints defined in the suite + 'hl7.fhir.us.davinci-crd_2.2.1@impl-3' # suite verifies system interactions + + fhir_resource_validator do + igs('hl7.fhir.us.davinci-crd#2.2.1') + + exclude_message do |message| + [ + /\A\S+: \S+: URL value '.*' does not resolve/, + %r{This element is not allowed by the profile http://hl7\.org/fhir/tools/StructureDefinition/CDSHooksExtensions\|1\.1\.2}, + /CDSHooksRequest.extension: Unrecognized property/, + /No definition could be found for URL value/ + ].any? { |match_template| message.message.match?(match_template) } + end + end + + suite_option :us_core_version, + title: 'US Core Version', + list_options: [ + { + label: 'US Core 3.1.1', + value: CRDClientOptions::US_CORE_3 + }, + { + label: 'US Core 6.1.0', + value: CRDClientOptions::US_CORE_6 + }, + { + label: 'US Core 7.0.0', + value: CRDClientOptions::US_CORE_7 + } + ] + + def self.extract_token_from_query_params(request) + request.query_parameters['token'] + end + + route :get, DISCOVERY_PATH, CDSServicesDiscoveryHandler + route :get, PREFETCH_DISCOVERY_PATH, CDSServicesDiscoveryHandler + + allow_cors APPOINTMENT_BOOK_PATH, ENCOUNTER_START_PATH, ENCOUNTER_DISCHARGE_PATH, ORDER_DISPATCH_PATH, + ORDER_SELECT_PATH, ORDER_SIGN_PATH, DISCOVERY_PATH + suite_endpoint :post, APPOINTMENT_BOOK_PATH, HookRequestEndpoint + suite_endpoint :post, ENCOUNTER_START_PATH, HookRequestEndpoint + suite_endpoint :post, ENCOUNTER_DISCHARGE_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_DISPATCH_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_SELECT_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_SIGN_PATH, HookRequestEndpoint + + allow_cors APPOINTMENT_BOOK_PREFETCH_SUBSET_PATH, ENCOUNTER_START_PREFETCH_SUBSET_PATH, + ENCOUNTER_DISCHARGE_PREFETCH_SUBSET_PATH, ORDER_DISPATCH_PREFETCH_SUBSET_PATH, + ORDER_SELECT_PREFETCH_SUBSET_PATH, ORDER_SIGN_PREFETCH_SUBSET_PATH, + PREFETCH_DISCOVERY_PATH + suite_endpoint :post, APPOINTMENT_BOOK_PREFETCH_SUBSET_PATH, HookRequestEndpoint + suite_endpoint :post, ENCOUNTER_START_PREFETCH_SUBSET_PATH, HookRequestEndpoint + suite_endpoint :post, ENCOUNTER_DISCHARGE_PREFETCH_SUBSET_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_DISPATCH_PREFETCH_SUBSET_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_SELECT_PREFETCH_SUBSET_PATH, HookRequestEndpoint + suite_endpoint :post, ORDER_SIGN_PREFETCH_SUBSET_PATH, HookRequestEndpoint + + resume_test_route :get, RESUME_PASS_PATH do |request| + CRDClientSuite.extract_token_from_query_params(request) + end + resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request| + CRDClientSuite.extract_token_from_query_params(request) + end + + group do + id :crd_v221_client_hook_invocation + title 'Hook Invocation' + + group from: :crd_v221_client_registration + group from: :crd_v221_client_hooks + group from: :crd_v221_client_cross_hook + group from: :crd_v221_client_long_running_hook + end + + group from: :crd_v221_client_fhir_api + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb new file mode 100644 index 00000000..dbee3248 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_card_must_support_coverage_information_test.rb @@ -0,0 +1,63 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class ClientCardMustSupportCoverageInformationTest < Inferno::Test + include CardsIdentification + include TaggedRequestLoadHelper + + title 'Client supports the Coverage Information response type' + id :crd_v221_client_card_must_support_coverage_information + description <<~DESCRIPTION + During this test, Inferno will verify that the client demonstrated support for the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + response type for this hook. At least one hook invocation received during this group must have returned a Coverage Information action. + Additionally, all [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) + must support elements must be demonstrated across all the returned actions. + + If this test fails, adjust the [cards returned by Inferno's simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) + and/or the hook requests made by the client during the Hooks tests such that Coverage Information actions are returned + that cover the full scope of the [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) + and support for them is demonstrated. + DESCRIPTION + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-14' + + def metadata + @metadata ||= YAML.load_file( + File.join(__dir__, '..', '..', '..', 'cross_suite', 'coverage-information_stu221_metadata.yml') + ) + end + + class MustSupportMetadataHolder + attr_accessor :metadata + + def initialize(metadata) + self.metadata = metadata + end + + def must_supports + @must_supports ||= { + extensions: metadata[:must_supports][:extensions] || [], + slices: metadata[:must_supports][:slices] || [], + elements: metadata[:must_supports][:elements] || [] + } + end + end + + run do + loaded_requests = requests_to_analyze + skip_if loaded_requests.blank?, 'No hook requests received.' + + sorted_cards = sorted_cards_from_requests(loaded_requests) + + assert sorted_cards['actions'][COVERAGE_INFORMATION_RESPONSE_TYPE].present?, + 'Support for the Coverage Information response type not demonstrated.' + + coverage_information_extensions = extract_coverage_information_extensions(sorted_cards) + assert_must_support_elements_present(coverage_information_extensions, COVERAGE_INFO_EXT_URL, + metadata: MustSupportMetadataHolder.new(metadata)) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb new file mode 100644 index 00000000..b3cd7eb4 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_fhirpath_collection_as_comma_delimited_string_test.rb @@ -0,0 +1,60 @@ +module DaVinciCRDTestKit + module V221 + class ClientFHIRPathCollectionAsCommaDelimitedStringTest < Inferno::Test + title 'Client correctly interprets collections when substituting FHIRPath results in prefetch templates' + id :crd_v221_client_fhir_path_collection_as_comma_delimited_string + description <<~DESCRIPTION + The CDS Hooks specification requires that when a FHIRPath token in A + prefetch template resolves to a collection of datatypes (e.g., resource ids), + then the collection gets turned into a comma-delimited string when instantiating + the prefetch template. + + During this test, Inferno will verify that during a previously-run hook test, + there was at least one instance of a prefetch template that has a + token which Inferno expects to result in a collection with multiple unique members. + Note that this does not test whether the client correctly + handles the collection, which is checked by the + "Hook requests include the requested prefetch data" test. + + This test relies on the evaluation performed by the "Hook requests include the + requested prefetch data" test present in each hook-specific "Requests" group. One of these groups + must have been run and resulted in a "Hook requests include the requested prefetch data" + test that outputs "demonstrates_fhirpath_collection_as_comma_delimited_string" as true. + DESCRIPTION + + verifies_requirements 'cds-hooks_3.0.0-ballot@239', 'cds-hooks_3.0.0-ballot@242' + + run do + completeness_tests = find_completeness_tests + pass_if completeness_tests_demonstrate_collection_token_substitution?(completeness_tests) + + skip 'No prefetch template requiring FHIRPath collection token substitution demonstrated. ' \ + 'Perform more complex hook requests and re-run.' + end + + def find_completeness_tests + hooks_group = self.class.parent.parent.groups.find do |group| + group.id.to_s.include?('crd_v221_client_hooks') + end + hooks_group.groups.map do |group| + group.groups.flat_map(&:tests).find do |test| + test.id.to_s.include?('crd_v221_hook_request_prefetch_complete') + end + end.compact + end + + def completeness_tests_demonstrate_collection_token_substitution?(prefetch_completeness_tests) + results_repo = Inferno::Repositories::Results.new + results = results_repo.current_results_for_test_session_and_runnables(test_session_id, + prefetch_completeness_tests) + + results.any? do |result| + result.outputs.any? do |output| + output['name'] == 'demonstrates_fhirpath_collection_as_comma_delimited_string' && + output['value'] == 'true' + end + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb new file mode 100644 index 00000000..d2faa85b --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_hook_instances_unique_test.rb @@ -0,0 +1,44 @@ +require_relative '../../tagged_request_load_helper' +require_relative '../../multi_request_message_helper' +require_relative '../../../cross_suite/tags' + +module DaVinciCRDTestKit + module V221 + class ClientHookInstancesUniqueTest < Inferno::Test + include TaggedRequestLoadHelper + include MultiRequestMessageHelper + title 'Client does not reuse hookInstance values' + id :crd_v221_client_hook_instances_unique + description <<~DESCRIPTION + The CDS Hooks specification requires that the `hookInstance` field of each hook + request be globally unique so that it can be used for tracking + and auditing. + + During this test, Inferno will check that across all hook invocations performed during these + tests, the `hookInstance` field was never reused. + DESCRIPTION + + verifies_requirements 'cds-hooks_3.0.0-ballot@25' + + config( + options: { + crd_test_group: DUPLICATED_HOOK_INSTANCE_TAG + } + ) + + run do + duplicated_hook_instance_requests = load_hook_requests + reused_values = duplicated_hook_instance_requests.map.with_index do |request, request_index| + request_body = parse_json_request_entity(request.request_body, 'Request body', request_index) + next nil unless request_body.present? + + request_body['hookInstance'] + end.compact.uniq + reused_values.each { |hook_instance| load_tagged_requests(TagMethods.hook_instance_tag(hook_instance)) } + + assert duplicated_hook_instance_requests.blank?, + "Inferno received hook requests that re-used `hookInstance` values: #{reused_values.join(', ')}" + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb new file mode 100644 index 00000000..5572bbcf --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_location_address_propagation_test.rb @@ -0,0 +1,135 @@ +require_relative '../../../cross_suite/tags' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class ClientLocationAddressPropagationTest < Inferno::Test + include TaggedRequestLoadHelper + + title 'Client propagates addresses to child Location resources' + id :crd_v221_client_location_address_propagation + description <<~DESCRIPTION + The CRD IG requires that ([prof-13](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-location.html#ci-c-prof-13)) + > If a Location is a fine-grained location such as a bed or room, + > the address SHALL be propagated from the higher-level location it is part of. + + During this test, Inferno will verify that for all locations provided as a prefetched resource + and their parents (via the `partOf` element), if the Location has a parent Location (`partOf`) and + that parent Location's `address` element is populated, then the child Location's `address` element + must also be populated. The test will not verify the details of the address because Inferno cannot + easily determine whether a particular location is "fine-grained" so as to need the same address. + By requiring just population, this check allows for refinement of the address in the child + in addition to straight propagation. + DESCRIPTION + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@prof-13' + + run do + skip_if loaded_requests.blank?, 'No hook requests received.' + pass_if prefetched_location_hash.blank?, 'No Location resources in use, so verification not needed.' + + prefetched_location_hash.each_value do |location| + check_location_address_propagation(location) + end + + assert_no_error_messages('Address propagation issues found. See Messages for details.') + end + + # checks that the location has an address if a parent also has an address + def check_location_address_propagation(location, root_id = location.id) + return if location.address.present? + return unless location.partOf.present? && location.partOf.reference.present? + + parent = prefetched_location_hash[location.partOf.reference] + parent = fetched_location_hash[location.partOf.reference] unless parent.present? + if parent.present? + check_location_conformance(parent, root_id) + if parent.address.present? + add_message('error', "Address missing on prefetched 'Location/#{root_id}': " \ + "parent 'Location/#{parent.id}' has an address.") + else + check_location_address_propagation(parent, root_id) + end + else + add_message('error', "Unable to check address propagation prefetched 'Location/#{root_id}': " \ + "`partOf` reference '#{location.partOf.reference}' could not be fetched.") + end + + nil + end + + # skip profile check if in the prefetch hash (done elsewhere) or already checked + def check_location_conformance(location, root_id) + key = "Location/#{location.id}" + return if prefetched_location_hash.key?(key) || fetched_locations_checked_for_conformance.key?(key) + + fetched_locations_checked_for_conformance[key] = location + validator_response_details = [] + return if resource_is_valid?(resource: location, profile_url: 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location|2.2.1', + add_messages_to_runnable: false, validator_response_details:) + + message_prefix = "Parent of prefetched 'Location/#{root_id}'" + add_message('error', "Location/#{location.id}: #{message_prefix} does not conform to the CRD Location profile.") + validator_response_details.each { |issue| add_message(issue.severity, "(#{message_prefix}) #{issue.message}") } + end + + def fetched_locations_checked_for_conformance + @fetched_locations_checked_for_conformance ||= {} + end + + def loaded_requests + @loaded_requests ||= requests_to_analyze + end + + def prefetched_location_hash + @prefetched_location_hash ||= build_prefetched_locations_hash + end + + def build_prefetched_locations_hash + loaded_requests.each_with_object({}) do |request, location_hash| + request_body = JSON.parse(request.request_body) + next unless request_body.is_a?(Hash) + + prefetched_location_bundle = extract_prefetched_location_bundle(request_body) + next unless prefetched_location_bundle.present? + + prefetched_location_bundle.entry.each do |entry| + add_location_to_hash(entry.resource, location_hash) + end + rescue JSON::ParserError + next + end + end + + def extract_prefetched_location_bundle(request_body) + locations_data = request_body.dig('prefetch', 'locations') || request_body.dig('prefetch', 'locs') + locations = FHIR.from_contents(locations_data.to_json) if locations_data.present? + return locations if locations.is_a?(FHIR::Bundle) + return nil unless locations.is_a?(FHIR::Location) + + FHIR::Bundle.new({ entry: [FHIR::Bundle::Entry.new({ resource: locations })] }) + end + + def fetched_location_hash + @fetched_location_hash ||= build_fetched_locations_hash + end + + def build_fetched_locations_hash + load_tagged_requests(PARENT_LOCATION_FETCH_TAG, DATA_FETCH_TAG).each_with_object({}) do |request, location_hash| + add_location_to_hash(FHIR.from_contents(request.response_body), location_hash) + rescue JSON::ParserError + next + end + end + + def add_location_to_hash(location, location_hash) + return unless location.is_a?(FHIR::Location) && location.id.present? + + relative_reference = "#{location.resourceType}/#{location.id}" + return if location_hash.key?(relative_reference) + + location_hash[relative_reference] = location + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb new file mode 100644 index 00000000..fd9153bb --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/cross_hook/client_prefetch_complete_and_subset_test.rb @@ -0,0 +1,103 @@ +require_relative '../../tagged_request_load_helper' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class ClientPrefetchCompleteAndSubsetTest < Inferno::Test + include TaggedRequestLoadHelper + + title 'Client can provide both the complete standard prefetch data set and a subset' + id :crd_v221_client_prefetch_complete_and_subset + description <<~DESCRIPTION + The CRD IG requires clients to be able to prefetch a standard set of resources that + payers are expected to need to evaluate coverage requirements. They are also + required to be able to prefetch a subset of these standard prefetch requirements + if a payer requests fewer in their service discovery responses because the payer + does not always need the complete set of standard prefetch resources to evaluate + coverage. + + During this test, Inferno will verify that the client has demonstrated requests + - made against both of Inferno's simulated CRD servers, + one of which requests the all standard prefetch resources while the + other requests only a subset. + - which demonstrate the capability to distinguish the difference between + the two prefetch sets. + + The CRD server that requests only a subset of the standard prefetch data does not request + resources referenced from the following elements. Request made to each Inferno service + endpoint with one of these elements populated with a reference to a resource not referenced + elsewhere will demonstrate the required capability. + - On an `appointment-book` hook request, an Appointment with a participant entry that + references a Practitioner or PractitionerRole resource in its actor element + - On an `encounter-start` or `encounter-discharge` hook request, an Encounter with a + referenced Location via the `location` element or referenced Organization via the + `serviceProvider` element. + - On an `order-select`, `order-sign`, or `order-dispatch` hook request, one of the following order resources: + - A CommunicationRequest, DeviceRequest, MedicationRequest, or ServiceRequest that references a Practitioner or PractitionerRole resource in its `requester` element, or + - A NutritionOrder that references a Practitioner or PractitionerRole resource in its `orderer` element + - A VisionPrescription that references a Practitioner or PractitionerRole resource in its `prescriber` element + + This test relies on the evaluation performed by the "Hook requests include the + requested prefetch data" tests present in each hook-specific "Requests" group. One of these groups must + have been run and resulted in a "Hook requests include the + requested prefetch data" test that outputs + "demonstrates_prefetch_subset_distinct_from_complete" and + "demonstrates_prefetch_complete_distinct_from_subset" as true (does not have to be the + same test). + DESCRIPTION + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-25-A', 'hl7.fhir.us.davinci-crd_2.2.1@found-25-B' + + run do + subset_prefetch_requests, complete_prefetch_requests = + requests_to_analyze.partition { |request| request.url.include?(PREFETCH_SUBSET_PREFIX) } + completeness_tests = find_completeness_tests + check_for_demonstration(subset_prefetch_requests, completeness_tests, :subset) + check_for_demonstration(complete_prefetch_requests, completeness_tests, :complete) + + skip_if error_messages?, + 'The client did not demonstrate both complete and subset prefetch capability. See Messages for details.' + end + + def find_completeness_tests + hooks_group = self.class.parent.parent.groups.find do |group| + group.id.to_s.include?('crd_v221_client_hooks') + end + hooks_group.groups.map do |group| + group.groups.flat_map(&:tests).find do |test| + test.id.to_s.include?('crd_v221_hook_request_prefetch_complete') + end + end.compact + end + + def check_for_demonstration(requests, completeness_tests, target_name) + unless requests.present? + add_message('error', "No requests made to the service endpoint requesting #{target_name} prefetch data.") + return + end + + results_repo = Inferno::Repositories::Results.new + results = results_repo.current_results_for_test_session_and_runnables(test_session_id, + completeness_tests) + output_name = + if target_name == :subset + 'demonstrates_prefetch_subset_distinct_from_complete' + else + 'demonstrates_prefetch_complete_distinct_from_subset' + end + + demonstrated = results.any? do |result| + result.outputs.any? do |output| + output['name'] == output_name && + output['value'] == 'true' + end + end + + return if demonstrated + + add_message('error', "Requests made to the service endpoint requesting #{target_name} prefetch data " \ + 'did not demonstrate a difference between the two levels of prefetch data.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb new file mode 100644 index 00000000..c893e643 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/appointment_book_receive_request_test.rb @@ -0,0 +1,137 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class AppointmentBookReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v221_appointment_book_request + title 'Client invokes the appointment-book hook' + description %( + During this test, Inferno will wait while the client makes one or more [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book) + hook requests against Inferno's simulated CRD servers. Inferno will respond + based on the response configuration provided when running the test. + For more details on how Inferno's simulated CRD servers behave during + hook invocation see the [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + + Inferno will pause and wait for inbound requests until told explicitly to continue + by the tester by clicking on the link in the "User Action Required" dialog (NOTE: after + 5 minutes the test will become inactive and unresponsive to anything except cancelation). + ) + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + input :appointment_book_selected_response_types, + title: 'Response types to return from appointment-book hook requests', + description: %( + Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) + when responding to hook invocations. If no types are selected, Inferno will mock and return + a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) + response for this primary hook. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + } + ] + } + input :appointment_book_custom_response_template, + title: 'Custom response template for appointment-book hook requests', + description: %( + To control the responses of Inferno's simulated CRD server, provide + a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) + in JSON form for Inferno to use when responding to hook invocations. + If this input is populated, the corresponding **Response types to return** + input will be ignored. + ), + type: 'textarea', + optional: true + output :continuation_url + + def configured_response_details + if appointment_book_custom_response_template.present? + # rubocop:disable Layout/LineLength + 'When responding, Inferno will evaluate the provided [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) ' \ + 'from the **Custom response template for appointment-book hook requests** input ' \ + 'against the incoming request to create a response.' + # rubocop:enable Layout/LineLength + + else + # rubocop:disable Layout/LineLength + 'When responding, Inferno will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) ' \ + 'the following response types using the incoming request: ' \ + "\n - #{selected_response_types_string}" + # rubocop:enable Layout/LineLength + end + end + + def selected_response_types_string + if appointment_book_selected_response_types.present? + appointment_book_selected_response_types.join("\n - ") + else + 'Coverage Information' # primary hook default + end + end + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Invoke the `appointment-book` hook**: + + Invoke the appointment-book hook by sending requests to + one or both of the two Inferno simulated CRD servers: + + - Complete Prefetch: `#{appointment_book_url}` + - Subset Prefetch: `#{appointment_book_prefetch_subset_url}` + + For Inferno to recognize these requests and associate them with this session, + the authentication JWT sent as a Bearer token in the Authorization header + must have `#{cds_jwt_iss}` as the `iss` claim in the JWT payload. + + #{configured_response_details} + + [Click here](#{continuation_url}) when you have finished submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb new file mode 100644 index 00000000..d195b9a1 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_discharge_receive_request_test.rb @@ -0,0 +1,138 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class EncounterDischargeReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v221_encounter_discharge_request + title 'Client invokes the encounter-discharge hook' + description %( + During this test, Inferno will wait while the client makes one or more [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-discharge) + hook requests against Inferno's simulated CRD servers. Inferno will respond + based on the response configuration provided when running the test. + For more details on how Inferno's simulated CRD servers behave during + hook invocation see the [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + + Inferno will pause and wait for inbound requests until told explicitly to continue + by the tester by clicking on the link in the "User Action Required" dialog (NOTE: after + 5 minutes the test will become inactive and unresponsive to anything except cancelation). + ) + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + input :encounter_discharge_selected_response_types, + title: 'Response types to return from encounter-discharge hook requests', + description: %( + Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) + when responding to hook invocations. If no types are selected, Inferno will mock and return + an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type) + response for this secondary hook. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + } + ] + } + input :encounter_discharge_custom_response_template, + title: 'Custom response template for encounter-discharge hook requests', + description: %( + To control the responses of Inferno's simulated CRD server, provide + a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) + in JSON form for Inferno to use when responding to hook invocations. + If this input is populated, the corresponding **Response types to return** + input will be ignored. + ), + type: 'textarea', + optional: true + output :continuation_url + + def configured_response_details + if encounter_discharge_custom_response_template.present? + # rubocop:disable Layout/LineLength + 'When responding, Inferno will evaluate the provided [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) ' \ + 'from the **Custom response template for encounter-discharge hook requests** input ' \ + 'against the incoming request to create a response.' + # rubocop:enable Layout/LineLength + + else + # rubocop:disable Layout/LineLength + 'When responding, Inferno will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) ' \ + 'the following response types using the incoming request: ' \ + "\n - #{selected_response_types_string}" + # rubocop:enable Layout/LineLength + end + end + + def selected_response_types_string + if encounter_discharge_selected_response_types.present? + encounter_discharge_selected_response_types.join("\n - ") + else + 'Instructions' # secondary hook default + end + end + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Invoke the `encounter-discharge` hook**: + + Invoke the encounter-discharge hook by sending requests to + one or both of the two Inferno simulated CRD servers: + + - Complete Prefetch: `#{encounter_discharge_url}` + - Subset Prefetch: `#{encounter_discharge_prefetch_subset_url}` + + For Inferno to recognize these requests and associate them with this session, + the authentication JWT sent as a Bearer token in the Authorization header + must have `#{cds_jwt_iss}` as the `iss` claim in the JWT payload. + + #{configured_response_details} + + [Click here](#{continuation_url}) when you have finished submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb new file mode 100644 index 00000000..b712e03d --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/encounter_start_receive_request_test.rb @@ -0,0 +1,138 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class EncounterStartReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v221_encounter_start_request + title 'Client invokes the encounter-start hook' + description %( + During this test, Inferno will wait while the client makes one or more [encounter-start](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#encounter-start) + hook requests against Inferno's simulated CRD servers. Inferno will respond + based on the response configuration provided when running the test. + For more details on how Inferno's simulated CRD servers behave during + hook invocation see the [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + + Inferno will pause and wait for inbound requests until told explicitly to continue + by the tester by clicking on the link in the "User Action Required" dialog (NOTE: after + 5 minutes the test will become inactive and unresponsive to anything except cancelation). + ) + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + input :encounter_start_selected_response_types, + title: 'Response types to return from encounter-start hook requests', + description: %( + Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) + when responding to hook invocations. If no types are selected, Inferno will mock and return + an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type) + response for this secondary hook. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + } + ] + } + input :encounter_start_custom_response_template, + title: 'Custom response template for encounter-start hook requests', + description: %( + To control the responses of Inferno's simulated CRD server, provide + a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) + in JSON form for Inferno to use when responding to hook invocations. + If this input is populated, the corresponding **Response types to return** + input will be ignored. + ), + type: 'textarea', + optional: true + output :continuation_url + + def configured_response_details + if encounter_start_custom_response_template.present? + # rubocop:disable Layout/LineLength + 'When responding, Inferno will evaluate the provided [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) ' \ + 'from the **Custom response template for encounter-start hook requests** input ' \ + 'against the incoming request to create a response.' + # rubocop:enable Layout/LineLength + + else + # rubocop:disable Layout/LineLength + 'When responding, Inferno will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) ' \ + 'the following response types using the incoming request: ' \ + "\n - #{selected_response_types_string}" + # rubocop:enable Layout/LineLength + end + end + + def selected_response_types_string + if encounter_start_selected_response_types.present? + encounter_start_selected_response_types.join("\n - ") + else + 'Instructions' # secondary hook default + end + end + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Invoke the `encounter-start` hook**: + + Invoke the encounter-start hook by sending requests to + one or both of the two Inferno simulated CRD servers: + + - Complete Prefetch: `#{encounter_start_url}` + - Subset Prefetch: `#{encounter_start_prefetch_subset_url}` + + For Inferno to recognize these requests and associate them with this session, + the authentication JWT sent as a Bearer token in the Authorization header + must have `#{cds_jwt_iss}` as the `iss` claim in the JWT payload. + + #{configured_response_details} + + [Click here](#{continuation_url}) when you have finished submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb new file mode 100644 index 00000000..3f0900bc --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_dispatch_receive_request_test.rb @@ -0,0 +1,146 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class OrderDispatchReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v221_order_dispatch_request + title 'Client invokes the order-dispatch hook' + description %( + During this test, Inferno will wait while the client makes one or more [order-dispatch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-dispatch) + hook requests against Inferno's simulated CRD servers. Inferno will respond + based on the response configuration provided when running the test. + For more details on how Inferno's simulated CRD servers behave during + hook invocation see the [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + + Inferno will pause and wait for inbound requests until told explicitly to continue + by the tester by clicking on the link in the "User Action Required" dialog (NOTE: after + 5 minutes the test will become inactive and unresponsive to anything except cancelation). + ) + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + input :order_dispatch_selected_response_types, + title: 'Response types to return from order-dispatch hook requests', + description: %( + Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) + when responding to hook invocations. If no types are selected, Inferno will mock and return + a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) + response for this primary hook. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + }, + { + label: 'Propose Alternate Request', + value: 'propose_alternate_request' + }, + { + label: 'Additional Orders as Companions/Prerequisites', + value: 'companions_prerequisites' + } + ] + } + input :order_dispatch_custom_response_template, + title: 'Custom response template for order-dispatch hook requests', + description: %( + To control the responses of Inferno's simulated CRD server, provide + a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) + in JSON form for Inferno to use when responding to hook invocations. + If this input is populated, the corresponding **Response types to return** + input will be ignored. + ), + type: 'textarea', + optional: true + output :continuation_url + + def configured_response_details + if order_dispatch_custom_response_template.present? + # rubocop:disable Layout/LineLength + 'When responding, Inferno will evaluate the provided [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) ' \ + 'from the **Custom response template for order-dispatch hook requests** input ' \ + 'against the incoming request to create a response.' + # rubocop:enable Layout/LineLength + + else + # rubocop:disable Layout/LineLength + 'When responding, Inferno will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) ' \ + 'the following response types using the incoming request: ' \ + "\n - #{selected_response_types_string}" + # rubocop:enable Layout/LineLength + end + end + + def selected_response_types_string + if order_dispatch_selected_response_types.present? + order_dispatch_selected_response_types.join("\n - ") + else + 'Coverage Information' # primary hook default + end + end + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Invoke the `order-dispatch` hook**: + + Invoke the order-dispatch hook by sending requests to + one or both of the two Inferno simulated CRD servers: + + - Complete Prefetch: `#{order_dispatch_url}` + - Subset Prefetch: `#{order_dispatch_prefetch_subset_url}` + + For Inferno to recognize these requests and associate them with this session, + the authentication JWT sent as a Bearer token in the Authorization header + must have `#{cds_jwt_iss}` as the `iss` claim in the JWT payload. + + #{configured_response_details} + + [Click here](#{continuation_url}) when you have finished submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb new file mode 100644 index 00000000..00c808d4 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_select_receive_request_test.rb @@ -0,0 +1,146 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class OrderSelectReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v221_order_select_request + title 'Client invokes the order-select hook' + description %( + During this test, Inferno will wait while the client makes one or more [order-select](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-select) + hook requests against Inferno's simulated CRD servers. Inferno will respond + based on the response configuration provided when running the test. + For more details on how Inferno's simulated CRD servers behave during + hook invocation see the [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + + Inferno will pause and wait for inbound requests until told explicitly to continue + by the tester by clicking on the link in the "User Action Required" dialog (NOTE: after + 5 minutes the test will become inactive and unresponsive to anything except cancelation). + ) + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + input :order_select_selected_response_types, + title: 'Response types to return from order-select hook requests', + description: %( + Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) + when responding to hook invocations. If no types are selected, Inferno will mock and return + an [Instructions](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#instructions-response-type) + response for this secondary hook. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + }, + { + label: 'Propose Alternate Request', + value: 'propose_alternate_request' + }, + { + label: 'Additional Orders as Companions/Prerequisites', + value: 'companions_prerequisites' + } + ] + } + input :order_select_custom_response_template, + title: 'Custom response template for order-select hook requests', + description: %( + To control the responses of Inferno's simulated CRD server, provide + a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) + in JSON form for Inferno to use when responding to hook invocations. + If this input is populated, the corresponding **Response types to return** + input will be ignored. + ), + type: 'textarea', + optional: true + output :continuation_url + + def configured_response_details + if order_select_custom_response_template.present? + # rubocop:disable Layout/LineLength + 'When responding, Inferno will evaluate the provided [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) ' \ + 'from the **Custom response template for order-select hook requests** input ' \ + 'against the incoming request to create a response.' + # rubocop:enable Layout/LineLength + + else + # rubocop:disable Layout/LineLength + 'When responding, Inferno will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) ' \ + 'the following response types using the incoming request: ' \ + "\n - #{selected_response_types_string}" + # rubocop:enable Layout/LineLength + end + end + + def selected_response_types_string + if order_select_selected_response_types.present? + order_select_selected_response_types.join("\n - ") + else + 'Instructions' # secondary hook default + end + end + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Invoke the `order-select` hook**: + + Invoke the order-select hook by sending requests to + one or both of the two Inferno simulated CRD servers: + + - Complete Prefetch: `#{order_select_url}` + - Subset Prefetch: `#{order_select_prefetch_subset_url}` + + For Inferno to recognize these requests and associate them with this session, + the authentication JWT sent as a Bearer token in the Authorization header + must have `#{cds_jwt_iss}` as the `iss` claim in the JWT payload. + + #{configured_response_details} + + [Click here](#{continuation_url}) when you have finished submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb new file mode 100644 index 00000000..5f759ca0 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/invocation/order_sign_receive_request_test.rb @@ -0,0 +1,146 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class OrderSignReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v221_order_sign_request + title 'Client invokes the order-sign hook' + description %( + During this test, Inferno will wait while the client makes one or more [order-sign](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#order-sign) + hook requests against Inferno's simulated CRD servers. Inferno will respond + based on the response configuration provided when running the test. + For more details on how Inferno's simulated CRD servers behave during + hook invocation see the [simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#crd-server-simulation) + documentation. + + Inferno will pause and wait for inbound requests until told explicitly to continue + by the tester by clicking on the link in the "User Action Required" dialog (NOTE: after + 5 minutes the test will become inactive and unresponsive to anything except cancelation). + ) + + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + input :order_sign_selected_response_types, + title: 'Response types to return from order-sign hook requests', + description: %( + Select the CRD response types that the simulated Inferno CRD server will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) + when responding to hook invocations. If no types are selected, Inferno will mock and return + a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) + response for this primary hook. + ), + type: 'checkbox', + default: ['coverage_information', 'external_reference', 'instructions'], + optional: true, + options: { + list_options: [ + { + label: 'External Reference', + value: 'external_reference' + }, + { + label: 'Instructions', + value: 'instructions' + }, + { + label: 'Coverage Information', + value: 'coverage_information' + }, + { + label: 'Request Form Completion', + value: 'request_form_completion' + }, + { + label: 'Create/Update Coverage Information', + value: 'create_update_coverage_info' + }, + { + label: 'Launch SMART Application', + value: 'launch_smart_app' + }, + { + label: 'Propose Alternate Request', + value: 'propose_alternate_request' + }, + { + label: 'Additional Orders as Companions/Prerequisites', + value: 'companions_prerequisites' + } + ] + } + input :order_sign_custom_response_template, + title: 'Custom response template for order-sign hook requests', + description: %( + To control the responses of Inferno's simulated CRD server, provide + a [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) + in JSON form for Inferno to use when responding to hook invocations. + If this input is populated, the corresponding **Response types to return** + input will be ignored. + ), + type: 'textarea', + optional: true + output :continuation_url + + def configured_response_details + if order_sign_custom_response_template.present? + # rubocop:disable Layout/LineLength + 'When responding, Inferno will evaluate the provided [custom response template](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#tester-directed-custom-responses) ' \ + 'from the **Custom response template for order-sign hook requests** input ' \ + 'against the incoming request to create a response.' + # rubocop:enable Layout/LineLength + + else + # rubocop:disable Layout/LineLength + 'When responding, Inferno will [mock](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) ' \ + 'the following response types using the incoming request: ' \ + "\n - #{selected_response_types_string}" + # rubocop:enable Layout/LineLength + end + end + + def selected_response_types_string + if order_sign_selected_response_types.present? + order_sign_selected_response_types.join("\n - ") + else + 'Coverage Information' # primary hook default + end + end + + run do + identifier = cds_jwt_iss + continuation_url = "#{resume_pass_url}?token=#{identifier}" + output(continuation_url:) + + wait( + identifier:, + message: %( + **Invoke the `order-sign` hook**: + + Invoke the order-sign hook by sending requests to + one or both of the two Inferno simulated CRD servers: + + - Complete Prefetch: `#{order_sign_url}` + - Subset Prefetch: `#{order_sign_prefetch_subset_url}` + + For Inferno to recognize these requests and associate them with this session, + the authentication JWT sent as a Bearer token in the Authorization header + must have `#{cds_jwt_iss}` as the `iss` claim in the JWT payload. + + #{configured_response_details} + + [Click here](#{continuation_url}) when you have finished submitting requests. + ) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb new file mode 100644 index 00000000..719379be --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test.rb @@ -0,0 +1,64 @@ +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class ClientLongRunningReceiveRequestTest < Inferno::Test + include ClientURLs + + id :crd_v221_client_long_running_receive_request + title 'Client invokes any hook' + description %( + During this test, Inferno will wait while the client makes a single hook requests of any type. + Inferno will return a [mocked response](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses#mocked-responses) + but only after pausing for a configured amount of time, which must be 5 seconds or longer. The details + of the request and its response do not matter for the purposes of this test and they will not be + evaluated, checked for conformance, or included in cross-hook evaluations. The test will automatically + continue after Inferno receives a hook request, the configured pause time has elapsed, + and a response has been returned. + ) + config options: { accepts_multiple_requests: true } + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that must be present in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + Run or re-run the "Registration" group to set or change this value. + ), + locked: true + input :long_running_pause_time, + title: 'Long-running Request Pause Time', + description: %( + Time in seconds to wait before returning a response to a hook invocation + made when testing a long-running request. Must be at least 5 seconds, + which is the minimum threshold for a long-running response as defined by CRD. + ), + default: '5' + + run do + verify_long_running_pause_time_input + + identifier = cds_jwt_iss + wait( + identifier:, + message: %( + **Long Running Hook Request Test**: + + Invoke any supported hook. This test will + automatically continue once Inferno has received a request, paused + for #{long_running_pause_time.to_i} seconds, and returned a response. + + Users must have the option to continue + their workflow before Inferno's response is returned. Testers will be asked to + attest that this was demonstrated in the next test. + ) + ) + end + + def verify_long_running_pause_time_input + assert long_running_pause_time.to_i >= 5, + 'The **Long-running Request Pause Time** input must be at least 5 seconds.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb new file mode 100644 index 00000000..8681675a --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_skip_long_running_attestation_test.rb @@ -0,0 +1,49 @@ +require_relative '../client_urls' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class ClientSkipLongRunningAttestationTest < Inferno::Test + include ClientURLs + include DaVinciCRDTestKit::TaggedRequestLoadHelper + + id :crd_v221_client_skip_long_running_attestation_test + title 'Client allows the user to continue their workflow during long-running requests (Attestation)' + description %( + During this test, the tester will confirm that the client system allowed + its user to continue with their workflow while the sytem was waiting for the previous + long-running hook request to return. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-6' + + output :attest_true_url + output :attest_false_url + + run do + long_running_requests = load_hook_requests + skip_if long_running_requests.blank?, 'Long-running requests not demonstrated: ' \ + 'no hook requests sent during the previous wait.' + + identifier = SecureRandom.hex(32) + attest_true_url = "#{resume_pass_url}?token=#{identifier}" + attest_false_url = "#{resume_fail_url}?token=#{identifier}" + output(attest_true_url:) + output(attest_false_url:) + wait( + identifier:, + message: <<~MESSAGE + **Long Running Request Attestation**: + + I attest that the user had the option to continue their workflow + while waiting for the long-running hook request to return a response: + + [Click here](#{attest_true_url}) if the above statement is **true**. + + [Click here](#{attest_false_url}) if the above statement is **false**. + MESSAGE + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb new file mode 100644 index 00000000..0f5d5d73 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test.rb @@ -0,0 +1,161 @@ +require 'jwt' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class CRDClientRegistrationVerification < Inferno::Test + include ClientURLs + + id :crd_v221_client_registration_verification + title 'CRD client registers with Inferno' + description %( + In order to register with and be able to make hook requests against Inferno's + simulated CRD servers, the tester must provide the `iss` (issuer) claim in + the payload of the JWT sent in the Authorization header of hook requests + made by the client against Inferno. This information is used to + associate inbound requests to Inferno's simulated CRD servers with this session. + Requests made without a JWT or with a different `iss` value will not appear in this + session or be analyzed. + + Inferno also requires some additional information to verify conformant client behavior. + This information is not needed to execute the tests, but the tests will not completely + pass without it: + - A JSON Web Key Set (JWKS) containing the key used to sign the JWT sent in the Authorization + header for use in signature validation. It can be provided either as a URL where it is + publicly hosted (preferred) or the raw JWKS as JSON. + - A FHIR Organization id associated with each of Inferno's two simulated CRD servers, + one at `#{ClientURLs.discovery_url}` requesting the [complete standard prefetch data set](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch), + and the other at `#{ClientURLs.prefetch_subset_discovery_url}` requesting a subset of that data set. + These are used to verify that the prefetched coverage is linked to the correct payer for the invoked + service. + + During this test, registration information provided will be checked for conformance + with these requirements. + ) + + verifies_requirements 'cds-hooks_3.0.0-ballot@199' + + input :cds_jwt_iss, + title: 'CRD JWT Issuer', + description: %( + Value of the `iss` claim that will be sent in the JWT used to authorize the client's hook + request sent as the Bearer token in the `Authorization` header. + This value will be used to associate incoming requests with this test + session and any requests that use a different `iss` value will not be recognized. + ), + type: 'text' + input :cds_jwk_set, + title: 'CRD JSON Web Key Set (JWKS)', + type: 'textarea', + description: %( + The CRD client's JWK Set containing it's public key. May be either + a publicly accessible url containing the JWKS, or the raw JWKS. + The client suite may be run without this input, but it is required + for the tests to pass. + ), + optional: true + input :complete_prefetch_service_organization_id, + title: 'Complete Prefetch Service Organization id', + description: %( + The FHIR Organization id associated with Inferno's simulated + complete prefetch CRD server. This Organization must be referenced as the + payer on Coverages in hook requests made to services described by the + `#{ClientURLs.discovery_url}` discovery endpoint. + The client suite may be run without this input, but it is required + for the tests to pass. + ), + type: 'text', + optional: true + input :subset_prefetch_service_organization_id, + title: 'Subset Prefetch Service Organization id', + description: %( + The FHIR Organization id associated with Inferno's simulated + subset prefetch CRD server. This Organization must be referenced + payer on Coverages in hook requests made to services described by the + `#{ClientURLs.prefetch_subset_discovery_url}` discovery endpoint. + The client suite may be run without this input, but it is required + for the tests to pass. + ), + type: 'text', + optional: true + + run do + if cds_jwk_set.present? + check_jwks + else + add_message('error', 'Provide a jwk set in the **CRD JSON Web Key Set (JWKS)** input.') + end + + unless complete_prefetch_service_organization_id.present? + add_message('error', 'Provide an Organization id associated with the Complete Prefetch Service ' \ + "at endpoint #{discovery_url}") + end + + unless subset_prefetch_service_organization_id.present? + add_message('error', 'Provide an Organization id associated with the Subset Prefetch Service ' \ + "at endpoint #{prefetch_subset_discovery_url}") + end + + unless complete_prefetch_service_organization_id.present? && subset_prefetch_service_organization_id.present? && + complete_prefetch_service_organization_id != subset_prefetch_service_organization_id + add_message('error', 'Each Inferno CRD service must be assigned a unique Organization id.') + end + + assert_no_error_messages 'Invalid registration information provided. See Messages for details.' + end + + def check_jwks + jwks_warnings = [] + parsed_jwk_set = jwk_set(cds_jwk_set, jwks_warnings) + jwks_warnings.each { |warning| add_message('warning', warning) } + + add_message('error', 'JWKS content does not include any valid keys.') unless parsed_jwk_set.length.positive? + end + + def jwk_set(jku, warning_messages = []) # rubocop:disable Metrics/CyclomaticComplexity + jwk_set = JWT::JWK::Set.new + + if jku.blank? + warning_messages << 'No key set input.' + return jwk_set + end + + jwk_body = # try as raw jwk set + begin + JSON.parse(jku) + rescue JSON::ParserError + nil + end + + if jwk_body.blank? + retrieved = Faraday.get(jku) # try as url pointing to a jwk set + jwk_body = + begin + JSON.parse(retrieved.body) + rescue JSON::ParserError + warning_messages << "Failed to fetch valid json from jwks uri #{jku}." + nil + end + else + warning_messages << 'Providing the JWK Set directly is strongly discouraged.' + end + + return jwk_set if jwk_body.blank? + + jwk_body['keys']&.each_with_index do |key_hash, index| + parsed_key = + begin + JWT::JWK.new(key_hash) + rescue JWT::JWKError => e + id = key_hash['kid'] | index + warning_messages << "Key #{id} invalid: #{e}" + nil + end + jwk_set << parsed_key unless parsed_key.blank? + end + + jwk_set + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb new file mode 100644 index 00000000..3792c704 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/registration/client_service_registration_attestation_test.rb @@ -0,0 +1,107 @@ +module DaVinciCRDTestKit + module V221 + class CRDClientServiceRegistrationAttestation < Inferno::Test + include ClientURLs + + id :crd_v221_client_service_registration_attestation + title 'CRD client registers Inferno (Attestation)' + description %( + Inferno simulates two CRD servers which can be discovered at the following endpoints: + - Complete Prefetch Service Discovery Endpoint: #{ClientURLs.discovery_url} + - Subset Prefetch Service Discovery Endpoint: #{ClientURLs.prefetch_subset_discovery_url} + + During this test, the tester will confirm that these two endpoints + have been registered by the client as trusted CRD servers that can access the CRD client's + FHIR server and that they have each been + - Associated with a particular payer organization (used to check that the + hook requests are sent by the client system to the appropriate payers based on + the Patient's coverage). + - Granted patient- or user-level read and search access to all US Core resource + types in the selected US Core version (required to verify the client's support + of the US Core FHIR API and used to verify the `fhirAuthorization.scope` + hook request field). + ) + verifies_requirements 'cds-hooks_3.0.0-ballot@174' + + input :complete_prefetch_service_organization_id, + title: 'Complete Prefetch Service Organization id', + description: %( + The FHIR Organization id associated with Inferno's simulated + complete prefetch CRD server. This Organization must be referenced as the + payer on Coverages in hook requests made to services described by the + `#{ClientURLs.discovery_url}` discovery endpoint. + The client suite may be run without this input, but it is required + for the tests to pass. + ), + type: 'text', + optional: true + input :subset_prefetch_service_organization_id, + title: 'Subset Prefetch Service Organization id', + description: %( + The FHIR Organization id associated with Inferno's simulated + subset prefetch CRD server. This Organization must be referenced + payer on Coverages in hook requests made to services described by the + `#{ClientURLs.prefetch_subset_discovery_url}` discovery endpoint. + The client suite may be run without this input, but it is required + for the tests to pass. + ), + type: 'text', + optional: true + output :attest_true_url + output :attest_false_url + + def us_core_version + case suite_options[:us_core_version] + when CRDClientOptions::US_CORE_3 + 'v3.1.1' + when CRDClientOptions::US_CORE_6 + 'v6.1.0' + when CRDClientOptions::US_CORE_7 + 'v7.0.0' + end + end + + def us_core_version_resource_types + case suite_options[:us_core_version] + when CRDClientOptions::US_CORE_3 + CRDClientOptions::US_CORE_3_RESOURCE_TYPES + when CRDClientOptions::US_CORE_6, CRDClientOptions::US_CORE_7 + CRDClientOptions::US_CORE_6_7_RESOURCE_TYPES + end.join('`, `') + end + + run do + identifier = SecureRandom.hex(32) + attest_true_url = "#{resume_pass_url}?token=#{identifier}" + attest_false_url = "#{resume_fail_url}?token=#{identifier}" + output(attest_true_url:) + output(attest_false_url:) + wait( + identifier:, + message: <<~MESSAGE + **Registration of Inferno as a trusted CRD server**: + + I attest that the following Inferno CRD servers have been registered as trusted + within the client system: + + - Complete Prefetch Service Discovery Endpoint: `#{discovery_url}` + - Services on this CRD server will be invoked for patients with a primary coverage issued by the payer + represented by the Organization resource with id `#{complete_prefetch_service_organization_id}`. + - The CRD server has been granted patient- or user-level read and search access scopes for + all US Core #{us_core_version} profiled resource types (`#{us_core_version_resource_types}`). + + - Subset Prefetch Service Discovery Endpoint: `#{prefetch_subset_discovery_url}` + - Services on this CRD server will be invoked for patients with a primary coverage issued by the payer + represented by the Organization resource with id `#{subset_prefetch_service_organization_id}`. + - The CRD server has been granted patient- or user-level read and search access scopes for + all US Core #{us_core_version} profiled resource types (`#{us_core_version_resource_types}`). + + [Click here](#{attest_true_url}) if the above statement is **true**. + + [Click here](#{attest_false_url}) if the above statement is **false**. + MESSAGE + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb new file mode 100644 index 00000000..795bb0f7 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_conformance_test.rb @@ -0,0 +1,47 @@ +require_relative '../../../cross_suite/requests_logical_model_validation' +require_relative '../../tagged_request_load_helper' +require_relative '../../multi_request_message_helper' + +module DaVinciCRDTestKit + module V221 + class HookRequestConformanceTest < Inferno::Test + include RequestsLogicalModelValidation + include DaVinciCRDTestKit::TaggedRequestLoadHelper + include DaVinciCRDTestKit::MultiRequestMessageHelper + + id :crd_v221_hook_request_conformance + title 'Hook requests have the correct structure and contents' + description %( + During this test, Inferno will check each request body against the structural and content + requirements for the invoked hook. + ) + + output :url, :smart_auth_info + + verifies_requirements 'cds-hooks_3.0.0-ballot@3', 'cds-hooks_3.0.0-ballot@222', 'cds-hooks_3.0.0-ballot@223', + 'cds-hooks_3.0.0-ballot@224', + 'hl7.fhir.us.davinci-crd_2.2.1@billopt-1', 'hl7.fhir.us.davinci-crd_2.2.1@found-36-A', + 'hl7.fhir.us.davinci-crd_2.2.1@hook-20', 'hl7.fhir.us.davinci-crd_2.2.1@hook-21' + + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + hook_requests.each_with_index do |request, request_index| + request_body = parse_json_request_entity(request.request_body, 'Request body', request_index) + next unless request_body.present? + + validate_request_against_logical_model(request_body, request_index, '2.2.1') + + output url: request_body['fhirServer'] if request_body['fhirServer'].present? + if request_body.dig('fhirAuthorization', 'access_token').present? + output smart_auth_info: { access_token: request_body['fhirAuthorization']['access_token'] }.to_json + end + end + + assert_no_error_messages("#{requests_with_errors_prefix}Non-conformant hook request. See Messages for details.") + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb new file mode 100644 index 00000000..36900a16 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_coverage_verification_test.rb @@ -0,0 +1,152 @@ +require_relative '../../../cross_suite/tags' +require_relative '../../multi_request_message_helper' +require_relative '../../tagged_request_load_helper' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class HookRequestCoverageVerificationTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + include DaVinciCRDTestKit::TaggedRequestLoadHelper + include ClientURLs + + id :crd_v221_hook_request_coverage_verification + title 'Prefetched coverages are valid' + description %( + During this test, Inferno will verify that the issuing payer Organization id from the `payor` element + of each hook request's prefetched coverage matches the Organization id associated with the + invoked simulated CRD server provided by the tester during the "Registration" group. + Inferno also checks that the Organization resources conform to the + [CRD Organization](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-organization.html) + profile. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@dev-29-A', 'hl7.fhir.us.davinci-crd_2.2.1@hook-1' + + input :complete_prefetch_service_organization_id, + title: 'Complete Prefetch Service Organization id', + description: %( + The FHIR Organization id associated with Inferno's simulated + complete prefetch CRD server. This Organization must be referenced as the + payer on Coverages in hook requests made to services described by the `#{ClientURLs.discovery_url}` + discovery endpoint. The client suite may be run without this input, but it is required + for the tests to pass. + Re-run the "Registration" group to provide this detail. + ), + type: 'text', + optional: true, + locked: true + input :subset_prefetch_service_organization_id, + title: 'Subset Prefetch Service Organization id', + description: %( + The FHIR Organization id associated with Inferno's simulated + subset prefetch CRD server. This Organization must be referenced + payer on Coverages in hook requests made to services described by the + `#{ClientURLs.prefetch_subset_discovery_url}` discovery endpoint. + The client suite may be run without this input, but it is required + for the tests to pass. + Re-run the "Registration" group to provide this detail. + ), + type: 'text', + optional: true, + locked: true + + def prefetch_target(request) + if request.url.include?(PREFETCH_SUBSET_PREFIX) + :subset + else + :complete + end + end + + def payer_org_id_for_request(request) + if prefetch_target(request) == :subset + subset_prefetch_service_organization_id + else + complete_prefetch_service_organization_id + end + end + + def load_payer_request_for_hook_request(request_body) + hook_data_fetch_tag = TagMethods.hook_instance_data_fetch_tag(request_body['hookInstance']) + load_tagged_requests(PAYER_ORG_FETCH_TAG, hook_data_fetch_tag, DATA_FETCH_TAG).first + end + + def check_payer_request(request_body, request_index, expected_payer_org_id) + payer_request = load_payer_request_for_hook_request(request_body) + unless payer_request.present? && payer_request.status.to_s.starts_with?('2') + add_request_message('error', + "Inferno failed to retrieve the Coverage's payer during hook processing.", + request_index) + return + end + + payer_resource = FHIR.from_contents(payer_request.response_body) + unless payer_resource.present? + add_request_message('error', 'Request for payer resource returned invalid FHIR data.', request_index) + return + end + + if payer_resource.resourceType != 'Organization' + add_request_message('error', 'Payer for the Coverage is not an Organization: ' \ + "got '#{payer_resource.resourceType}'", request_index) + end + if payer_resource.id != expected_payer_org_id + add_request_message('error', 'Payer for the Coverage has the wrong id: ' \ + "expected '#{expected_payer_org_id}', got '#{payer_resource.id}'.", + request_index) + end + + validator_response_details = [] + resource_is_valid?(resource: payer_resource, profile_url: 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization|2.2.1', + add_messages_to_runnable: false, validator_response_details:) + + validator_response_details.each { |issue| add_request_message(issue.severity, issue.message, request_index) } + end + + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + hook_requests.each_with_index do |request, request_index| + request_body = parse_json_request_entity(request.request_body, 'Request body', request_index) + next unless request_body.present? + + expected_payer_org_id = payer_org_id_for_request(request) + if expected_payer_org_id.blank? + add_request_message( + 'error', + 'No Inferno Payer Organization id configured for this endpoint; skipping required coverage check.', + request_index + ) + next + end + + coverage = prefetched_coverage(request_body) + unless coverage.present? + add_request_message('warning', 'Request has no coverage.', request_index) + next + end + + payer_organization_reference = coverage.dig('payor', 0, 'reference') + if payer_organization_reference.blank? + add_request_message('error', 'Coverage has no payer reference.', request_index) + next + end + + check_payer_request(request_body, request_index, expected_payer_org_id) + end + + assert_no_error_messages("#{requests_with_errors_prefix}Invalid coverage. " \ + 'See Messages for details.') + end + + def prefetched_coverage(request_body) + coverage = request_body.dig('prefetch', 'coverage', 'entry', 0, 'resource') + coverage = request_body.dig('prefetch', 'cov', 'entry', 0, 'resource') unless coverage.present? + coverage + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb new file mode 100644 index 00000000..b133594a --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_data_fetch_verification_test.rb @@ -0,0 +1,54 @@ +require_relative '../../../cross_suite/tags' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class HookRequestDataFetchVerificationTest < Inferno::Test + include DaVinciCRDTestKit::TaggedRequestLoadHelper + id :crd_v221_hook_data_fetch_verification + title 'Client made additional FHIR data available during hook request processing' + description %( + During this test, Inferno will verify that for at least one hook request it was successfully + able to use the FHIR API and access token indicated in that hook request to gather additional data during + hook invocation. For this test to pass, at least one additional data request across + all hook invocations must succeed and return a FHIR resource. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-20' + + def fhir_data_returned?(request) + return false unless request.status.to_s.starts_with?('2') + + fhir_response = FHIR.from_contents(request.response_body) + return false unless fhir_response.present? + + if fhir_response.is_a?(FHIR::Bundle) + fhir_response.entry.any? { |entry| entry.resource.present? } + else + true + end + rescue JSON::ParserError + false + end + + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + data_returned = hook_requests.any? do |request| + request_body = JSON.parse(request.request_body) + additional_data_requests = + load_tagged_requests(TagMethods.hook_instance_data_fetch_tag(request_body['hookInstance']), DATA_FETCH_TAG) + + additional_data_requests.any? { |data_request| fhir_data_returned?(data_request) } + rescue JSON::ParserError + false + end + + assert data_returned, + 'Inferno was never able to successfully obtain additional FHIR data during hook processing.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb new file mode 100644 index 00000000..87f46db1 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test.rb @@ -0,0 +1,122 @@ +require_relative '../../multi_request_message_helper' +require_relative '../../crd_client_options' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class HookRequestGrantedScopesTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + include DaVinciCRDTestKit::TaggedRequestLoadHelper + id :crd_v221_hook_request_granted_scopes + title 'Hook requests grant the requested scopes' + description %( + As a part of registration, CRD clients and servers agree on a set of scopes that the server needs + to obtain all data that goes into creating hook responses. For the purposes of simulating a + payer CRD server acting as a part of these tests that evaluate conformance to the CRD specification, + Inferno requires access to all US Core resource types. While in a real exchange scenario, a CRD client + organization might well reject such a set of scopes as too large, for the purposes of testing, the client + must grant these scopes in order for Inferno to verify its conformance. + + During this test, Inferno will verify that the requested scopes covering all resource types profiled in + the selected version of the US Core IG are granted and no more. Clients may choose to grant either user scopes + or patient scopes. If choosing patient scopes, note that the token is used by default for complete testing + of the client's US Core FHIR API, so either that single patient would need to + demonstrate all US Core resources and must support elements or another access token would need + to be provided when testing the client's FHIR API. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-21' + + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + hook_requests.each_with_index do |request, request_index| + request_body = parse_json_request_entity(request.request_body, 'Request body', request_index) + next unless request_body.present? + + # check that the resource scopes match what Inferno requested + granted_resource_scopes = granted_resource_scopes(request_body) + check_granted_resources(granted_resource_scopes, request_index) + check_granted_scopes_level(granted_resource_scopes, request_index) + check_granted_interactions(granted_resource_scopes, request_index) + end + + assert_no_error_messages("#{requests_with_errors_prefix}Granted scopes do not match the requested scopes. " \ + 'See Messages for details.') + end + + def requested_scope_resources + case suite_options[:us_core_version] + when CRDClientOptions::US_CORE_3 + CRDClientOptions::US_CORE_3_RESOURCE_TYPES + when CRDClientOptions::US_CORE_6, CRDClientOptions::US_CORE_7 + CRDClientOptions::US_CORE_6_7_RESOURCE_TYPES + end + end + + def granted_resource_scopes(request_body) + granted_scopes = request_body.dig('fhirAuthorization', 'scope') + return [] unless granted_scopes.present? + + granted_scopes.split(' ').grep(%r{\A\S+/\S+\.\S+\z}) # rubocop:disable Style/RedundantArgument + end + + def check_granted_resources(granted_resource_scopes, request_index) + granted_scope_resources = granted_resource_scopes.map { |scope| scope.split('/').last.split('.').first } + + missing_resources = requested_scope_resources - granted_scope_resources + extra_resources = granted_scope_resources - requested_scope_resources + if missing_resources.present? + add_request_message('error', 'Granted scopes missing the following ' \ + "requested resource types: #{missing_resources.join(', ')}", request_index) + end + return unless extra_resources.present? + + add_request_message('error', 'Granted scopes included the following resource types ' \ + "beyond what was requested: #{extra_resources.join(', ')}", request_index) + end + + def check_granted_interactions(granted_resource_scopes, request_index) + return if granted_resource_scopes.all? { |scope| scope.split('.').last == 'rs' } + + if granted_resource_scopes.all? { |scope| scope.split('.').last == 'read' } + add_request_message('warning', + 'SMART v1 `read` scope used. Use of SMART v2 `rs` scope recommended.', + request_index) + return + end + + add_request_message('error', 'Some granted resource scopes do not provide ' \ + "requested 'rs' (read and search) interactions.", request_index) + end + + def check_granted_scopes_level(granted_resource_scopes, request_index) + level = scopes_level(granted_resource_scopes) + if level.blank? + add_request_message('error', + 'Requested scopes did not use a consistent level of scope (patient or user).', + request_index) + return + end + + return if ['user', 'patient'].include?(level) + + add_request_message('error', + "Unexpected level for granted scopes: expected 'user' or 'patient', got '#{level}'.", + request_index) + end + + def scopes_level(granted_resource_scopes) + return nil unless granted_resource_scopes.present? && all_scopes_same_level?(granted_resource_scopes) + + granted_resource_scopes.first.split('/').first + end + + def all_scopes_same_level?(granted_resource_scopes) + granted_resource_scopes.map { |s| s.split('/').first }.uniq.size <= 1 + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb new file mode 100644 index 00000000..1a68a416 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_complete_test.rb @@ -0,0 +1,127 @@ +require_relative '../../../cross_suite/prefetch_completeness_checker' +require_relative '../../tagged_request_load_helper' +require_relative '../../multi_request_message_helper' +require_relative '../client_urls' + +module DaVinciCRDTestKit + module V221 + class HookRequestPrefetchCompleteTest < Inferno::Test + include DaVinciCRDTestKit::TaggedRequestLoadHelper + include DaVinciCRDTestKit::MultiRequestMessageHelper + + id :crd_v221_hook_request_prefetch_complete + title 'Hook requests include the requested prefetch data' + description %( + The [CDS service discovery response `prefetch` field](https://cds-hooks.hl7.org/2026Jan/en/#response) + contains key/value pairs describing additional information needed to render a response. Each key is a + string that describes the type of data being requested and the corresponding + value is a FHIR query (read or search) that will return the desired scope. + See the [Prefetch Template](https://cds-hooks.hl7.org/2026Jan/en/#prefetch-template) + section for more information about the format of `prefetch` templates. + + [The CRD IG requires client support for prefetch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#prefetch) + including the ability to provide all data in and subsets of the [standard prefetch templates](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#standard-prefetch), + when they are requested by the invoked CRD server. Inferno simulates two CRD servers, + one at `#{ClientURLs.discovery_url}` requiring the [complete set of standard prefetches](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-v221.json) + and the other at `#{ClientURLs.prefetch_subset_discovery_url}` + [requesting a subset of the standard prefetch data set](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/client/v2.2.1/cds-services-prefetch-subset-v221.json). + + During this test, Inferno will verify that each hook request body includes a `prefetch` field populated with + valid JSON that contains exactly the requested prefetch keys and data sets described in the service description + for the invoked service as calculated by Inferno based on the resources provided in the request. + ) + verifies_requirements 'cds-hooks_3.0.0-ballot@30', 'cds-hooks_3.0.0-ballot@231', 'cds-hooks_3.0.0-ballot@45', + 'cds-hooks_3.0.0-ballot@46', 'cds-hooks_3.0.0-ballot@47', 'cds-hooks_3.0.0-ballot@232', + 'cds-hooks_3.0.0-ballot@53', 'cds-hooks_3.0.0-ballot@240', + 'hl7.fhir.us.davinci-crd_2.2.1@dev-29-A', 'hl7.fhir.us.davinci-crd_2.2.1@found-23', + 'hl7.fhir.us.davinci-crd_2.2.1@found-24', 'hl7.fhir.us.davinci-crd_2.2.1@found-25-A', + 'hl7.fhir.us.davinci-crd_2.2.1@found-25-B', 'hl7.fhir.us.davinci-crd_2.2.1@found-31' + + # output emitted only if the behavior is detected + output :demonstrates_fhirpath_collection_as_comma_delimited_string, + :demonstrates_prefetch_subset_distinct_from_complete, + :demonstrates_prefetch_complete_distinct_from_subset + + SERVICE_FILENAMES = { + complete: 'cds-services-v221.json', + subset: 'cds-services-prefetch-subset-v221.json' + }.freeze + + def service_path_for_target(target) + File.join(__dir__, '..', SERVICE_FILENAMES[target]) + end + + def service_path_for_opposite(target) + opposite = target == :complete ? :subset : :complete + service_path_for_target(opposite) + end + + PREFETCH_KEY_COMPARISON_MAP = { + 'patient' => 'pat', + 'encounter' => 'enc', + 'coverage' => 'cov', + 'communicationRequests' => 'comReqs', + 'deviceRequests' => 'devReqs', + 'medicationRequests' => 'medReqs', + 'nutritionOrders' => 'nutOrds', + 'serviceRequests' => 'servReqs', + 'visionPrescriptions' => 'visRxs', + 'devices' => 'devs', + 'medications' => 'meds', + 'practitionerRoles' => 'roles', + 'practitioners' => 'pracs', + 'organizations' => 'orgs', + 'locations' => 'locs' + }.freeze + + def key_comparison_map_for_target(target) + if target == :complete + PREFETCH_KEY_COMPARISON_MAP.invert + else + PREFETCH_KEY_COMPARISON_MAP + end + end + + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + hook_requests.each_with_index do |request, request_index| + hook_request = parse_json_request_entity(request.request_body, 'Request body', request_index) + next unless hook_request.present? + + prefetch_target = if request.url.include?(PREFETCH_SUBSET_PREFIX) + :subset + else + :complete + end + + services_path = service_path_for_target(prefetch_target) + checker = PrefetchCompletenessChecker.new(hook_request, request_index, services_path) + completeness_errors = checker.check_prefetched_data + completeness_errors.each do |error| + add_message('error', error) # NOTE: PrefetchCompletenessChecker adds the (Request #) prefix + end + if checker.observed_fhirpath_collection_as_comma_delimited_string + output demonstrates_fhirpath_collection_as_comma_delimited_string: true + end + if completeness_errors.blank? && + checker.data_set_different_with_alternate_service?( + service_path_for_opposite(prefetch_target), + key_comparison_map_for_target(prefetch_target) + ) + if prefetch_target == :subset + output demonstrates_prefetch_subset_distinct_from_complete: true + else + output demonstrates_prefetch_complete_distinct_from_subset: true + end + end + end + + assert_no_error_messages("#{requests_with_errors_prefix}Incomplete or invalid prefetched data. " \ + 'See Messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb new file mode 100644 index 00000000..a8d24152 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_prefetch_profiles_test.rb @@ -0,0 +1,55 @@ +require_relative '../../../cross_suite/prefetch_profile_validation' +require_relative '../../tagged_request_load_helper' +require_relative '../../multi_request_message_helper' + +module DaVinciCRDTestKit + module V221 + class HookRequestPrefetchProfilesTest < Inferno::Test + include PrefetchProfileValidation + include DaVinciCRDTestKit::TaggedRequestLoadHelper + include DaVinciCRDTestKit::MultiRequestMessageHelper + + id :crd_v221_hook_request_prefetch_profiles + title 'Prefetched resources conform to the required CRD profiles' + description %( + The [CDS service discovery response `prefetch` field](https://cds-hooks.hl7.org/2026Jan/en/#response) + contains key/value pairs describing additional information needed to render a response. Each key is a + string that describes the type of data being requested and the corresponding + value is a FHIR query (read or search) that will return the desired scope. + See the [Prefetch Template](https://cds-hooks.hl7.org/2026Jan/en/#prefetch-template) + section for more information about the format of `prefetch` templates. + + [The CRD IG requires client support for prefetch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#prefetch) + including that the provided resources, which are part of the data included in the hook invocation, + [conform to the appropriate CRD profile](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-21). + + During this test, Inferno will verify that each FHIR resources found under the `prefetch` + field of each request body conforms to the appropriate CRD profile. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-21', 'hl7.fhir.us.davinci-crd_2.2.1@prof-3', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-4', 'hl7.fhir.us.davinci-crd_2.2.1@prof-5', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-6', 'hl7.fhir.us.davinci-crd_2.2.1@prof-7', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-8', 'hl7.fhir.us.davinci-crd_2.2.1@prof-9', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-10', 'hl7.fhir.us.davinci-crd_2.2.1@prof-11', + 'hl7.fhir.us.davinci-crd_2.2.1@prof-12' + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + hook_requests.each_with_index do |request, request_index| + hook_request = parse_json_request_entity(request.request_body, 'Request body', + request_index) + next unless hook_request.present? + next unless hook_request.key?('prefetch') + + check_prefetch_profiles(hook_request['prefetch'], request_index) + end + + assert_no_error_messages("#{requests_with_errors_prefix}Prefetched data not conformant to CRD profiles. " \ + 'See Messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb new file mode 100644 index 00000000..8337c332 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test.rb @@ -0,0 +1,54 @@ +require_relative '../../multi_request_message_helper' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class HookRequestRequestedVersionTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + include DaVinciCRDTestKit::TaggedRequestLoadHelper + + id :crd_v221_hook_request_requested_version + title 'Hook requests contains the CRD version extension' + description %( + Inferno's CRD service supports multiple versions of CRD, so [clients are required](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#ci-c-dev-3) + to specify the requested version using the `davinci-crd.requestedVersion` extension on each request. + + During this test, Inferno will verify that the body of each hook request contains + the `davinci-crd.requestedVersion` extension with the correct value: "2.2". + ) + + verifies_requirements 'cds-hooks_3.0.0-ballot@214', 'hl7.fhir.us.davinci-crd_2.2.1@dev-3-A', + 'hl7.fhir.us.davinci-crd_2.2.1@dev-12' + + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + hook_requests.each_with_index do |request, request_index| + request_body = parse_json_request_entity(request.request_body, 'Request body', request_index) + next unless request_body.present? + + requested_version = request_body.dig('extension', 'davinci-crd.requestedVersion') + if requested_version.blank? + add_request_message('error', "Required extension 'davinci-crd.requestedVersion' is not present.", + request_index) + elsif !requested_version.is_a?(String) + add_request_message('error', + "For extension 'davinci-crd.requestedVersion' expected a String, " \ + "got #{requested_version.class}", + request_index) + elsif requested_version != '2.2' + add_request_message('error', + "For extension 'davinci-crd.requestedVersion' expected '2.2', " \ + "got '#{requested_version}'", + request_index) + end + end + + assert_no_error_messages("#{requests_with_errors_prefix}Requested version extension not populated properly. " \ + 'See Messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb new file mode 100644 index 00000000..3ba470b8 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test.rb @@ -0,0 +1,48 @@ +require_relative '../../multi_request_message_helper' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class HookRequestSecuredTransportTest < Inferno::Test + include DaVinciCRDTestKit::MultiRequestMessageHelper + include DaVinciCRDTestKit::TaggedRequestLoadHelper + + id :crd_v221_hook_request_secured_transport + title 'Hook request interactions use TLS' + description %( + During this test, Inferno will verify that + requests made by both the client and Inferno's simulated CRD servers are made against + TLS-secured endpoints using the `https` protocol. + ) + verifies_requirements 'cds-hooks_3.0.0-ballot@2', 'cds-hooks_3.0.0-ballot@168', 'cds-hooks_3.0.0-ballot@172', + 'hl7.fhir.us.davinci-crd_2.2.1@sec-2' + + run do + hook_requests = load_hook_requests + + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + hook_requests.each_with_index do |request, request_index| + unless request.url.starts_with?('https') + add_request_message('error', + "Inferno's simulated CRD server must use the https " \ + 'protocol (TLS). Run this suite on a host that uses TLS.', + request_index) + end + + # check that the fhirServer endpoint uses https + request_body = parse_json_request_entity(request.request_body, 'Request body', request_index) + next unless request_body.present? + next unless request_body['fhirServer'].present? && !request_body['fhirServer'].starts_with?('https') + + add_request_message('error', + 'The `fhirServer` provided in the request must use the https protocol (TLS).', + request_index) + end + + assert_no_error_messages("#{requests_with_errors_prefix}Interactions not secured using TLS. " \ + 'See Messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb new file mode 100644 index 00000000..7a5c781a --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/client_display_cards_attest.rb @@ -0,0 +1,74 @@ +require_relative '../client_urls' +require_relative '../../../cross_suite/cards_identification' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class ClientCardDisplayAttest < Inferno::Test + include ClientURLs + include CardsIdentification + include DaVinciCRDTestKit::TaggedRequestLoadHelper + + id :crd_v221_card_display_attest_test + title 'Client displays returned decision support details to the user (Attestation)' + description %( + During this test, the tester will confirm that the received cards and actions in the + hook responses have been displayed or otherwise made available to users of the client system + in an appopriate way that allows for consideration and action if warranted. + ) + + def responded_card_types + list_card_types_in_requests(requests) + end + + def format_responded_response_types + responded_card_types + .map do |response_type| + response_type_string = + response_type.split('_') + .map(&:capitalize) + .join(' ') + .prepend('- ') + .sub('Smart', 'SMART') + .sub('Create Update', 'Create/Update') + .sub('Companions Prerequisites', 'Companions/Prerequisites') + .sub('Card', '(card)') + .sub('Action', '(systemAction)') + response_type_string + end + .join("\n") + end + + output :attest_true_url + output :attest_false_url + + run do + load_hook_requests + skip_if responded_card_types.blank?, 'No responses sent to the client.' + + identifier = SecureRandom.hex(32) + attest_true_url = "#{resume_pass_url}?token=#{identifier}" + attest_false_url = "#{resume_fail_url}?token=#{identifier}" + output(attest_true_url:) + output(attest_false_url:) + wait( + identifier:, + message: <<~MESSAGE + **Card Display Attestation**: + + I attest that the following CRD response types returned by Inferno's simulated + CRD servers were processed by the client system and displayed or otherwise made + available to users of the client system in an appropriate way that allows for + consideration and action if warranted: + + #{format_responded_response_types} + + [Click here](#{attest_true_url}) if the above statement is **true**. + + [Click here](#{attest_false_url}) if the above statement is **false**. + MESSAGE + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb new file mode 100644 index 00000000..916a35f5 --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/hook_response_support_coverage_information_test.rb @@ -0,0 +1,30 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class ClientHookResponseSupportCoverageInformationTest < Inferno::Test + include CardsIdentification + include TaggedRequestLoadHelper + + title 'Client supports the Coverage Information response type on this hook' + id :crd_v221_client_hook_response_support_coverage_information + description <<~DESCRIPTION + During this test, Inferno will verify that the client demonstrated support for the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + response type. At least one hook invocation performed during this group must have returned a Coverage Information action. + + If this test fails, adjust the [cards returned by Inferno's simulated CRD server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) + and/or the hook requests made by the client during this group such that a Coverage Information action is returned. + DESCRIPTION + + run do + hook_requests = load_hook_requests + skip_if hook_requests.blank?, "No #{hook_name} hook requests received." + + sorted_cards = sorted_cards_from_requests(hook_requests) + assert sorted_cards['actions'][COVERAGE_INFORMATION_RESPONSE_TYPE].present?, + "Support for the Coverage Information response type not demonstrated for the #{hook_name} hook." + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb b/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb new file mode 100644 index 00000000..d046131f --- /dev/null +++ b/lib/davinci_crd_test_kit/client/v2.2.1/verify_response/inferno_response_validation.rb @@ -0,0 +1,72 @@ +require_relative '../../../cross_suite/cards_validation' +require_relative '../../../cross_suite/cards_logical_model_validation' +require_relative '../../tagged_request_load_helper' + +module DaVinciCRDTestKit + module V221 + class InfernoResponseValidationTest < Inferno::Test + include CardsValidation + include CardsLogicalModelValidation + include DaVinciCRDTestKit::TaggedRequestLoadHelper + + title 'Hook responses have the correct structure and content' + description %( + During this test, Inferno will verify that each hook response built by Inferno's simulated CRD servers + and returned to the client conforms to CDS Hooks and CRD requirements. These responses must be conformant + for the client to demonstrate its ability to accept and process valid CRD responses. + + If this test fails when the tester provided a custom response template, adjust the + provided template and the submitted requests so that the response built by Inferno + is conformant. If this test fails when Inferno mocked the response based on selected + card types, first ensure that the client's request is conformant. If the request is conformant + but Inferno's response(s) are still not conformant, please report this failure to the + Inferno team via [GitHub Issues](https://github.com/inferno-framework/davinci-crd-test-kit/issues). + For more details on how Inferno builds responses, see the + [Controlling Simulated Responses](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) + section of the [CRD Test Kit Wiki](https://github.com/inferno-framework/davinci-crd-test-kit/wiki). + ) + id :crd_v221_inferno_response_validation + simulation_verification + + verifies_requirements 'cds-hooks_3.0.0-ballot@3', 'cds-hooks_3.0.0-ballot@222', 'cds-hooks_3.0.0-ballot@223', + 'cds-hooks_3.0.0-ballot@224' + + input :custom_response_template, optional: true + + def response_label(index = nil) + response_type = (custom_response_template.present? ? 'Custom built' : 'Mocked') + "#{response_type} response#{index.present? ? " #{index}" : ''}" + end + + def validate_card_summaries(cards) + return unless cards.is_a?(Array) + + cards.each { |card| card_summary_check(card) if card.is_a?(Hash) } + end + + run do + load_hook_requests + + skip_if request.blank?, "No #{response_label.downcase}s to verify." + + entity_validated = false + requests.each_with_index do |request, index| + response_hash = JSON.parse(request.response_body) + + next unless response_hash['cards'].present? || response_hash['systemActions'].present? + + entity_validated = true + validate_card_summaries(response_hash['cards']) + perform_cards_logical_model_validation(response_hash['cards'], response_hash['systemActions'], index) + rescue JSON::ParserError + next + end + + skip_if !entity_validated, + "No #{response_label.downcase} cards or system actions to verify returned by Inferno." + + no_error_validation("Invalid Inferno #{response_label.downcase}(s). See Messages for details.") + end + end + end +end diff --git a/lib/davinci_crd_test_kit/client_fhir_api_group.rb b/lib/davinci_crd_test_kit/client_fhir_api_group.rb deleted file mode 100644 index 726ab206..00000000 --- a/lib/davinci_crd_test_kit/client_fhir_api_group.rb +++ /dev/null @@ -1,785 +0,0 @@ -require 'tls_test_kit' -require_relative 'crd_options' -require_relative 'client_tests/client_fhir_api_read_test' -require_relative 'client_tests/client_fhir_api_search_test' -require_relative 'client_tests/client_fhir_api_create_test' -require_relative 'client_tests/client_fhir_api_update_test' -require_relative 'client_tests/client_fhir_api_validation_test' -require 'smart_app_launch/smart_stu1_suite' -require 'smart_app_launch/smart_stu2_suite' - -module DaVinciCRDTestKit - class ClientFHIRAPIGroup < Inferno::TestGroup - title 'FHIR API' - description <<~DESCRIPTION - Systems wishing to conform to the [CRD Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html) - role are responsible for returning data requested by the CRD Server needed to provide decision support. The Da - Vinci CRD Client FHIR API Test Group contains tests that test the ['server' capabilities](https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1) - of the CRD Client and ensures that the CRD Client can respond to CRD Server queriers. These 'server' capabilities - are based on [US Core](https://hl7.org/fhir/us/core/STU3.1.1/). This test kit does not test the base US Core - capabilities. In addition to the U.S. Core expectations, the CRD Client SHALL support all 'SHOULD' `read` and - `search` capabilities listed for resources referenced in supported hooks and order types if it does not support - returning the associated resources as part of CDS Hooks pre-fetch. The CRD Client SHALL also support `update` - functionality for all resources listed where the client allows invoking hooks based on the resource. - - This test group contains two main groups of tests: - * SMART App Launch Authorization: A group of tests that perform FHIR API authorization using [SMART on FHIR](https://hl7.org/fhir/smart-app-launch/index.html) - EHR Launch Sequence - * CRD FHIR RESTful Capabilities: A group of tests that test each CRD resource profile and ensure the CRD client - supports the appropriate FHIR operations required on each resource - DESCRIPTION - id :crd_client_fhir_api - - input :url, - title: 'FHIR Endpoint', - description: 'URL of the CRD FHIR server' - - group do - title 'Authorization' - description %( - Perform an EHR [SMART App Launch](https://www.hl7.org/fhir/smart-app-launch/) to Authorize the client FHIR - server with Inferno so that Inferno may access resources on the FHIR server in order to perform the FHIR RESTful - Capabilities tests. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@64', 'hl7.fhir.us.davinci-crd_2.0.1@65', - 'hl7.fhir.us.davinci-crd_2.0.1@66', 'hl7.fhir.us.davinci-crd_2.0.1@89', - 'hl7.fhir.us.davinci-crd_2.0.1@92', 'cds-hooks_2.0@174' - - config( - inputs: { - smart_auth_info: { - name: :smart_auth_info, - title: 'EHR Launch Credentials', - options: { - mode: 'auth', - components: [ - Inferno::DSL::AuthInfo.default_auth_type_component_without_backend_services - ] - } - } - }, - outputs: { - smart_auth_info: { name: :smart_auth_info } - } - ) - - group from: :smart_discovery do - required_suite_options CRDOptions::SMART_1_REQUIREMENT - run_as_group - - test from: :tls_version_test do - title 'CRD FHIR Server is secured by transport layer security' - description <<~DESCRIPTION - Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html), - the CRD Implementation Guide imposes the following rule about TLS: - - As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety), - communications between CRD Clients and CRD Servers SHALL - use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and - CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based - on HRex rules for PHI exchange. - - This test verifies that the FHIR server is using TLS 1.2 or higher. - DESCRIPTION - id :crd_server_tls_version_stu1 - - config( - options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION } - ) - end - end - - group from: :smart_ehr_launch, - required_suite_options: CRDOptions::SMART_1_REQUIREMENT, - run_as_group: true - - group from: :smart_discovery_stu2 do - required_suite_options CRDOptions::SMART_2_REQUIREMENT - run_as_group - - test from: :tls_version_test do - title 'CRD FHIR Server is secured by transport layer security' - description <<~DESCRIPTION - Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html), - the CRD Implementation Guide imposes the following rule about TLS: - - As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety), - communications between CRD Clients and CRD Servers SHALL - use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and - CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based - on HRex rules for PHI exchange. - - This test verifies that the FHIR server is using TLS 1.2 or higher. - DESCRIPTION - id :crd_server_tls_version_stu2 - - config( - options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION } - ) - end - end - - group from: :smart_ehr_launch_stu2, - required_suite_options: CRDOptions::SMART_2_REQUIREMENT, - run_as_group: true - - group from: :smart_openid_connect do - run_as_group - optional - config( - inputs: { - id_token: { name: :ehr_id_token } - } - ) - end - - group from: :smart_token_refresh do - run_as_group - optional - config( - inputs: { - received_scopes: { name: :ehr_received_scopes } - } - ) - end - end - - group do - title 'FHIR RESTful Capabilities' - description %( - This test group contains groups of tests for each CRD resource profile and ensures the [CRD Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html) - supports the appropriate FHIR operations required on each resource. For each resource, Inferno will perform the - required FHIR operations, and then it will validate any resources that are returned as a result of - these FHIR operations. - - The resources that are a part of the CRD IG configuration include: - * [Appointment](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Appointment1-1) - * [CommunicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#CommunicationRequest1-2) - * [Coverage](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Coverage1-3) - * [Device](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Device1-4) - * [DeviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#DeviceRequest1-5) - * [Encounter](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Encounter1-6) - * [Patient](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Patient1-7) - * [Practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Practitioner1-8) - * [PractitionerRole](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#PractitionerRole1-9) - * [Location](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Location1-10) - * [MedicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#MedicationRequest1-11) - * [NutritionOrder](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#NutritionOrder1-12) - * [Organization](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Organization1-13) - * [ServiceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#ServiceRequest1-14) - * [ClaimResponse](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#ClaimResponse1-15) - * [Task](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#Task1-16) - * [VisionPrescription](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html#VisionPrescription1-17) - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@43' - - input :url - input :smart_auth_info, - type: :auth_info, - title: 'OAuth Credentials', - options: { mode: 'access' }, - optional: true - - fhir_client do - url :url - auth_info :smart_auth_info - end - - group do - title 'Appointment' - description %( - Verify the CRD client can perform the required FHIR interactions on the Appointment resource, and - validate any returned resources against the [CRD Appointment profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-appointment.html) - - Required Appointment resource FHIR interactions: - * SHOULD support `update` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'Appointment' }, - inputs: { - update_resources: { - name: :appointment_update_resources, - title: 'Appointment Resources' - } - } - } - end - - group do - title 'CommunicationRequest' - description %( - Verify the CRD client can perform the required FHIR interactions on the CommunicationRequest resource, and - validate any returned resources against the [CRD CommunicationRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html) - - Required CommunicationRequest resource FHIR interactions: - * SHOULD support `update` - - Resource Conformance: SHOULD - ) - optional - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'CommunicationRequest' }, - inputs: { - update_resources: { - name: :communication_request_update_resources, - title: 'CommunicationRequest Resources' - } - } - } - end - - group do - title 'Coverage' - description %( - Verify the CRD client can perform the required FHIR interactions on the Coverage resource, and - validate any returned resources against the [CRD Coverage profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-coverage.html) - - Required Coverage resource FHIR interactions: - * SHALL support search by [`patient`](http://hl7.org/fhir/R4/coverage.html#search) - * SHALL support search by [`status`](http://hl7.org/fhir/R4/coverage.html#search) - - Resource Conformance: SHALL - ) - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_coverage_patient_search_test, - title: 'Search by patient', - config: { - options: { resource_type: 'Coverage', search_type: 'patient' }, - inputs: { search_param_values: { - name: :patient_ids, - title: 'Patient IDs', - description: 'Comma separated list of Patient IDs that in sum contain all MUST SUPPORT elements' - } } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_coverage_status_search_test, - title: 'Search by status', - config: { - options: { resource_type: 'Coverage', search_type: 'status' }, - inputs: { search_param_values: { - name: :patient_ids - } } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'Coverage' } - } - end - - group do - title 'Device' - description %( - Verify the CRD client can perform the required FHIR interactions on the Device resource, and - validate any returned resources against the [CRD Device profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) - - Required Device resource FHIR interactions: - * SHOULD support `read` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_read_test, - optional: true, - config: { - options: { resource_type: 'Device' }, - inputs: { - resource_ids: { - name: :device_ids, - title: 'Device IDs', - description: 'Comma separated list of Device IDs that in sum contain all MUST SUPPORT elements' - } - } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'Device' } - } - end - - group do - title 'DeviceRequest' - description %( - Verify the CRD client can perform the required FHIR interactions on the DeviceRequest resource, and - validate any returned resources against the [CRD DeviceRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) - - Required DeviceRequest resource FHIR interactions: - * SHOULD support `update` - - Resource Conformance: SHOULD - ) - optional - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'DeviceRequest' }, - inputs: { - update_resources: { - name: :device_request_update_resources, - title: 'DeviceRequest Resources' - } - } - } - end - - group do - title 'Encounter' - description %( - Verify the CRD client can perform the required FHIR interactions on the Encounter resource, and - validate any returned resources against the [CRD Encounter profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html) - - Required Encounter resource FHIR interactions: - * SHOULD support `update` - * SHALL support search by [`_id`](http://hl7.org/fhir/R4/encounter.html#search) - * SHALL support search by [`organization`](http://hl7.org/fhir/R4/encounter.html#search) and - performing an `_include` on Location - - Resource Conformance: SHALL - ) - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'Encounter' }, - inputs: { - update_resources: { - name: :encounter_update_resources, - title: 'Encounter Resources' - } - } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_encounter_id_search_test, - title: 'Search by _id', - config: { - options: { resource_type: 'Encounter', search_type: '_id' }, - inputs: { search_param_values: { - name: :encounter_ids, - title: 'Encounter IDs', - description: 'Comma separated list of Encounter IDs that in sum contain all MUST SUPPORT elements' - } } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_encounter_organization_search_test, - title: 'Search by organization', - config: { - options: { resource_type: 'Encounter', search_type: 'organization' }, - inputs: { search_param_values: { - name: :organization_ids, - title: 'Organization IDs', - description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements' - } } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_encounter_location_include_test, - title: 'Search by _id and _include location', - config: { - options: { resource_type: 'Encounter', search_type: 'location_include' }, - inputs: { search_param_values: { - name: :encounter_ids, - title: 'Encounter IDs', - description: 'Comma separated list of Encounter IDs that in sum contain all MUST SUPPORT elements' - } } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'Encounter' } - } - end - - group do - title 'Patient' - description %( - Verify the CRD client can perform the required FHIR interactions on the Patient resource, and - validate any returned resources against the [CRD Patient profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html) - - Required Patient resource FHIR interactions: - * SHOULD support `read` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_read_test, - optional: true, - config: { - options: { resource_type: 'Patient' }, - inputs: { - resource_ids: { - name: :patient_ids, - title: 'Patient IDs', - description: 'Comma separated list of Patient IDs that in sum contain all MUST SUPPORT elements' - } - } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'Patient' } - } - end - - group do - title 'Practitioner' - description %( - Verify the CRD client can perform the required FHIR interactions on the Practitioner resource, and - validate any returned resources against the [CRD Practitioner profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) - - Required Practitioner resource FHIR interactions: - * SHOULD support `read` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_read_test, - optional: true, - config: { - options: { resource_type: 'Practitioner' }, - inputs: { - resource_ids: { - name: :practitioner_ids, - title: 'Practitioner IDs', - description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements' - } - } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'Practitioner' } - } - end - - group do - title 'PractitionerRole' - description %( - Verify the CRD client can perform the required FHIR interactions on the PractitionerRole resource, and - validate any returned resources against the [US Core PractitionerRole profile](https://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html) - - Required PractitionerRole resource FHIR interactions: - * SHALL support search by [`_id`](http://hl7.org/fhir/R4/practitionerrole.html#search) - * SHALL support search by [`organization`](http://hl7.org/fhir/R4/practitionerrole.html#search) and - performing an `_include` on Organization - * SHALL support search by [`practitioner`](http://hl7.org/fhir/R4/practitionerrole.html#search) and - performing an `_include` on Practitioner - - Resource Conformance: SHALL - ) - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_practitioner_role_id_search_test, - title: 'Search by _id', - config: { - options: { resource_type: 'PractitionerRole', search_type: '_id' }, - inputs: { search_param_values: { - name: :practitioner_role_ids, - title: 'PractitionerRole IDs', - description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements' - } } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_practitioner_role_organization_search_test, - title: 'Search by organization', - config: { - options: { resource_type: 'PractitionerRole', search_type: 'organization' }, - inputs: { search_param_values: { - name: :organization_ids, - title: 'Organization IDs', - description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements' - } } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_practitioner_role_practitioner_search_test, - title: 'Search by practitioner', - config: { - options: { resource_type: 'PractitionerRole', search_type: 'practitioner' }, - inputs: { search_param_values: { - name: :practitioner_ids, - title: 'Practitioner IDs', - description: 'Comma separated list of Practitioner IDs that in sum contain all MUST SUPPORT elements' - } } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_practitioner_role_organization_include_test, - title: 'Search by _id and _include organization', - config: { - options: { resource_type: 'PractitionerRole', search_type: 'organization_include' }, - inputs: { search_param_values: { - name: :practitioner_role_ids, - title: 'PractitionerRole IDs', - description: %( - Comma separated list of PractitionerRole IDs that in sum contain all MUST SUPPORT elements - ) - } } - } - - test from: :crd_client_fhir_api_search_test, - id: :crd_client_practitioner_role_practitioner_include_test, - title: 'Search by _id and _include practitioner', - config: { - options: { resource_type: 'PractitionerRole', search_type: 'practitioner_include' }, - inputs: { search_param_values: { - name: :practitioner_role_ids, - title: 'PractitionerRole IDs', - description: %( - Comma separated list of PractitionerRole IDs that in sum contain all MUST SUPPORT elements - ) - } } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'PractitionerRole' } - } - end - - group do - title 'Location' - description %( - Verify the CRD client can perform the required FHIR interactions on the Location resource, and - validate any returned resources against the [CRD Location profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-location.html) - - Required Location resource FHIR interactions: - * SHOULD support `read` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_read_test, - optional: true, - config: { - options: { resource_type: 'Location' }, - inputs: { - resource_ids: { - name: :location_ids, - title: 'Location IDs', - description: 'Comma separated list of Location IDs that in sum contain all MUST SUPPORT elements' - } - } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'Location' } - } - end - - group do - title 'MedicationRequest' - description %( - Verify the CRD client can perform the required FHIR interactions on the MedicationRequest resource, and - validate any returned resources against the [CRD MedicationRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) - - Required MedicationRequest resource FHIR interactions: - * SHOULD support `update` - - Resource Conformance: SHOULD - ) - optional - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'MedicationRequest' }, - inputs: { - update_resources: { - name: :medication_request_update_resources, - title: 'MedicationRequest Resources' - } - } - } - end - - group do - title 'NutritionOrder' - description %( - Verify the CRD client can perform the required FHIR interactions on the NutritionOrder resource, and - validate any returned resources against the [CRD NutritionOrder profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) - - Required NutritionOrder resource FHIR interactions: - * SHOULD support `update` - - Resource Conformance: SHOULD - ) - optional - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'NutritionOrder' }, - inputs: { - update_resources: { - name: :nutrition_order_update_resources, - title: 'NutritionOrder Resources' - } - } - } - end - - group do - title 'Organization' - description %( - Verify the CRD client can perform the required FHIR interactions on the Organization resource, and - validate any returned resources against the [CRD Organization profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-organization.html) - - Required Organization resource FHIR interactions: - * SHOULD support `read` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_read_test, - optional: true, - config: { - options: { resource_type: 'Organization' }, - inputs: { - resource_ids: { - name: :organization_ids, - title: 'Organization IDs', - description: 'Comma separated list of Organization IDs that in sum contain all MUST SUPPORT elements' - } - } - } - - test from: :crd_client_fhir_api_validation_test, - config: { - options: { resource_type: 'Organization' } - } - end - - group do - title 'ServiceRequest' - description %( - Verify the CRD client can perform the required FHIR interactions on the ServiceRequest resource, and - validate any returned resources against the [CRD ServiceRequest profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) - - Required ServiceRequest resource FHIR interactions: - * SHOULD support `update` - - Resource Conformance: SHOULD - ) - optional - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'ServiceRequest' }, - inputs: { - update_resources: { - name: :service_request_update_resources, - title: 'ServiceRequest Resources' - } - } - } - end - - group do - title 'ClaimResponse' - description %( - Verify the CRD client can perform the required FHIR interactions on the ClaimResponse resource, and - validate any returned resources against the [CRD ClaimResponse profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-claimresponse.html) - - Required ClaimResponse resource FHIR interactions: - * SHOULD support `create` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_create_test, - optional: true, - config: { - options: { resource_type: 'ClaimResponse' }, - inputs: { - create_resources: { - name: :claim_response_create_resources, - title: 'ClaimResponse Resources' - } - } - } - end - - group do - title 'Task' - description %( - Verify the CRD client can perform the required FHIR interactions on the Task resource, and - validate any returned resources against the [CRD Task profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-taskquestionnaire.html) - - Required Task resource FHIR interactions: - * SHOULD support `create` - - Resource Conformance: SHOULD - ) - optional - - test from: :crd_client_fhir_api_create_test, - optional: true, - config: { - options: { resource_type: 'Task' }, - inputs: { - create_resources: { - name: :task_create_resources, - title: 'Task Resources' - } - } - } - end - - group do - title 'VisionPrescription' - description %( - Verify the CRD client can perform the required FHIR interactions on the VisionPrescription resource, and - validate any returned resources against the [CRD VisionPrescription profile](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) - - Required VisionPrescription resource FHIR interactions: - * SHOULD support `update` - - Resource Conformance: SHOULD - ) - optional - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150' - - test from: :crd_client_fhir_api_update_test, - optional: true, - config: { - options: { resource_type: 'VisionPrescription' }, - inputs: { - update_resources: { - name: :vision_prescription_update_resources, - title: 'VisionPrescription Resources' - } - } - } - end - end - end -end diff --git a/lib/davinci_crd_test_kit/client_hooks_group.rb b/lib/davinci_crd_test_kit/client_hooks_group.rb deleted file mode 100644 index 9fb48687..00000000 --- a/lib/davinci_crd_test_kit/client_hooks_group.rb +++ /dev/null @@ -1,75 +0,0 @@ -require_relative 'client_tests/client_appointment_book_group' -require_relative 'client_tests/client_encounter_discharge_group' -require_relative 'client_tests/client_encounter_start_group' -require_relative 'client_tests/client_order_dispatch_group' -require_relative 'client_tests/client_order_select_group' -require_relative 'client_tests/client_order_sign_group' - -require_relative 'jwt_helper' -require_relative 'urls' - -module DaVinciCRDTestKit - class ClientHooksGroup < Inferno::TestGroup - title 'Hooks' - description <<~DESCRIPTION - This Group contains tests which verify that valid hook requests can be made for each of the following - [six hooks contained in the implementation guide](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html): - * [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) - * [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) - * [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) - * [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) - * [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) - * [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) - - Each hook group contains a test which waits for incoming hook requests from the CRD client, and tests which - verify the incoming hook requests conform to the specific hook requirements specified the - CRD IG and the [CDS hooks spec](https://cds-hooks.hl7.org/2.0/). - - Each hook group tests the following: - * If the CRD Client can invoke the specific hook service request - * If the incoming hook request is properly authorized with a JWT Bearer token according to the [CDS Hooks authorization requirements](https://cds-hooks.hl7.org/2.0/#trusting-cds-clients) - * If the incoming hook request contains valid required fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1) - * If the incoming hook request contains valid optional fields listed in the [CDS Hooks HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1) - * If the hook request's `context` field is valid according to the specific `context` requirements defined for - each hook type - * If the incoming hook request contains the optional `prefetch` field with valid resources - * If the hook response generated by Inferno is conformant. - * If the client can properly display the cards returned as a result of the hook request - - Note: In order to successfully return a conformant `Coverage Information` system action, a Coverage resource must either be - provided in the service request's `prefetch` field, or must be fetchable from the client's FHIR server for - the patient provided in the service request. - DESCRIPTION - id :crd_client_hooks - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@149' - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` - header of all requests. Run or re-run the **Client Registration** group to set or - change this value. - ), - locked: true - - input_order :cds_jwt_iss, :cds_jwk_set - - group from: :crd_client_appointment_book, - optional: true - - group from: :crd_client_encounter_start, - optional: true - - group from: :crd_client_encounter_discharge, - optional: true - - group from: :crd_client_order_select, - optional: true - - group from: :crd_client_order_dispatch, - optional: true - - group from: :crd_client_order_sign, - optional: true - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test.rb b/lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test.rb deleted file mode 100644 index 7922c889..00000000 --- a/lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test.rb +++ /dev/null @@ -1,103 +0,0 @@ -require_relative '../urls' - -module DaVinciCRDTestKit - class AppointmentBookReceiveRequestTest < Inferno::Test - include URLs - - id :crd_appointment_book_request - title 'Request received for appointment-book hook' - description %( - This test waits for multiple incoming [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) - hook requests and responds to the client with the response types selected as an input. This hook is a 'primary' - hook, meaning that CRD Servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) - system action for these hooks, even if the response indicates that further information is needed or that the - level of detail provided is insufficient to determine coverage. - - For more details on how Inferno's simulated CDS Service behave during hook invocation see the - [Simulated CDS Services](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#cds-services) - documentation. - ) - config options: { accepts_multiple_requests: true } - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@171', - 'hl7.fhir.us.davinci-crd_2.0.1@183', 'hl7.fhir.us.davinci-crd_2.0.1@243', - 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', - 'cds-hooks_2.0@15' - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` - header of all requests. Run or re-run the **Client Registration** group to set or - change this value. - ), - locked: true - input :appointment_book_selected_response_types, - title: 'Response types to return from appointment-book hook requests', - description: %( - Select the cards/action response types that the Inferno hook request endpoints will return. The default - response type that will be returned for this hook is the `Coverage Information` card type. - ), - type: 'checkbox', - default: ['coverage_information', 'external_reference', 'instructions'], - optional: true, - options: { - list_options: [ - { - label: 'External Reference', - value: 'external_reference' - }, - { - label: 'Instructions', - value: 'instructions' - }, - { - label: 'Coverage Information', - value: 'coverage_information' - }, - { - label: 'Request Form Completion', - value: 'request_form_completion' - }, - { - label: 'Create/Update Coverage Information', - value: 'create_update_coverage_info' - }, - { - label: 'Launch SMART Application', - value: 'launch_smart_app' - } - ] - } - input :appointment_book_custom_response_template, - title: 'Custom response for appointment-book hook requests', - description: %( - A JSON string may be provided here to replace the normal response - from the hook request endpoint - ), - type: 'textarea', - optional: true - output :continuation_url - - run do - identifier = "appointment-book #{cds_jwt_iss}" - continuation_url = "#{resume_pass_url}?token=#{identifier.gsub(' ', '%20')}" - output(continuation_url:) - - wait( - identifier:, - message: %( - **Appointment Book CDS Service Test**: - - Invoke the appointment-book hook and send requests to: - - `#{appointment_book_url}` - - Inferno will process the requests and return CDS cards if successful. - - [Click here](#{continuation_url}) when you have finished - submitting requests. - ) - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_appointment_book_group.rb b/lib/davinci_crd_test_kit/client_tests/client_appointment_book_group.rb deleted file mode 100644 index 02d06e5d..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_appointment_book_group.rb +++ /dev/null @@ -1,88 +0,0 @@ -require_relative 'appointment_book_receive_request_test' -require_relative 'client_display_cards_attest' -require_relative 'decode_auth_token_test' -require_relative 'hook_request_optional_fields_test' -require_relative 'hook_request_required_fields_test' -require_relative 'hook_request_valid_context_test' -require_relative 'hook_request_valid_prefetch_test' -require_relative 'hook_request_fetched_data_test' -require_relative 'hook_request_prefetch_equals_queried_test' -require_relative 'retrieve_jwks_test' -require_relative 'inferno_response_validation' -require_relative 'token_header_test' -require_relative 'token_payload_test' - -module DaVinciCRDTestKit - class ClientAppointmentBookGroup < Inferno::TestGroup - title 'appointment-book' - id :crd_client_appointment_book - description <<~DESCRIPTION - The appointment-book hook is invoked when the user is scheduling one or more future encounters/visits for the - patient. These tests are based on the following criteria: - * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book), - which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID - fields - * Specific [appointment-book `context` requirements](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/) - defined in the CDS Hooks specification - - This version of the CRD implementation guide refers to version 1.0 of the hook. - DESCRIPTION - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@172' - - run_as_group - - input_order :cds_jwt_iss, :cds_jwk_set - - config( - inputs: { - auth_token_headers_json: { name: :appointment_book_auth_token_headers_json }, - auth_tokens: { name: :appointment_book_auth_tokens }, - auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json }, - client_access_token: { name: :appointment_book_client_access_token }, - override_access_token: { name: :appointment_book_override_access_token, - title: 'appointment-book Prefetch Validation Override Bearer Token' }, - client_fhir_server: { name: :appointment_book_client_fhir_server }, - crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json }, - custom_response_template: { name: :appointment_book_custom_response_template }, - selected_response_types: { name: :appointment_book_selected_response_types } - }, - outputs: { - auth_token_headers_json: { name: :appointment_book_auth_token_headers_json }, - auth_token_payloads_json: { name: :appointment_book_auth_token_payloads_json }, - auth_tokens: { name: :appointment_book_auth_tokens }, - auth_tokens_jwk_json: { name: :appointment_book_auth_tokens_jwk_json }, - client_access_token: { name: :appointment_book_client_access_token }, - client_fhir_server: { name: :appointment_book_client_fhir_server }, - crd_jwks_json: { name: :appointment_book_crd_jwks_json }, - crd_jwks_keys_json: { name: :appointment_book_crd_jwks_keys_json } - }, - options: { - hook_name: 'appointment-book', - hook_path: APPOINTMENT_BOOK_PATH - } - ) - - test from: :crd_appointment_book_request - test from: :crd_decode_auth_token - test from: :crd_retrieve_jwks - test from: :crd_token_header - test from: :crd_token_payload - test from: :crd_hook_request_required_fields - test from: :crd_hook_request_optional_fields - test from: :crd_hook_request_valid_context do - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', - 'hl7.fhir.us.davinci-crd_2.0.1@177', 'hl7.fhir.us.davinci-crd_2.0.1@178', - 'hl7.fhir.us.davinci-crd_2.0.1@179', 'hl7.fhir.us.davinci-crd_2.0.1@180', - 'hl7.fhir.us.davinci-crd_2.0.1@286', - 'cds-hooks-library_1.0.1@17', 'cds-hooks-library_1.0.1@18', 'cds-hooks-library_1.0.1@19', - 'cds-hooks-library_1.0.1@21', 'cds-hooks-library_1.0.1@22', 'cds-hooks-library_1.0.1@23', - 'cds-hooks-library_1.0.1@25', 'cds-hooks-library_1.0.1@26', 'cds-hooks-library_1.0.1@27', - 'cds-hooks-library_1.0.1@29', 'cds-hooks-library_1.0.1@30', 'cds-hooks-library_1.0.1@31' - end - test from: :crd_hook_request_valid_prefetch - test from: :crd_hook_request_fetched_data - test from: :crd_hook_request_prefetch_equals_queried - test from: :crd_inferno_response_validation - test from: :crd_card_display_attest_test - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_coverage_information.rb b/lib/davinci_crd_test_kit/client_tests/client_card_must_support_coverage_information.rb deleted file mode 100644 index 0d5c1aa3..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_coverage_information.rb +++ /dev/null @@ -1,89 +0,0 @@ -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class ClientCardMustSupportCoverageInformationTest < Inferno::Test - include CardsIdentification - - title 'Coverage Information Action Support' - id :crd_client_card_must_support_coverage_information - description <<~DESCRIPTION - Checks that the client demonstrated support for the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - action type. At least one hook invocation performed during this test session must have returned a Coverage Information action. - Additionally, all [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) - must support elements must be demonstrated across all the returned actions. - - If this test fails, adjust the [cards returned by Inferno's simulated CRD Server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) - and/or the hook requests made by the client during the Hooks tests such that Coverage Information actions are returned - that cover the full scope of the coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) - and support for them is demonstrated. - DESCRIPTION - - ALL_HOOKS = [ - APPOINTMENT_BOOK_TAG, - ENCOUNTER_START_TAG, - ENCOUNTER_DISCHARGE_TAG, - ORDER_DISPATCH_TAG, - ORDER_SELECT_TAG, - ORDER_SIGN_TAG - ].freeze - - def metadata - @metadata ||= YAML.load_file(File.join(__dir__, 'coverage-information_stu201_metadata.yml')) - end - - def configured_hook_name - config.options[:hook_name] - end - - def crd_test_group - config.options[:crd_test_group] - end - - def tags_to_load(hook_name) - crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] - end - - def requests_to_analyze - if configured_hook_name.present? - load_requests_for_tags(tags_to_load(configured_hook_name)) - else - ALL_HOOKS.each_with_object([]) do |hook_name, request_list| - request_list.concat(load_requests_for_tags(tags_to_load(hook_name))) - end - end - end - - def load_requests_for_tags(tags_to_load) - load_tagged_requests(*tags_to_load) - end - - class MustSupportMetadataHolder - attr_accessor :metadata - - def initialize(metadata) - self.metadata = metadata - end - - def must_supports - @must_supports ||= { - extensions: metadata[:must_supports][:extensions] || [], - slices: metadata[:must_supports][:slices] || [], - elements: metadata[:must_supports][:elements] || [] - } - end - end - - run do - loaded_requests = requests_to_analyze - - sorted_cards = sorted_cards_from_requests(loaded_requests) - - assert sorted_cards['actions'][COVERAGE_INFORMATION_RESPONSE_TYPE].present?, - 'Coverage Information action support not demonstrated.' - - coverage_information_extensions = extract_coverage_information_extensions(sorted_cards) - assert_must_support_elements_present(coverage_information_extensions, COVERAGE_INFO_EXT_URL, - metadata: MustSupportMetadataHolder.new(metadata)) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_external_reference.rb b/lib/davinci_crd_test_kit/client_tests/client_card_must_support_external_reference.rb deleted file mode 100644 index 829a580d..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_external_reference.rb +++ /dev/null @@ -1,60 +0,0 @@ -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class ClientCardMustSupportExternalReferenceTest < Inferno::Test - include CardsIdentification - - title 'External Reference Card Support' - id :crd_client_card_must_support_external_reference - description <<~DESCRIPTION - Checks that the client demonstrated support for the [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - card type. At least one hook invocation performed during this test session must have returned an External Reference card. - - If this test fails, adjust the [cards returned by Inferno's simulated CRD Server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) - and/or the hook requests made by the client during the Hooks tests such that an External Reference card is returned and support for it is demonstrated. - DESCRIPTION - - ALL_HOOKS = [ - APPOINTMENT_BOOK_TAG, - ENCOUNTER_START_TAG, - ENCOUNTER_DISCHARGE_TAG, - ORDER_DISPATCH_TAG, - ORDER_SELECT_TAG, - ORDER_SIGN_TAG - ].freeze - - def configured_hook_name - config.options[:hook_name] - end - - def crd_test_group - config.options[:crd_test_group] - end - - def tags_to_load(hook_name) - crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] - end - - def requests_to_analyze - if configured_hook_name.present? - load_requests_for_tags(tags_to_load(configured_hook_name)) - else - ALL_HOOKS.each_with_object([]) do |hook_name, request_list| - request_list.concat(load_requests_for_tags(tags_to_load(hook_name))) - end - end - end - - def load_requests_for_tags(tags_to_load) - load_tagged_requests(*tags_to_load) - end - - run do - loaded_requests = requests_to_analyze - sorted_cards = sorted_cards_from_requests(loaded_requests) - - assert sorted_cards['cards'][EXTERNAL_REFERENCE_RESPONSE_TYPE].present?, - 'External Reference card support not demonstrated.' - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_group.rb b/lib/davinci_crd_test_kit/client_tests/client_card_must_support_group.rb deleted file mode 100644 index 5f75c7d3..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_group.rb +++ /dev/null @@ -1,29 +0,0 @@ -require_relative 'client_card_must_support_coverage_information' -require_relative 'client_card_must_support_external_reference' -require_relative 'client_card_must_support_instructions' - -module DaVinciCRDTestKit - class ClientCardMustSupportGroup < Inferno::TestGroup - title 'Card Must Support' - id :crd_client_card_must_support - description <<~DESCRIPTION - CRD clients are required to support the following card types - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - - This group checks that instances of each of these card types were observed across all hook calls - made by the client as a part of this test session. In the case of the Coverage Information card type, - all must support elements defined in the [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) - must be demonstrated. - - These tests must be run after the tests in the Hooks group are run. - DESCRIPTION - - run_as_group - - test from: :crd_client_card_must_support_coverage_information - test from: :crd_client_card_must_support_external_reference - test from: :crd_client_card_must_support_instructions - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_instructions.rb b/lib/davinci_crd_test_kit/client_tests/client_card_must_support_instructions.rb deleted file mode 100644 index d7e66c7d..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_card_must_support_instructions.rb +++ /dev/null @@ -1,60 +0,0 @@ -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class ClientCardMustSupportInstructionsTest < Inferno::Test - include CardsIdentification - - title 'Instructions Card Support' - id :crd_client_card_must_support_instructions - description <<~DESCRIPTION - Checks that the client demonstrated support for the [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - card type. At least one hook invocation performed during this test session must have returned an Instructions card. - - If this test fails, adjust the [cards returned by Inferno's simulated CRD Server](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Controlling-Simulated-Responses) - and/or the hook requests made by the client during the Hooks tests such that an Instructions card is returned and support for it is demonstrated. - DESCRIPTION - - ALL_HOOKS = [ - APPOINTMENT_BOOK_TAG, - ENCOUNTER_START_TAG, - ENCOUNTER_DISCHARGE_TAG, - ORDER_DISPATCH_TAG, - ORDER_SELECT_TAG, - ORDER_SIGN_TAG - ].freeze - - def configured_hook_name - config.options[:hook_name] - end - - def crd_test_group - config.options[:crd_test_group] - end - - def tags_to_load(hook_name) - crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] - end - - def requests_to_analyze - if configured_hook_name.present? - load_requests_for_tags(tags_to_load(configured_hook_name)) - else - ALL_HOOKS.each_with_object([]) do |hook_name, request_list| - request_list.concat(load_requests_for_tags(tags_to_load(hook_name))) - end - end - end - - def load_requests_for_tags(tags_to_load) - load_tagged_requests(*tags_to_load) - end - - run do - loaded_requests = requests_to_analyze - sorted_cards = sorted_cards_from_requests(loaded_requests) - - assert sorted_cards['cards'][INSTRUCTIONS_RESPONSE_TYPE].present?, - 'Instructions card support not demonstrated.' - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_display_cards_attest.rb b/lib/davinci_crd_test_kit/client_tests/client_display_cards_attest.rb deleted file mode 100644 index cec10013..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_display_cards_attest.rb +++ /dev/null @@ -1,82 +0,0 @@ -require_relative '../urls' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class ClientCardDisplayAttest < Inferno::Test - include URLs - include CardsIdentification - - id :crd_card_display_attest_test - title 'Check that returned decision support details are displayed to the user' - description %( - Since Inferno has no way to evaluate the client's UI, testers must manually - verify that the cards and system actions returned by Inferno are presented - to the user in an appopriate way that allows for consideration and action - if warranted. - ) - - def hook_name - config.options[:hook_name] - end - - def crd_test_group - config.options[:crd_test_group] - end - - def tags_to_load - crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] - end - - def responded_card_types - list_card_types_in_requests(requests) - end - - def format_responded_response_types - responded_card_types - .map do |response_type| - response_type_string = - response_type.split('_') - .map(&:capitalize) - .join(' ') - .prepend('- ') - .sub('Smart', 'SMART') - .sub('Create Update', 'Create/Update') - .sub('Companions Prerequisites', 'Companions/Prerequisites') - .sub('Card', '(card)') - .sub('Action', '(systemAction)') - response_type_string - end - .join("\n") - end - - output :attest_true_url - output :attest_false_url - - run do - load_tagged_requests(*tags_to_load) - - skip_if request.blank?, 'No reponses sent to the client.' - - identifier = SecureRandom.hex(32) - attest_true_url = "#{resume_pass_url}?token=#{identifier}" - attest_false_url = "#{resume_fail_url}?token=#{identifier}" - output(attest_true_url:) - output(attest_false_url:) - wait( - identifier:, - message: <<~MESSAGE - **Card Display Attestation**: - - I attest that the following CDS response types returned were processed by the - client system and displayed to the user: - - #{format_responded_response_types} - - [Click here](#{attest_true_url}) if the above statement is **true**. - - [Click here](#{attest_false_url}) if the above statement is **false**. - MESSAGE - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_encounter_discharge_group.rb b/lib/davinci_crd_test_kit/client_tests/client_encounter_discharge_group.rb deleted file mode 100644 index 6ede7974..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_encounter_discharge_group.rb +++ /dev/null @@ -1,85 +0,0 @@ -require_relative 'encounter_discharge_receive_request_test' -require_relative 'client_display_cards_attest' -require_relative 'decode_auth_token_test' -require_relative 'hook_request_optional_fields_test' -require_relative 'hook_request_required_fields_test' -require_relative 'hook_request_valid_context_test' -require_relative 'hook_request_valid_prefetch_test' -require_relative 'hook_request_fetched_data_test' -require_relative 'hook_request_prefetch_equals_queried_test' -require_relative 'retrieve_jwks_test' -require_relative 'inferno_response_validation' -require_relative 'token_header_test' -require_relative 'token_payload_test' - -module DaVinciCRDTestKit - class ClientEncounterDischargeGroup < Inferno::TestGroup - title 'encounter-discharge' - id :crd_client_encounter_discharge - description <<~DESCRIPTION - The encounter-discharge hook is invoked when the user is performing the discharge process for an encounter where - the notion of 'discharge' is relevant - typically an inpatient encounter. These tests are based on the - following criteria: - * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge), - which includes the profiles that are expected to be used for the resources resolved to by `context` - FHIR ID fields - * Specific [encounter-discharge `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/) - defined in the CDS Hooks specification - - This version of the CRD implementation guide refers to version 1.0 of the hook. - DESCRIPTION - - run_as_group - - input_order :cds_jwt_iss, :cds_jwk_set - - config( - inputs: { - auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json }, - auth_tokens: { name: :encounter_discharge_auth_tokens }, - auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json }, - client_access_token: { name: :encounter_discharge_client_access_token }, - override_access_token: { name: :encounter_discharge_override_access_token, - title: 'encounter-discharge Prefetch Validation Override Bearer Token' }, - client_fhir_server: { name: :encounter_discharge_client_fhir_server }, - crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json }, - custom_response_template: { name: :encounter_discharge_custom_response_template }, - selected_response_types: { name: :encounter_discharge_selected_response_types } - }, - outputs: { - auth_token_headers_json: { name: :encounter_discharge_auth_token_headers_json }, - auth_token_payloads_json: { name: :encounter_discharge_auth_token_payloads_json }, - auth_tokens: { name: :encounter_discharge_auth_tokens }, - auth_tokens_jwk_json: { name: :encounter_discharge_auth_tokens_jwk_json }, - client_access_token: { name: :encounter_discharge_client_access_token }, - client_fhir_server: { name: :encounter_discharge_client_fhir_server }, - crd_jwks_json: { name: :encounter_discharge_crd_jwks_json }, - crd_jwks_keys_json: { name: :encounter_discharge_crd_jwks_keys_json } - }, - options: { - hook_name: 'encounter-discharge', - hook_path: ENCOUNTER_DISCHARGE_PATH - } - ) - - test from: :crd_encounter_discharge_request - test from: :crd_decode_auth_token - test from: :crd_retrieve_jwks - test from: :crd_token_header - test from: :crd_token_payload - test from: :crd_hook_request_required_fields - test from: :crd_hook_request_optional_fields - test from: :crd_hook_request_valid_context do - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@201', 'hl7.fhir.us.davinci-crd_2.0.1@202', - 'hl7.fhir.us.davinci-crd_2.0.1@203', - 'cds-hooks-library_1.0.1@45', 'cds-hooks-library_1.0.1@46', 'cds-hooks-library_1.0.1@47', - 'cds-hooks-library_1.0.1@49', 'cds-hooks-library_1.0.1@50', 'cds-hooks-library_1.0.1@51', - 'cds-hooks-library_1.0.1@53', 'cds-hooks-library_1.0.1@54', 'cds-hooks-library_1.0.1@55' - end - test from: :crd_hook_request_valid_prefetch - test from: :crd_hook_request_fetched_data - test from: :crd_hook_request_prefetch_equals_queried - test from: :crd_inferno_response_validation - test from: :crd_card_display_attest_test - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_encounter_start_group.rb b/lib/davinci_crd_test_kit/client_tests/client_encounter_start_group.rb deleted file mode 100644 index d8cc8d98..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_encounter_start_group.rb +++ /dev/null @@ -1,85 +0,0 @@ -require_relative 'encounter_start_receive_request_test' -require_relative 'client_display_cards_attest' -require_relative 'decode_auth_token_test' -require_relative 'hook_request_optional_fields_test' -require_relative 'hook_request_required_fields_test' -require_relative 'hook_request_valid_context_test' -require_relative 'hook_request_valid_prefetch_test' -require_relative 'hook_request_fetched_data_test' -require_relative 'hook_request_prefetch_equals_queried_test' -require_relative 'retrieve_jwks_test' -require_relative 'inferno_response_validation' -require_relative 'token_header_test' -require_relative 'token_payload_test' - -module DaVinciCRDTestKit - class ClientEncounterStartGroup < Inferno::TestGroup - title 'encounter-start' - id :crd_client_encounter_start - description <<~DESCRIPTION - The encounter-start hook is invoked when the user is initiating a new encounter. These tests are based on the - following criteria: - * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start), - which include the profiles that are expected to be used for the resources resolved to by `context` FHIR ID - fields - * Specific [encounter-start `context` requirements](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/) - defined in the CDS Hooks specification - - This version of the CRD implementation guide refers to version 1.0 of the hook. - DESCRIPTION - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@187' - - run_as_group - - input_order :cds_jwt_iss, :cds_jwk_set - - config( - inputs: { - auth_token_headers_json: { name: :encounter_start_auth_token_headers_json }, - auth_tokens: { name: :encounter_start_auth_tokens }, - auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json }, - client_access_token: { name: :encounter_start_client_access_token }, - override_access_token: { name: :encounter_start_override_access_token, - title: 'encounter-start Prefetch Validation Override Bearer Token' }, - client_fhir_server: { name: :encounter_start_client_fhir_server }, - crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json }, - custom_response_template: { name: :encounter_start_custom_response_template }, - selected_response_types: { name: :encounter_start_selected_response_types } - }, - outputs: { - auth_token_headers_json: { name: :encounter_start_auth_token_headers_json }, - auth_token_payloads_json: { name: :encounter_start_auth_token_payloads_json }, - auth_tokens: { name: :encounter_start_auth_tokens }, - auth_tokens_jwk_json: { name: :encounter_start_auth_tokens_jwk_json }, - client_access_token: { name: :encounter_start_client_access_token }, - client_fhir_server: { name: :encounter_start_client_fhir_server }, - crd_jwks_json: { name: :encounter_start_crd_jwks_json }, - crd_jwks_keys_json: { name: :encounter_start_crd_jwks_keys_json } - }, - options: { - hook_name: 'encounter-start', - hook_path: ENCOUNTER_START_PATH - } - ) - - test from: :crd_encounter_start_request - test from: :crd_decode_auth_token - test from: :crd_retrieve_jwks - test from: :crd_token_header - test from: :crd_token_payload - test from: :crd_hook_request_required_fields - test from: :crd_hook_request_optional_fields - test from: :crd_hook_request_valid_context do - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@192', 'hl7.fhir.us.davinci-crd_2.0.1@193', - 'hl7.fhir.us.davinci-crd_2.0.1@194', - 'cds-hooks-library_1.0.1@33', 'cds-hooks-library_1.0.1@34', 'cds-hooks-library_1.0.1@35', - 'cds-hooks-library_1.0.1@37', 'cds-hooks-library_1.0.1@38', 'cds-hooks-library_1.0.1@39', - 'cds-hooks-library_1.0.1@41', 'cds-hooks-library_1.0.1@42', 'cds-hooks-library_1.0.1@43' - end - test from: :crd_hook_request_valid_prefetch - test from: :crd_hook_request_fetched_data - test from: :crd_hook_request_prefetch_equals_queried - test from: :crd_inferno_response_validation - test from: :crd_card_display_attest_test - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test.rb b/lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test.rb deleted file mode 100644 index 72dacefc..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test.rb +++ /dev/null @@ -1,41 +0,0 @@ -module DaVinciCRDTestKit - class ClientFHIRApiCreateTest < Inferno::Test - id :crd_client_fhir_api_create_test - title 'Create Interaction' - description %( - Verify that the CRD client supports the create interaction for the given resource. The capabilities required - by each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 - ) - - input :create_resources, - type: 'textarea', - description: 'Provide a list of resources to create. e.g., [json_resource_1, json_resource_2]', - optional: true - - def resource_type - config.options[:resource_type] - end - - run do - skip_if create_resources.blank?, 'Provide a list of resources to create to run this test.' - assert_valid_json(create_resources) - create_resources_list = JSON.parse(create_resources) - skip_if(!create_resources_list.is_a?(Array), 'Resources to create not inputted in list format, skipping test.') - - valid_create_resources = - create_resources_list - .compact_blank - .map { |resource| FHIR.from_contents(resource.to_json) } - .select { |resource| resource.resourceType == resource_type } - .select { |resource| resource_is_valid?(resource:) } - - skip_if(valid_create_resources.blank?, - %(No valid #{resource_type} resources were provided to send in Create requests, skipping test.)) - - valid_create_resources.each do |create_resource| - fhir_create(create_resource) - assert_response_status(201) - end - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb b/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb deleted file mode 100644 index 8c059dea..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test.rb +++ /dev/null @@ -1,40 +0,0 @@ -module DaVinciCRDTestKit - class ClientFHIRApiReadTest < Inferno::Test - id :crd_client_fhir_api_read_test - title 'Read Interaction' - description %( - Verify that the CRD client supports the read interaction for the given resource. The capabilities required by - each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 - ) - - input :resource_ids, - optional: true - - def resource_type - config.options[:resource_type] - end - - def no_resources_skip_message - "No #{resource_type} resource ids were provided, skipping test. " - end - - def bad_resource_id_message(expected_id) - "Expected resource to have id: `#{expected_id}`, but found `#{resource.id}`" - end - - run do - skip_if resource_ids.blank?, no_resources_skip_message - - resource_id_list = resource_ids.split(',').map(&:strip) - assert resource_id_list.present?, "No #{resource_type} id provided." - - resource_id_list.each do |resource_id_to_read| - fhir_read resource_type, resource_id_to_read, tags: [resource_type, 'read'] - - assert_response_status(200) - assert_resource_type(resource_type) - assert resource.id.present? && resource.id == resource_id_to_read, bad_resource_id_message(resource_id_to_read) - end - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test.rb b/lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test.rb deleted file mode 100644 index 3f2d450a..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test.rb +++ /dev/null @@ -1,232 +0,0 @@ -module DaVinciCRDTestKit - class ClientFHIRApiSearchTest < Inferno::Test - id :crd_client_fhir_api_search_test - title 'Search Interaction' - description %( - Verify that the CRD client supports the specified search interaction for the given resource. The capabilities - required by each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 - ) - - input :search_param_values, - optional: true - - attr_accessor :successful_search - - def resource_type - config.options[:resource_type] - end - - def search_type - config.options[:search_type] - end - - def include_searches - ['organization_include', 'practitioner_include', 'location_include'] - end - - def reference_search_parameters - ['organization', 'practitioner', 'patient'] - end - - def bad_resource_id_message(expected_id, actual_id) - "Expected resource to have id: `#{expected_id}`, but found `#{actual_id}`" - end - - def perform_fhir_search(search_params, tags) - fhir_search(resource_type, params: search_params, tags:) - assert_response_status(200) - assert_resource_type(:bundle) - resource - end - - def status_search_result_check(bundle, status) - return if bundle.entry.empty? - - self.successful_search = true - - bundle.entry - .reject { |entry| entry&.resource&.resourceType == 'OperationOutcome' } - .map(&:resource) - .each do |resource| - assert_resource_type(resource_type, resource:) - assert(resource.status == status, %( - Each #{resource_type} resource in search result bundle should have a status of `#{status}`, instead got: - `#{resource.status}` for resource with id: `#{resource.id}` - )) - end - end - - def check_id_search_result_entry(bundle_entry, search_id, entry_resource_type) - assert_resource_type(entry_resource_type, resource: bundle_entry) - - assert bundle_entry.id.present?, "Expected id field in returned #{entry_resource_type} resource" - - assert bundle_entry.id == search_id, - bad_resource_id_message(search_id, bundle_entry.id) - end - - def id_search_result_check(bundle, search_id) - warning do - assert bundle.entry.any?, - "Search result bundle is empty for #{resource_type} _id search with an id of `#{search_id}`" - end - return if bundle.entry.empty? - - self.successful_search = true - - bundle.entry - .reject { |entry| entry&.resource&.resourceType == 'OperationOutcome' } - .map(&:resource) - .each do |resource| - check_id_search_result_entry(resource, search_id, resource_type) - end - end - - def check_include_reference(base_resource_entry, include_resource_id, include_resource_type) - base_resource_references = Array.wrap(get_reference_field(include_resource_type, base_resource_entry)).compact - - assert(base_resource_references.present?, %( - #{resource_type} resource with id #{base_resource_entry.id} did not include the field that references a - #{include_resource_type} resource} - )) - - base_resource_reference_match_found = base_resource_references.any? do |base_resource_reference| - base_resource_reference.reference_id == include_resource_id - end - - assert(base_resource_reference_match_found, %( - The #{resource_type} resource in search result bundle with id #{base_resource_entry.id} did not have a - #{include_resource_type} reference with an id of `#{include_resource_id}`.` - )) - end - - def include_search_result_check(bundle, search_id, included_resource_type) # rubocop:disable Metrics/CyclomaticComplexity - warning do - assert bundle.entry.any?, - "Search result bundle is empty for #{resource_type} _include #{search_type} search with an id - of `#{search_id}`" - end - return if bundle.entry.empty? - - self.successful_search = true - - base_resource_entry_list = bundle.entry.select do |entry| - entry.resource&.resourceType == resource_type - end - - assert(base_resource_entry_list.length == 1, %( - The #{included_resource_type} _include search for #{resource_type} resource with id #{search_id} - should include exactly 1 #{resource_type} resource, instead got #{base_resource_entry_list.length}. - )) - - base_resource_entry = base_resource_entry_list.first.resource - - bundle.entry - .map(&:resource) - .each do |resource| - entry_resource_type = resource.resourceType - - if entry_resource_type == resource_type - check_id_search_result_entry(resource, search_id, entry_resource_type) - elsif entry_resource_type != 'OperationOutcome' - entry_resource_type = included_resource_type.capitalize - assert_resource_type(entry_resource_type, resource:) - - included_resource_id = resource.id - assert included_resource_id.present?, "Expected id field in returned #{entry_resource_type} resource" - check_include_reference(base_resource_entry, included_resource_id, included_resource_type) - end - end - end - - def get_reference_field(reference_type, entry) - case reference_type - when 'patient' - entry.beneficiary - when 'practitioner' - entry.practitioner - when 'organization' - if resource_type == 'Encounter' - entry.serviceProvider - else - entry.organization - end - when 'location' - locations = entry.location - locations.map(&:location) - end - end - - def reference_search_result_check(bundle, reference_id, reference_type) - warning do - assert bundle.entry.any?, %( - Search result bundle is empty for #{resource_type} #{reference_type} search with a #{reference_type} id - `#{reference_id}` - ) - end - return if bundle.entry.empty? - - self.successful_search = true - - bundle.entry - .reject { |entry| entry&.resource&.resourceType == 'OperationOutcome' } - .map(&:resource) - .each do |resource| - assert_resource_type(resource_type, resource:) - - entry_reference_field = get_reference_field(reference_type, resource) - assert( - entry_reference_field.present?, - %( - #{resource_type} resource with id #{resource.id} did not include the field that references - a #{reference_type} resource - ) - ) - - entry_reference_id = entry_reference_field.reference_id - assert( - entry_reference_id == reference_id, - %( - The #{resource_type} resource in search result bundle with id #{resource.id} should have a - #{reference_type} reference with an id of `#{reference_id}`, instead got: `#{entry_reference_id}` - ) - ) - end - end - - run do - if search_type == 'status' - coverage_status = ['active', 'cancelled', 'draft', 'entered-in-error'] - coverage_status.each do |status| - bundle = perform_fhir_search({ status: }, [resource_type, 'status_search']) - status_search_result_check(bundle, status) - end - else - skip_if search_param_values.blank?, 'No search parameters passed in, skipping test.' - - search_id_list = search_param_values.split(',').map(&:strip) - search_id_list.each do |search_id| - if search_type == '_id' - bundle = perform_fhir_search({ _id: search_id }, [resource_type, 'id_search']) - id_search_result_check(bundle, search_id) - elsif reference_search_parameters.include?(search_type) - search_params = {} - search_params[search_type] = search_id - bundle = perform_fhir_search(search_params, [resource_type, "#{search_type}_search"]) - reference_search_result_check(bundle, search_id, search_type) - elsif include_searches.include?(search_type) - include_resource_type = search_type.gsub('_include', '') - bundle = perform_fhir_search({ _id: search_id, _include: "#{resource_type}:#{include_resource_type}" }, - [resource_type, "include_#{include_resource_type}_search"]) - include_search_result_check(bundle, search_id, include_resource_type) - else - raise StandardError, - 'Passed in search_type does not match to any of the search types handled by this search test.' - end - end - end - skip_if !successful_search, - 'No resources returned in any of the search result bundles.' - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test.rb b/lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test.rb deleted file mode 100644 index 9039c89b..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test.rb +++ /dev/null @@ -1,41 +0,0 @@ -module DaVinciCRDTestKit - class ClientFHIRApiUpdateTest < Inferno::Test - id :crd_client_fhir_api_update_test - title 'Update Interaction' - description %( - Verify that the CRD client supports the update interaction for the given resource. The capabilities required by - each resource can be found here: https://hl7.org/fhir/us/davinci-crd/CapabilityStatement-crd-client.html#resourcesSummary1 - ) - - input :update_resources, - type: 'textarea', - description: 'Provide a list of resources to update. e.g., [json_resource_1, json_resource_2]', - optional: true - - def resource_type - config.options[:resource_type] - end - - run do - skip_if update_resources.blank?, 'Provide a list of resources to update to run this test.' - assert_valid_json(update_resources) - update_resources_list = JSON.parse(update_resources) - skip_if(!update_resources_list.is_a?(Array), 'Resources to update not inputted in list format, skipping test.') - - valid_update_resources = - update_resources_list - .compact_blank - .map { |resource| FHIR.from_contents(resource.to_json) } - .select { |resource| resource.resourceType == resource_type } - .select { |resource| resource_is_valid?(resource:) } - - skip_if(valid_update_resources.blank?, - %(No valid #{resource_type} resources were provided to send in Update requests, skipping test.)) - - valid_update_resources.each do |update_resource| - fhir_update(update_resource, update_resource.id) - assert_response_status([200, 201]) - end - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb b/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb deleted file mode 100644 index 9e51e96e..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test.rb +++ /dev/null @@ -1,61 +0,0 @@ -module DaVinciCRDTestKit - class ClientFHIRApiValidationTest < Inferno::Test - id :crd_client_fhir_api_validation_test - title 'FHIR Resource Validation' - description %( - Verify that the given resources returned from the previous client API interactions are valid resources. Each - resource is validated against its corresponding [CRD resource profile](https://hl7.org/fhir/us/davinci-crd/STU2/artifacts.html). - ) - - def resource_type - config.options[:resource_type] - end - - def structure_definition_map - { - 'Practitioner' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner', - 'PractitionerRole' => 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole', - 'Patient' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient', - 'Encounter' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter', - 'Coverage' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-coverage', - 'Device' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-device', - 'Location' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location', - 'Organization' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization' - }.freeze - end - - def profile_url - structure_definition_map[resource_type] - end - - run do - load_tagged_requests(resource_type) - skip_if requests.empty?, 'No FHIR api requests were made' - - requests.keep_if { |req| req.status == 200 } - skip_if(requests.blank?, - 'There were no successful FHIR API requests made in previous tests to use in validation.') - - validated_resources = - requests - .map(&:resource) - .compact - .flat_map { |resource| resource.is_a?(FHIR::Bundle) ? resource.entry.map(&:resource) : resource } - .select { |resource| resource.resourceType == resource_type } - .uniq { |resource| resource.to_reference.reference } - .map { |resource| resource_is_valid?(resource:, profile_url:) } - - skip_if(validated_resources.blank?, - %(No #{resource_type} resources were returned from any of the FHIR API requests made in previous tests - that could be validated.)) - - validation_error_count = messages.count { |msg| msg[:type] == 'error' } - invalid_resource_count = validated_resources.reject { |valid| valid }.count - assert(validation_error_count.zero?, - %(#{invalid_resource_count}/#{validated_resources.length} #{resource_type} resources returned from previous - test's FHIR API requests failed validation.)) - - skip_if validated_resources.blank?, 'No FHIR resources were made in previous tests that could be validated.' - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_order_dispatch_group.rb b/lib/davinci_crd_test_kit/client_tests/client_order_dispatch_group.rb deleted file mode 100644 index 0ac1045b..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_order_dispatch_group.rb +++ /dev/null @@ -1,91 +0,0 @@ -require_relative 'order_dispatch_receive_request_test' -require_relative 'client_display_cards_attest' -require_relative 'decode_auth_token_test' -require_relative 'hook_request_optional_fields_test' -require_relative 'hook_request_required_fields_test' -require_relative 'hook_request_valid_context_test' -require_relative 'hook_request_valid_prefetch_test' -require_relative 'hook_request_fetched_data_test' -require_relative 'hook_request_prefetch_equals_queried_test' -require_relative 'retrieve_jwks_test' -require_relative 'inferno_response_validation' -require_relative 'token_header_test' -require_relative 'token_payload_test' - -module DaVinciCRDTestKit - class ClientOrderDispatchGroup < Inferno::TestGroup - title 'order-dispatch' - id :crd_client_order_dispatch - description <<~DESCRIPTION - The order-dispatch hook fires when a practitioner is selecting a candidate performer for a pre-existing order - that was not tied to a specific performer. These tests are based on the following criteria: - * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch), - which includes the profiles that are expected to be used for the resources resolved to by `context` - FHIR ID fields - * Specific [order-dispatch `context` requirements](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/) - defined in the CDS Hooks specification - - This version of the CRD implementation guide refers to version 1.0 of the hook. - DESCRIPTION - - run_as_group - - input_order :cds_jwt_iss, :cds_jwk_set - - config( - inputs: { - auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json }, - auth_tokens: { name: :order_dispatch_auth_tokens }, - auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json }, - client_access_token: { name: :order_dispatch_client_access_token }, - override_access_token: { name: :order_dispatch_override_access_token, - title: 'order-dispatch Prefetch Validation Override Bearer Token' }, - client_fhir_server: { name: :order_dispatch_client_fhir_server }, - crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json }, - custom_response_template: { name: :order_dispatch_custom_response_template }, - selected_response_types: { name: :order_dispatch_selected_response_types } - }, - outputs: { - auth_token_headers_json: { name: :order_dispatch_auth_token_headers_json }, - auth_token_payloads_json: { name: :order_dispatch_auth_token_payloads_json }, - auth_tokens: { name: :order_dispatch_auth_tokens }, - auth_tokens_jwk_json: { name: :order_dispatch_auth_tokens_jwk_json }, - client_access_token: { name: :order_dispatch_client_access_token }, - client_fhir_server: { name: :order_dispatch_client_fhir_server }, - crd_jwks_json: { name: :order_dispatch_crd_jwks_json }, - crd_jwks_keys_json: { name: :order_dispatch_crd_jwks_keys_json } - }, - options: { - hook_name: 'order-dispatch', - hook_path: ORDER_DISPATCH_PATH - } - ) - - test from: :crd_order_dispatch_request - test from: :crd_decode_auth_token - test from: :crd_retrieve_jwks - test from: :crd_token_header - test from: :crd_token_payload - test from: :crd_hook_request_required_fields - test from: :crd_hook_request_optional_fields - test from: :crd_hook_request_valid_context do - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@150', - 'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285', - 'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287', - 'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289', - 'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291', - 'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293', - 'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295', - 'cds-hooks-library_1.0.1@57', 'cds-hooks-library_1.0.1@58', 'cds-hooks-library_1.0.1@59', - 'cds-hooks-library_1.0.1@61', 'cds-hooks-library_1.0.1@62', 'cds-hooks-library_1.0.1@63', - 'cds-hooks-library_1.0.1@65', 'cds-hooks-library_1.0.1@66', 'cds-hooks-library_1.0.1@67', - 'cds-hooks-library_1.0.1@69', 'cds-hooks-library_1.0.1@70', 'cds-hooks-library_1.0.1@71', - 'cds-hooks-library_1.0.1@72' - end - test from: :crd_hook_request_valid_prefetch - test from: :crd_hook_request_fetched_data - test from: :crd_hook_request_prefetch_equals_queried - test from: :crd_inferno_response_validation - test from: :crd_card_display_attest_test - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_order_select_group.rb b/lib/davinci_crd_test_kit/client_tests/client_order_select_group.rb deleted file mode 100644 index e75846a0..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_order_select_group.rb +++ /dev/null @@ -1,95 +0,0 @@ -require_relative 'order_select_receive_request_test' -require_relative 'client_display_cards_attest' -require_relative 'decode_auth_token_test' -require_relative 'hook_request_optional_fields_test' -require_relative 'hook_request_required_fields_test' -require_relative 'hook_request_valid_context_test' -require_relative 'hook_request_valid_prefetch_test' -require_relative 'hook_request_fetched_data_test' -require_relative 'hook_request_prefetch_equals_queried_test' -require_relative 'retrieve_jwks_test' -require_relative 'inferno_response_validation' -require_relative 'token_header_test' -require_relative 'token_payload_test' - -module DaVinciCRDTestKit - class ClientOrderSelectGroup < Inferno::TestGroup - title 'order-select' - id :crd_client_order_select - description <<~DESCRIPTION - The order-select hook fires when a clinician selects one or more orders to place for a patient, - (including orders for medications, procedures, labs and other orders). If supported by the CDS Client, this - hook may also be invoked each time the clinician selects a detail regarding the order. These tests are based on - the following criteria: - * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-selecte), - which includes the profiles that are expected to be used for the resources resolved to by `context` - FHIR ID fields - * Specific [order-select `context` requirements](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/) - defined in the CDS Hooks specification - - This version of the CRD implementation guide refers to version 1.0 of the hook. - DESCRIPTION - - run_as_group - - input_order :cds_jwt_iss, :cds_jwk_set - - config( - inputs: { - auth_token_headers_json: { name: :order_select_auth_token_headers_json }, - auth_tokens: { name: :order_select_auth_tokens }, - auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json }, - client_access_token: { name: :order_select_client_access_token }, - override_access_token: { name: :order_select_override_access_token, - title: 'order-select Prefetch Validation Override Bearer Token' }, - client_fhir_server: { name: :order_select_client_fhir_server }, - crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json }, - custom_response_template: { name: :order_select_custom_response_template }, - selected_response_types: { name: :order_select_selected_response_types } - }, - outputs: { - auth_token_headers_json: { name: :order_select_auth_token_headers_json }, - auth_token_payloads_json: { name: :order_select_auth_token_payloads_json }, - auth_tokens: { name: :order_select_auth_tokens }, - auth_tokens_jwk_json: { name: :order_select_auth_tokens_jwk_json }, - client_access_token: { name: :order_select_client_access_token }, - client_fhir_server: { name: :order_select_client_fhir_server }, - crd_jwks_json: { name: :order_select_crd_jwks_json }, - crd_jwks_keys_json: { name: :order_select_crd_jwks_keys_json } - }, - options: { - hook_name: 'order-select', - hook_path: ORDER_SELECT_PATH - } - ) - - test from: :crd_order_select_request - test from: :crd_decode_auth_token - test from: :crd_retrieve_jwks - test from: :crd_token_header - test from: :crd_token_payload - test from: :crd_hook_request_required_fields - test from: :crd_hook_request_optional_fields - test from: :crd_hook_request_valid_context do - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@150', - 'hl7.fhir.us.davinci-crd_2.0.1@212', 'hl7.fhir.us.davinci-crd_2.0.1@213', - 'hl7.fhir.us.davinci-crd_2.0.1@214', 'hl7.fhir.us.davinci-crd_2.0.1@215', - 'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285', - 'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287', - 'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289', - 'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291', - 'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293', - 'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295', - 'cds-hooks-library_1.0.1@74', 'cds-hooks-library_1.0.1@75', 'cds-hooks-library_1.0.1@76', - 'cds-hooks-library_1.0.1@78', 'cds-hooks-library_1.0.1@79', 'cds-hooks-library_1.0.1@80', - 'cds-hooks-library_1.0.1@82', 'cds-hooks-library_1.0.1@83', 'cds-hooks-library_1.0.1@84', - 'cds-hooks-library_1.0.1@86', 'cds-hooks-library_1.0.1@87', 'cds-hooks-library_1.0.1@88', - 'cds-hooks-library_1.0.1@90', 'cds-hooks-library_1.0.1@91', 'cds-hooks-library_1.0.1@92' - end - test from: :crd_hook_request_valid_prefetch - test from: :crd_hook_request_fetched_data - test from: :crd_hook_request_prefetch_equals_queried - test from: :crd_inferno_response_validation - test from: :crd_card_display_attest_test - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_order_sign_group.rb b/lib/davinci_crd_test_kit/client_tests/client_order_sign_group.rb deleted file mode 100644 index 17ff8f1c..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_order_sign_group.rb +++ /dev/null @@ -1,93 +0,0 @@ -require_relative 'order_sign_receive_request_test' -require_relative 'client_display_cards_attest' -require_relative 'decode_auth_token_test' -require_relative 'hook_request_optional_fields_test' -require_relative 'hook_request_required_fields_test' -require_relative 'hook_request_valid_context_test' -require_relative 'hook_request_valid_prefetch_test' -require_relative 'hook_request_fetched_data_test' -require_relative 'hook_request_prefetch_equals_queried_test' -require_relative 'retrieve_jwks_test' -require_relative 'inferno_response_validation' -require_relative 'token_header_test' -require_relative 'token_payload_test' - -module DaVinciCRDTestKit - class ClientOrderSignGroup < Inferno::TestGroup - title 'order-sign' - id :crd_client_order_sign - description <<~DESCRIPTION - The order-sign hook fires when a clinician is ready to sign one or more orders for a patient, (including orders - for medications, procedures, labs and other orders). These tests are based on the following criteria: - * [CRD IG requirements for this hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign), - which includes the profiles that are expected to be used for the resources resolved to by `context` - FHIR ID fields - * Specific [order-sign `context` requirements](https://cds-hooks.org/hooks/order-sign/) - defined in the CDS Hooks specification - - This version of the CRD implementation guide refers to version 1.1 of the hook which, at the time of publication, - was not available as a snapshot. Therefore the preceding link refers to the CDS hooks current build. - DESCRIPTION - - run_as_group - - input_order :cds_jwt_iss, :cds_jwk_set - - config( - inputs: { - auth_token_headers_json: { name: :order_sign_auth_token_headers_json }, - auth_tokens: { name: :order_sign_auth_tokens }, - auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json }, - client_access_token: { name: :order_sign_client_access_token }, - override_access_token: { name: :order_sign_override_access_token, - title: 'order-sign Prefetch Validation Override Bearer Token' }, - client_fhir_server: { name: :order_sign_client_fhir_server }, - crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json }, - custom_response_template: { name: :order_sign_custom_response_template }, - selected_response_types: { name: :order_sign_selected_response_types } - }, - outputs: { - auth_token_headers_json: { name: :order_sign_auth_token_headers_json }, - auth_token_payloads_json: { name: :order_sign_auth_token_payloads_json }, - auth_tokens: { name: :order_sign_auth_tokens }, - auth_tokens_jwk_json: { name: :order_sign_auth_tokens_jwk_json }, - client_access_token: { name: :order_sign_client_access_token }, - client_fhir_server: { name: :order_sign_client_fhir_server }, - crd_jwks_json: { name: :order_sign_crd_jwks_json }, - crd_jwks_keys_json: { name: :order_sign_crd_jwks_keys_json } - }, - options: { - hook_name: 'order-sign', - hook_path: ORDER_SIGN_PATH - } - ) - - test from: :crd_order_sign_request - test from: :crd_decode_auth_token - test from: :crd_retrieve_jwks - test from: :crd_token_header - test from: :crd_token_payload - test from: :crd_hook_request_required_fields - test from: :crd_hook_request_optional_fields - test from: :crd_hook_request_valid_context do - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@71', 'hl7.fhir.us.davinci-crd_2.0.1@150', - 'hl7.fhir.us.davinci-crd_2.0.1@220', 'hl7.fhir.us.davinci-crd_2.0.1@221', - 'hl7.fhir.us.davinci-crd_2.0.1@222', 'hl7.fhir.us.davinci-crd_2.0.1@223', - 'hl7.fhir.us.davinci-crd_2.0.1@284', 'hl7.fhir.us.davinci-crd_2.0.1@285', - 'hl7.fhir.us.davinci-crd_2.0.1@286', 'hl7.fhir.us.davinci-crd_2.0.1@287', - 'hl7.fhir.us.davinci-crd_2.0.1@288', 'hl7.fhir.us.davinci-crd_2.0.1@289', - 'hl7.fhir.us.davinci-crd_2.0.1@290', 'hl7.fhir.us.davinci-crd_2.0.1@291', - 'hl7.fhir.us.davinci-crd_2.0.1@292', 'hl7.fhir.us.davinci-crd_2.0.1@293', - 'hl7.fhir.us.davinci-crd_2.0.1@294', 'hl7.fhir.us.davinci-crd_2.0.1@295', - 'cds-hooks-library_1.0.1@1', 'cds-hooks-library_1.0.1@2', 'cds-hooks-library_1.0.1@3', - 'cds-hooks-library_1.0.1@5', 'cds-hooks-library_1.0.1@6', 'cds-hooks-library_1.0.1@7', - 'cds-hooks-library_1.0.1@9', 'cds-hooks-library_1.0.1@10', 'cds-hooks-library_1.0.1@11', - 'cds-hooks-library_1.0.1@13', 'cds-hooks-library_1.0.1@14', 'cds-hooks-library_1.0.1@15' - end - test from: :crd_hook_request_valid_prefetch - test from: :crd_hook_request_fetched_data - test from: :crd_hook_request_prefetch_equals_queried - test from: :crd_inferno_response_validation - test from: :crd_card_display_attest_test - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_registration_verification_test.rb b/lib/davinci_crd_test_kit/client_tests/client_registration_verification_test.rb deleted file mode 100644 index f433e5a9..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_registration_verification_test.rb +++ /dev/null @@ -1,91 +0,0 @@ -require 'jwt' - -module DaVinciCRDTestKit - class CRDClientRegistrationVerification < Inferno::Test - include URLs - - id :crd_client_registration_verification - title 'Verify CRD Client Registration' - description %( - During this test, Inferno will verify that the CRD Client registration details - provided are conformant. - ) - - verifies_requirements 'cds-hooks_2.0@174', 'cds-hooks_2.0@197' - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - The `iss` claim of the JWT in the Authorization header sent by the CRD client under test on - all CRD requests. This value will be used to associate incoming requests with this test - session and any requests that use a different `iss` value will not be recognized. - ), - type: 'text' - input :cds_jwk_set, - title: 'CRD JSON Web Key Set (JWKS)', - type: 'textarea', - description: %( - The CRD client's JWK Set containing it's public key. May be either - a publicly accessible url containing the JWKS, or the raw JWKS. - This input is required for these tests to pass. - ), - optional: true - - run do - assert cds_jwk_set.present?, 'Provide a jwk set in the **CRD JSON Web Key Set (JWKS)** input.' - - jwks_warnings = [] - parsed_jwk_set = jwk_set(cds_jwk_set, jwks_warnings) - jwks_warnings.each { |warning| add_message('warning', warning) } - - assert parsed_jwk_set.length.positive?, 'JWKS content does not include any valid keys.' - - assert messages.none? { |msg| msg[:type] == 'error' }, 'Invalid key set provided. See messages for details' - end - - def jwk_set(jku, warning_messages = []) # rubocop:disable Metrics/CyclomaticComplexity - jwk_set = JWT::JWK::Set.new - - if jku.blank? - warning_messages << 'No key set input.' - return jwk_set - end - - jwk_body = # try as raw jwk set - begin - JSON.parse(jku) - rescue JSON::ParserError - nil - end - - if jwk_body.blank? - retrieved = Faraday.get(jku) # try as url pointing to a jwk set - jwk_body = - begin - JSON.parse(retrieved.body) - rescue JSON::ParserError - warning_messages << "Failed to fetch valid json from jwks uri #{jku}." - nil - end - else - warning_messages << 'Providing the JWK Set directly is strongly discouraged.' - end - - return jwk_set if jwk_body.blank? - - jwk_body['keys']&.each_with_index do |key_hash, index| - parsed_key = - begin - JWT::JWK.new(key_hash) - rescue JWT::JWKError => e - id = key_hash['kid'] | index - warning_messages << "Key #{id} invalid: #{e}" - nil - end - jwk_set << parsed_key unless parsed_key.blank? - end - - jwk_set - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/client_service_registration_attestation_test.rb b/lib/davinci_crd_test_kit/client_tests/client_service_registration_attestation_test.rb deleted file mode 100644 index 192a6be0..00000000 --- a/lib/davinci_crd_test_kit/client_tests/client_service_registration_attestation_test.rb +++ /dev/null @@ -1,38 +0,0 @@ -module DaVinciCRDTestKit - class CRDClientServiceRegistrationAttestation < Inferno::Test - include URLs - - id :crd_client_service_registration_attestation - title 'Attest to the registration of the Inferno Service by the CRD Client' - description %( - During this test, the tester will confirm that Inferno has been registered as a - trusted CRD Service that can access the CRD Client's FHIR Server. - ) - - verifies_requirements 'cds-hooks_2.0@174' - - output :attest_true_url - output :attest_false_url - - run do - identifier = SecureRandom.hex(32) - attest_true_url = "#{resume_pass_url}?token=#{identifier}" - attest_false_url = "#{resume_fail_url}?token=#{identifier}" - output(attest_true_url:) - output(attest_false_url:) - wait( - identifier:, - message: <<~MESSAGE - **Registration of Inferno as a trusted CRD Service**: - - I attest that Inferno has been registered as a trusted CRD Service that is allowed to access - data stored on the CRD Client's FHIR Server. - - [Click here](#{attest_true_url}) if the above statement is **true**. - - [Click here](#{attest_false_url}) if the above statement is **false**. - MESSAGE - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/decode_auth_token_test.rb b/lib/davinci_crd_test_kit/client_tests/decode_auth_token_test.rb deleted file mode 100644 index 463754ed..00000000 --- a/lib/davinci_crd_test_kit/client_tests/decode_auth_token_test.rb +++ /dev/null @@ -1,62 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class DecodeAuthTokenTest < Inferno::Test - include ClientHookRequestValidation - id :crd_decode_auth_token - title 'Bearer token can be decoded' - description %( - Verify that the Bearer token is a properly constructed JWT. As per the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#trusting-cds-clients), - each time a CDS Client transmits a request to a CDS Service which requires authentication, the request MUST - include an Authorization header presenting the JWT as a "Bearer" token. - ) - - verifies_requirements 'cds-hooks_2.0@178' - - output :auth_tokens, :auth_token_payloads_json, :auth_token_headers_json - - def hook_name - config.options[:hook_name] - end - - run do - load_tagged_requests(hook_name) - skip_if requests.empty?, "No #{hook_name} requests were made in a previous test as expected." - auth_tokens = [] - auth_token_payloads_json = [] - auth_token_headers_json = [] - - requests.each_with_index do |request, index| - @request_number = index + 1 - - authorization_header = request.request_header('Authorization')&.value - - unless authorization_header.start_with?('Bearer ') - add_message('error', "#{request_number}Authorization token must be a JWT presented as a `Bearer` token") - end - - auth_token = authorization_header.delete_prefix('Bearer ') - auth_tokens << auth_token - - begin - payload, header = - JWT.decode( - auth_token, - nil, - false - ) - - auth_token_payloads_json << payload.to_json - auth_token_headers_json << header.to_json - rescue StandardError => e - add_message('error', "#{request_number}Token is not a properly constructed JWT: #{e.message}") - end - end - output auth_tokens: auth_tokens.to_json, - auth_token_payloads_json: auth_token_payloads_json.to_json, - auth_token_headers_json: auth_token_headers_json.to_json - - no_error_validation('Decoding Authorization header Bearer tokens failed.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test.rb b/lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test.rb deleted file mode 100644 index fc3d35b4..00000000 --- a/lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test.rb +++ /dev/null @@ -1,100 +0,0 @@ -require_relative '../urls' - -module DaVinciCRDTestKit - class EncounterDischargeReceiveRequestTest < Inferno::Test - include URLs - - id :crd_encounter_discharge_request - title 'Request received for encounter-discharge hook' - description %( - This test waits for multiple incoming [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) - hook requests and responds to the client with the response types selected as an input. - - For more details on how Inferno's simulated CDS Service behave during hook invocation see the - [Simulated CDS Services](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#cds-services) - documentation. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@197', 'hl7.fhir.us.davinci-crd_2.0.1@243', - 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', - 'cds-hooks_2.0@15' - - config options: { accepts_multiple_requests: true } - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` - header of all requests. Run or re-run the **Client Registration** group to set or - change this value. - ), - locked: true - input :encounter_discharge_selected_response_types, - title: 'Response types to return from encounter-discharge hook requests', - description: %( - Select the cards/action response types that the Inferno hook request endpoints will return. The default - response type that will be returned for this hook is the `Instructions` card type. - ), - type: 'checkbox', - default: ['coverage_information', 'external_reference', 'instructions'], - optional: true, - options: { - list_options: [ - { - label: 'External Reference', - value: 'external_reference' - }, - { - label: 'Instructions', - value: 'instructions' - }, - { - label: 'Coverage Information', - value: 'coverage_information' - }, - { - label: 'Request Form Completion', - value: 'request_form_completion' - }, - { - label: 'Create/Update Coverage Information', - value: 'create_update_coverage_info' - }, - { - label: 'Launch SMART Application', - value: 'launch_smart_app' - } - ] - } - input :encounter_discharge_custom_response_template, - title: 'Custom response for encounter-discharge hook requests', - description: %( - A JSON string may be provided here to replace the normal response - from the hook request endpoint - ), - type: 'textarea', - optional: true - output :continuation_url - - run do - identifier = "encounter-discharge #{cds_jwt_iss}" - continuation_url = "#{resume_pass_url}?token=#{identifier.gsub(' ', '%20')}" - output(continuation_url:) - - wait( - identifier:, - message: %( - **Encounter Discharge CDS Service Test**: - - Invoke the encounter-discharge hook and send requests to: - - `#{encounter_discharge_url}` - - Inferno will process the requests and return CDS cards if successful. - - [Click here](#{continuation_url}) when you have finished submitting - requests. - ) - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test.rb b/lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test.rb deleted file mode 100644 index 4e830a32..00000000 --- a/lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test.rb +++ /dev/null @@ -1,100 +0,0 @@ -require_relative '../urls' - -module DaVinciCRDTestKit - class EncounterStartReceiveRequestTest < Inferno::Test - include URLs - - id :crd_encounter_start_request - title 'Request received for encounter-start hook' - description %( - This test waits for multiple incoming [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) - hook requests and responds to the client with the response types selected as an input. - - For more details on how Inferno's simulated CDS Service behave during hook invocation see the - [Simulated CDS Services](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#cds-services) - documentation. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@186', 'hl7.fhir.us.davinci-crd_2.0.1@243', - 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', - 'cds-hooks_2.0@15' - - config options: { accepts_multiple_requests: true } - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` - header of all requests. Run or re-run the **Client Registration** group to set or - change this value. - ), - locked: true - input :encounter_start_selected_response_types, - title: 'Response types to return from encounter-start hook requests', - description: %( - Select the cards/action response types that the Inferno hook request endpoints will return. The default - response type that will be returned for this hook is the `Instructions` card type. - ), - type: 'checkbox', - default: ['coverage_information', 'external_reference', 'instructions'], - optional: true, - options: { - list_options: [ - { - label: 'External Reference', - value: 'external_reference' - }, - { - label: 'Instructions', - value: 'instructions' - }, - { - label: 'Coverage Information', - value: 'coverage_information' - }, - { - label: 'Request Form Completion', - value: 'request_form_completion' - }, - { - label: 'Create/Update Coverage Information', - value: 'create_update_coverage_info' - }, - { - label: 'Launch SMART Application', - value: 'launch_smart_app' - } - ] - } - input :encounter_start_custom_response_template, - title: 'Custom response for encounter-start hook requests', - description: %( - A JSON string may be provided here to replace the normal response - from the hook request endpoint - ), - type: 'textarea', - optional: true - output :continuation_url - - run do - identifier = "encounter-start #{cds_jwt_iss}" - continuation_url = "#{resume_pass_url}?token=#{identifier.gsub(' ', '%20')}" - output(continuation_url:) - - wait( - identifier:, - message: %( - **Encounter Start CDS Service Test**: - - Invoke the encounter-start hook and send requests to: - - `#{encounter_start_url}` - - Inferno will process the requests and return CDS cards if successful. - - [Click here](#{continuation_url}) when you have finished submitting - requests. - ) - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/hook_request_fetched_data_test.rb b/lib/davinci_crd_test_kit/client_tests/hook_request_fetched_data_test.rb deleted file mode 100644 index d4857cbb..00000000 --- a/lib/davinci_crd_test_kit/client_tests/hook_request_fetched_data_test.rb +++ /dev/null @@ -1,88 +0,0 @@ -require_relative '../tags' - -module DaVinciCRDTestKit - class HookRequestFetchedDataTest < Inferno::Test - id :crd_hook_request_fetched_data - title 'Minimum resource dataset was accessible during the hook invocation' - description %( - Clients must make a set of data related to the request available to the CRD Server via either prefetch - as a part of the hook invocation or via FHIR API during server processing of the hook call. According - to the IG, the minimal data set includes: - - Patient - - Relevant Coverage - - Authoring Practitioner - - Authoring Organization - - Requested performing Practitioner (if specified) - - Requested performing Organization (if specified) - - Requested Location (if specified) - - Associated Medication (if any) - - Associated Device (if any) - - When it receives a hook invocation, Inferno analyzes the hook request to determine what resources it - needs access to and requests those that are not provided as a part of the prefetched data. All data - is requested via the read interaction except for Coverages which requires a search interaction. - - This test checks that those requests were successful, demonstrating that the system can provide access - to this required information. - - For more details on what Inferno's simulated CDS Service fetches during hook invocation and - how the client must respond to pass this test, see the - [Data Fetching During Hook Invocations](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#data-fetching-during-hook-invocations) - documentation. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@43', 'hl7.fhir.us.davinci-crd_2.0.1@323' - - def hook_name - config.options[:hook_name] - end - - def crd_test_group - config.options[:crd_test_group] - end - - def tags_to_load - crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] - end - - def no_error_validation(message) - assert messages.none? { |msg| msg[:type] == 'error' }, message - end - - def hook_instance_tag(hook_instance) - "#{HOOK_INSTANCE_TAG_PREFIX}#{hook_instance}" - end - - run do - hook_requests = load_tagged_requests(*tags_to_load) - - hook_requests.each do |hook_request| - request_body = JSON.parse(hook_request.request_body) - hook_instance = request_body['hookInstance'] - - if request_body.dig('fhirAuthorization', 'access_token').blank? - add_message(:error, "Access token not provided for FHIR data access on hook instance `#{hook_instance}`.") - end - - failed_data_fetches = - load_tagged_requests(hook_instance_tag(hook_instance), DATA_FETCH_TAG).reject do |fetch| - fetch.status.to_s.starts_with?('2') - end - - next unless failed_data_fetches.present? - - server = "#{request_body['fhirServer'].chomp('/')}/" - failed_data_fetches.each do |request| - reference = request.url.starts_with?(server) ? request.url[server.length..] : request.url - if reference.starts_with?('Coverage') - add_message(:error, - "Failed to perform Coverage search `#{reference}` for hook instance `#{hook_instance}`.") - else - add_message(:error, "Failed to read reference `#{reference}` for hook instance `#{hook_instance}`.") - end - end - end - - no_error_validation('Inferno could not fetch some required data during the hook invocations.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test.rb b/lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test.rb deleted file mode 100644 index 140d66dd..00000000 --- a/lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test.rb +++ /dev/null @@ -1,60 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class HookRequestOptionalFieldsTest < Inferno::Test - include ClientHookRequestValidation - include URLs - - id :crd_hook_request_optional_fields - title 'Hook request optional fields are valid' - description %( - Under the [CDS hooks HTTP Request section](https://cds-hooks.hl7.org/2.0/#http-request_1), the specification - requires that a CDS service request SHALL include a JSON POST body which MAY contain the following optional input - fields: - * `fhirServer` - *URL* - * `fhirAuthorization` - *object* - * `prefetch` - *object* - - This test checks that the optional fields that are present are of the correct type. This test - will not fail if the hook request does not contain an optional field, it only produces an informational message. - If the client provides its FHIR server URL in the `fhirServer` field, and it's authorization token in the - `fhirAuthorization` field object, they will be produced as an output from this test to be used in - subsequent tests. - ) - - verifies_requirements 'cds-hooks_2.0@1', 'cds-hooks_2.0@3', 'cds-hooks_2.0@20', 'cds-hooks_2.0@21', - 'cds-hooks_2.0@23', 'cds-hooks_2.0@65', 'cds-hooks_2.0@66', 'cds-hooks_2.0@67', - 'cds-hooks_2.0@68', 'cds-hooks_2.0@69', 'cds-hooks_2.0@70' - - def hook_name - config.options[:hook_name] - end - - output :client_fhir_server - output :client_access_token, - optional: true - - run do - load_tagged_requests(hook_name) - skip_if requests.empty?, "No #{hook_name} requests were made in a previous test as expected." - client_fhir_server = nil - requests.each_with_index do |request, index| - @request_number = index + 1 - request_body = json_parse(request.request_body) - if request_body.blank? - add_message('error', "#{request_number}Hook request body cannot be empty.") - next - end - - fhir_server_info = hook_request_optional_fields_check(request_body) - client_fhir_server ||= fhir_server_info - end - - unless client_fhir_server.nil? - output client_fhir_server: client_fhir_server[:fhir_server_uri], - client_access_token: client_fhir_server[:fhir_access_token] - end - no_error_validation('Some service requests contain invalid optional fields.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/hook_request_prefetch_equals_queried_test.rb b/lib/davinci_crd_test_kit/client_tests/hook_request_prefetch_equals_queried_test.rb deleted file mode 100644 index 73694347..00000000 --- a/lib/davinci_crd_test_kit/client_tests/hook_request_prefetch_equals_queried_test.rb +++ /dev/null @@ -1,94 +0,0 @@ -require_relative '../prefetch_contents_validation' - -module DaVinciCRDTestKit - class HookRequestPrefetchEqualsQueriedTest < Inferno::Test - include PrefetchContentsValidation - - id :crd_hook_request_prefetch_equals_queried - title 'Prefetched data is equivalent to queried data' - description %( - This test verifies that each key present in the incoming hook request's `prefetch` field is equivalent to the - data returned by a query to the fhir server using the parameterized prefetch template. - - The queries will be performed after the hook response has been returned. - ) - verifies_requirements 'cds-hooks_2.0@45' - - input :client_fhir_server, - optional: true - input :client_access_token, - optional: true - input :override_access_token, - title: 'Prefetch Validation Override Bearer Token', - description: %( - Optionally provide a bearer token to use in place of the one provided in the hook request - when checking that the prefetched data is equivalent to what can be access via FHIR. - Use only if the bearer token in the request will not be valid even right after the hook - request is made. If provided it must have the same scope as the bearer token provided - in the hook request. - ), - optional: true - - fhir_client do - url :client_fhir_server - bearer_token access_token - end - - def access_token - override_access_token.present? ? override_access_token : client_access_token - end - - def hook_name - config.options[:hook_name] - end - - def crd_test_group - config.options[:crd_test_group] - end - - def tags_to_load - crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] - end - - def cds_services_json - JSON.parse(File.read(File.join( - __dir__, '..', 'routes', 'cds-services.json' - )))['services'] - end - - def advertised_prefetch_fields - advertised_hook_service = cds_services_json.find { |service| service['hook'] == hook_name } - advertised_hook_service['prefetch'] - end - - def no_error_validation(message) - assert messages.none? { |msg| msg[:type] == 'error' }, message - end - - run do - hook_requests = load_tagged_requests(*tags_to_load) - - skip_if hook_requests.blank?, 'No Hook Requests to verify.' - - pass_if !prefetched_data?(hook_requests), 'No prefetched data provided.' - - skip_if client_fhir_server.blank?, - 'No FHIR server provided in the hook request to use to validate the prefetch data.' - - if override_access_token.present? - add_message(:warning, - 'Override access token provided. Ensure that it has the same scope as used when ' \ - 'prefetching data for the hook request.') - end - - hook_requests.each_with_index do |request, index| - @request_number = index + 1 - check_prefetch_data_against_query(request, advertised_prefetch_fields) - end - - no_error_validation('Prefetched data does not match the requested queries.') - - pass 'Prefetched data matches the requested queries.' - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test.rb b/lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test.rb deleted file mode 100644 index 603a1285..00000000 --- a/lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test.rb +++ /dev/null @@ -1,52 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class HookRequestRequiredFieldsTest < Inferno::Test - include ClientHookRequestValidation - include URLs - - id :crd_hook_request_required_fields - title 'Hook request contains required fields' - description %( - Under the [CDS hooks HTTP Request section](https://cds-hooks.hl7.org/2.0/#http-request_1), the specification - requires that a CDS service request SHALL include a JSON POST body with the following input fields: - * `hook` - *string* - * `hookInstance` - *string* containing a globally unique UUID - * `context` - *object* - - Additionally, if the optional `fhirAuthorization` field is present, then the `fhirServer` field is required. - - This test also checks that the `hook` field contains the correct CDS service name that the CDS client is sending - a request for - ) - - verifies_requirements 'cds-hooks_2.0@1', 'cds-hooks_2.0@18', 'cds-hooks_2.0@19', - 'cds-hooks_2.0@20', 'cds-hooks_2.0@22', 'cds-hooks_2.0@25' - - def hook_name - config.options[:hook_name] - end - - output :contexts, :prefetches - - run do - load_tagged_requests(hook_name) - skip_if requests.empty?, "No #{hook_name} requests were made in a previous test as expected." - contexts = [] - prefetches = [] - requests.each_with_index do |request, index| - @request_number = index + 1 - request_body = json_parse(request.request_body) - next if request_body.blank? - - contexts << request_body['context'] if request_body['context'].is_a?(Hash) - prefetches << request_body['prefetch'] if request_body['prefetch'].is_a?(Hash) - hook_request_required_fields_check(request_body, hook_name) - end - - output contexts: contexts.to_json, - prefetches: prefetches.to_json - no_error_validation('Some service requests made are not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test.rb b/lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test.rb deleted file mode 100644 index ebca3eb7..00000000 --- a/lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test.rb +++ /dev/null @@ -1,67 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class HookRequestValidContextTest < Inferno::Test - include URLs - include ClientHookRequestValidation - - id :crd_hook_request_valid_context - title 'Hook request contains valid context' - description %( - As stated in the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#http-request), a CDS service request's - `context` field contains hook-specific contextual data that the CDS service will need. The context is specified - in the hook definition to guide developers on the information available at the point in the workflow when the hook - is triggered. - - The `context` requirements for each [hook specified in the CRD IG](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html) - can be found below: - * [appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/) - * [encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/) - * [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/) - * [order-select](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/) - * [order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/) - * [order-sign](https://cds-hooks.org/hooks/order-sign/) - - This test performs the following: - * Verifies that the incoming hook request's `context` field contains the fields required by each hook and - that they are in the correct format - * Checks the optional fields and ensures they are in the correct format - * Validates any resources contained in a `context` field that contains a Bundle or FHIR resource - * Makes FHIR requests for any `context` fields that contain an id or reference and validates each resource - response against its corresponding CRD resource profile - * Check some specific `context` requirements for hooks that have special requirements for certain fields - - The client must provide its FHIR server URL and access token in the hook request in order to run - this test. - ) - - input :contexts, :client_fhir_server - input :client_access_token, - optional: true - - fhir_client do - url :client_fhir_server - bearer_token :client_access_token - end - - def hook_name - config.options[:hook_name] - end - - run do - hook_contexts = json_parse(contexts) - if hook_contexts - skip_if(hook_contexts.none?(&:present?), "No #{hook_name} requests contained the `context` field.") - hook_contexts.each_with_index do |context, index| - @request_number = index + 1 - if context.blank? - add_message('error', "#{request_number}Missing required context field.") - next - end - hook_request_context_check(context, hook_name) - end - end - no_error_validation('Context is not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test.rb b/lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test.rb deleted file mode 100644 index 3104d643..00000000 --- a/lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test.rb +++ /dev/null @@ -1,58 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class HookRequestValidPrefetchTest < Inferno::Test - include ClientHookRequestValidation - include URLs - - id :crd_hook_request_valid_prefetch - title 'Hook request contains valid prefetched data' - description %( - As stated in the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#http-request), a CDS service request's - `prefetch` field is an optional field that contains key/value pairs of FHIR queries that the service is requesting - the CDS Client to perform and provide on each service call. The key is a string that describes the type of data - being requested and the value is a string representing the FHIR query. See [Prefetch Template](https://cds-hooks.hl7.org/2.0#prefetch-template) - for more information about how the `prefetch` formatting works. - - This test verifies that the incoming hook request's `prefetch` field is in a valid JSON format, - validates each contained resource against its corresponding CRD resource profile, and checks - that the data matches what is requested in by the - [prefetch templates published by Inferno's simulated CRD Server](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/lib/davinci_crd_test_kit/routes/cds-services.json). - Since prefetch support is not required, this test will pass if `prefetch` is not present or has no entries. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@54', 'cds-hooks_2.0@30', 'cds-hooks_2.0@47' - - input :contexts, :prefetches - - def hook_name - config.options[:hook_name] - end - - def cds_services_json - JSON.parse(File.read(File.join( - __dir__, '..', 'routes', 'cds-services.json' - )))['services'] - end - - def advertised_prefetch_fields - advertised_hook_service = cds_services_json.find { |service| service['hook'] == hook_name } - advertised_hook_service['prefetch'] - end - - run do - hook_contexts = json_parse(contexts) - hook_prefetches = json_parse(prefetches) - - pass_if hook_prefetches.blank?, 'No prefetched data provided.' - - hook_prefetches.each_with_index do |prefetch, index| - next if prefetch.blank? - - @request_number = index + 1 - context = hook_contexts[index].present? ? hook_contexts[index] : {} - hook_request_prefetch_check(advertised_prefetch_fields, prefetch, context) - end - no_error_validation('Prefetch is not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/inferno_response_validation.rb b/lib/davinci_crd_test_kit/client_tests/inferno_response_validation.rb deleted file mode 100644 index 209106a3..00000000 --- a/lib/davinci_crd_test_kit/client_tests/inferno_response_validation.rb +++ /dev/null @@ -1,74 +0,0 @@ -module DaVinciCRDTestKit - class InfernoResponseValidationTest < Inferno::Test - include CardsValidation - - title 'Inferno CDS Service Response is Conformant' - description %( - This test verifies that each service response built by Inferno and returned to the client is conformant. - These responses must be conformant for the client to demonstrate its ability to accept CDS Service responses. - - If this test fails when a custom response was provided, adjust the custom response template - and the submitted requests so that the response built by Inferno is conformant. See - the documentation for details on how Inferno builds a response from the provided - custom template. - - If this test fails when Inferno mocked the response based on selected card types, please - report this failure to the Inferno team via github issues. - ) - id :crd_inferno_response_validation - - input :custom_response_template, optional: true - - def hook_name - config.options[:hook_name] - end - - def crd_test_group - config.options[:crd_test_group] - end - - def tags_to_load - crd_test_group.present? ? [hook_name, crd_test_group] : [hook_name] - end - - def response_label(index = nil) - response_type = (custom_response_template.present? ? 'Custom built' : 'Mocked') - "#{response_type} response#{index.present? ? " #{index}" : ''}" - end - - def valid_cards - @valid_cards ||= [] - end - - def validate_system_actions(system_actions) - return if system_actions.nil? - - system_actions.each do |action| - action_fields_validation(action) - end - end - - run do - load_tagged_requests(*tags_to_load) - - skip_if request.blank?, "No #{response_label.downcase}s to verify." - - entity_validated = false - requests.each_with_index do |request, index| - response_hash = JSON.parse(request.response_body) - - next unless response_hash['cards'].present? || response_hash['systemActions'].present? - - entity_validated = true - perform_cards_validation(response_hash['cards'], response_hash['systemActions'].present?, index) - validate_system_actions(response_hash['systemActions']) - rescue JSON::ParserError - next - end - - skip_if !entity_validated, "No #{response_label.downcase} cards or system actions to verify returned by Inferno." - - no_error_validation("Invalid Inferno #{response_label.downcase}(s). Check messages for issues found.") - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test.rb b/lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test.rb deleted file mode 100644 index 66e46dac..00000000 --- a/lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test.rb +++ /dev/null @@ -1,112 +0,0 @@ -require_relative '../urls' - -module DaVinciCRDTestKit - class OrderDispatchReceiveRequestTest < Inferno::Test - include URLs - - id :crd_order_dispatch_request - title 'Request received for order-dispatch hook' - description %( - This test waits for multiple incoming [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) - hook requests and responds to the client with the response types selected as an input. This hook is a 'primary' - hook, meaning that CRD Servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) - system action for these hooks, even if the response indicates that further information is needed or that the - level of detail provided is insufficient to determine coverage. - - For more details on how Inferno's simulated CDS Service behave during hook invocation see the - [Simulated CDS Services](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#cds-services) - documentation. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@205', - 'hl7.fhir.us.davinci-crd_2.0.1@207', 'hl7.fhir.us.davinci-crd_2.0.1@243', - 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', - 'cds-hooks_2.0@15' - - config options: { accepts_multiple_requests: true } - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` - header of all requests. Run or re-run the **Client Registration** group to set or - change this value. - ), - locked: true - input :order_dispatch_selected_response_types, - title: 'Response types to return from order-dispatch hook requests', - description: %( - Select the cards/action response types that the Inferno hook request endpoints will return. The default - response type that will be returned for this hook is the `Coverage Information` card type. - ), - type: 'checkbox', - default: ['coverage_information', 'external_reference', 'instructions'], - optional: true, - options: { - list_options: [ - { - label: 'External Reference', - value: 'external_reference' - }, - { - label: 'Instructions', - value: 'instructions' - }, - { - label: 'Coverage Information', - value: 'coverage_information' - }, - { - label: 'Request Form Completion', - value: 'request_form_completion' - }, - { - label: 'Create/Update Coverage Information', - value: 'create_update_coverage_info' - }, - { - label: 'Launch SMART Application', - value: 'launch_smart_app' - }, - { - label: 'Propose Alternate Request', - value: 'propose_alternate_request' - }, - { - label: 'Additional Orders as Companions/Prerequisites', - value: 'companions_prerequisites' - } - ] - } - input :order_dispatch_custom_response_template, - title: 'Custom response for order-dispatch hook requests', - description: %( - A JSON string may be provided here to replace the normal response - from the hook request endpoint - ), - type: 'textarea', - optional: true - output :continuation_url - - run do - identifier = "order-dispatch #{cds_jwt_iss}" - continuation_url = "#{resume_pass_url}?token=#{identifier.gsub(' ', '%20')}" - output(continuation_url:) - - wait( - identifier:, - message: %( - **Order Dispatch CDS Service Test**: - - Invoke the order-dispatch hook and send requests to: - - `#{order_dispatch_url}` - - Inferno will process the requests and return CDS cards if successful. - - [Click here](#{continuation_url}) when you have finished submitting - requests. - ) - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test.rb b/lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test.rb deleted file mode 100644 index 979da8cc..00000000 --- a/lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test.rb +++ /dev/null @@ -1,108 +0,0 @@ -require_relative '../urls' - -module DaVinciCRDTestKit - class OrderSelectReceiveRequestTest < Inferno::Test - include URLs - - id :crd_order_select_request - title 'Request received for order-select hook' - description %( - This test waits for multiple incoming [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) - hook requests and responds to the client with the response types selected as an input. - - For more details on how Inferno's simulated CDS Service behave during hook invocation see the - [Simulated CDS Services](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#cds-services) - documentation. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@209', 'hl7.fhir.us.davinci-crd_2.0.1@243', - 'hl7.fhir.us.davinci-crd_2.0.1@244', 'hl7.fhir.us.davinci-crd_2.0.1@245', - 'cds-hooks_2.0@15' - - config options: { accepts_multiple_requests: true } - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` - header of all requests. Run or re-run the **Client Registration** group to set or - change this value. - ), - locked: true - input :order_select_selected_response_types, - title: 'Response types to return from order-select hook requests', - description: %( - Select the cards/action response types that the Inferno hook request endpoints will return. The default - response type that will be returned for this hook is the `Instructions` card type. - ), - type: 'checkbox', - default: ['coverage_information', 'external_reference', 'instructions'], - optional: true, - options: { - list_options: [ - { - label: 'External Reference', - value: 'external_reference' - }, - { - label: 'Instructions', - value: 'instructions' - }, - { - label: 'Coverage Information', - value: 'coverage_information' - }, - { - label: 'Request Form Completion', - value: 'request_form_completion' - }, - { - label: 'Create/Update Coverage Information', - value: 'create_update_coverage_info' - }, - { - label: 'Launch SMART Application', - value: 'launch_smart_app' - }, - { - label: 'Propose Alternate Request', - value: 'propose_alternate_request' - }, - { - label: 'Additional Orders as Companions/Prerequisites', - value: 'companions_prerequisites' - } - ] - } - input :order_select_custom_response_template, - title: 'Custom response for order-select hook requests', - description: %( - A JSON string may be provided here to replace the normal response - from the hook request endpoint - ), - type: 'textarea', - optional: true - output :continuation_url - - run do - identifier = "order-select #{cds_jwt_iss}" - continuation_url = "#{resume_pass_url}?token=#{identifier.gsub(' ', '%20')}" - output(continuation_url:) - - wait( - identifier:, - message: %( - **Order Select CDS Service Test**: - - Invoke the order-select hook and send requests to: - - `#{order_select_url}` - - Inferno will process the requests and return CDS cards if successful. - - [Click here](#{continuation_url}) when you have finished submitting - requests. - ) - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test.rb b/lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test.rb deleted file mode 100644 index 763db2ad..00000000 --- a/lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test.rb +++ /dev/null @@ -1,110 +0,0 @@ -require_relative '../urls' - -module DaVinciCRDTestKit - class OrderSignReceiveRequestTest < Inferno::Test - include URLs - - id :crd_order_sign_request - title 'Request received for order-sign hook' - description %( - This test waits for multiple incoming [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) - hook requests and responds to the client with the response types selected as an input. This hook is a 'primary' - hook, meaning that CRD Servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) - system action for these hooks, even if the response indicates that further information is needed or that the - level of detail provided is insufficient to determine coverage. - - For more details on how Inferno's simulated CDS Service behave during hook invocation see the - [Simulated CDS Services](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details#cds-services) - documentation. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@218', 'hl7.fhir.us.davinci-crd_2.0.1@225', - 'hl7.fhir.us.davinci-crd_2.0.1@243', 'hl7.fhir.us.davinci-crd_2.0.1@244', - 'hl7.fhir.us.davinci-crd_2.0.1@245', 'cds-hooks_2.0@15' - - config options: { accepts_multiple_requests: true } - - input :cds_jwt_iss, - title: 'CRD JWT Issuer', - description: %( - Value of the `iss` claim that must be sent on the Bearer token in the `Authorization` - header of all requests. Run or re-run the **Client Registration** group to set or - change this value. - ), - locked: true - input :order_sign_selected_response_types, - title: 'Response types to return from order-sign hook requests', - description: %( - Select the cards/action response types that the Inferno hook request endpoints will return. The default - response type that will be returned for this hook is the `Coverage Information` card type. - ), - type: 'checkbox', - default: ['coverage_information', 'external_reference', 'instructions'], - optional: true, - options: { - list_options: [ - { - label: 'External Reference', - value: 'external_reference' - }, - { - label: 'Instructions', - value: 'instructions' - }, - { - label: 'Coverage Information', - value: 'coverage_information' - }, - { - label: 'Request Form Completion', - value: 'request_form_completion' - }, - { - label: 'Create/Update Coverage Information', - value: 'create_update_coverage_info' - }, - { - label: 'Launch SMART Application', - value: 'launch_smart_app' - }, - { - label: 'Propose Alternate Request', - value: 'propose_alternate_request' - }, - { - label: 'Additional Orders as Companions/Prerequisites', - value: 'companions_prerequisites' - } - ] - } - input :order_sign_custom_response_template, - title: 'Custom response for order-sign hook requests', - description: %( - A JSON string may be provided here to replace the normal response - from the hook request endpoint - ), - type: 'textarea', - optional: true - output :continuation_url - - run do - identifier = "order-sign #{cds_jwt_iss}" - continuation_url = "#{resume_pass_url}?token=#{identifier.gsub(' ', '%20')}" - output(continuation_url:) - - wait( - identifier:, - message: %( - **Order Sign CDS Service Test**: - - Invoke the order-sign hook and send requests to: - - `#{order_sign_url}` - - Inferno will process the requests and return CDS cards if successful. - - [Click here](#{continuation_url}) when you have finished submitting requests. - ) - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test.rb b/lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test.rb deleted file mode 100644 index 16fa6450..00000000 --- a/lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test.rb +++ /dev/null @@ -1,107 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class RetrieveJWKSTest < Inferno::Test - include ClientHookRequestValidation - - id :crd_retrieve_jwks - title 'JWKS can be retrieved' - description %( - Verify that the JWKS can be retrieved from the JWKS uri if it is present in the `jku` field within the JWT token - header. As per the [CDS hooks specification](https://cds-hooks.hl7.org/2.0#trusting-cds-clients), if the jku - header field is omitted, the CDS Client and CDS Service SHALL communicate the JWK Set out-of-band. Therefore, - if the client does not make their keys publicly available via a uri in the `jku` field, the user must - submit the jwk_set as an input to the test. - ) - - verifies_requirements 'cds-hooks_2.0@183', 'cds-hooks_2.0@185', 'cds-hooks_2.0@197', 'cds-hooks_2.0@199' - - input :auth_token_headers_json - input :cds_jwk_set, - title: 'CRD JSON Web Key Set (JWKS)', - type: 'textarea', - description: %( - The client's registered JWK Set containing it's public key, either - as a publicly accessible url containing the JWKS, or the raw JWKS. - Run or re-run the **Client Registration** group to set or - change this value. Used if the `jku` header is not found in the auth token jwt. - ), - locked: true, - optional: true - output :crd_jwks_json, :crd_jwks_keys_json - - run do - auth_token_headers = JSON.parse(auth_token_headers_json) - skip_if auth_token_headers.empty?, 'No Authorization tokens produced from the previous test.' - - crd_jwks_json = [] - crd_jwks_keys_json = [] - auth_token_headers.each_with_index do |token_header, index| - @request_number = index + 1 - - jku = JSON.parse(token_header)['jku'] - if jku.present? - get(jku) - - if response[:status] != 200 - add_message('error', %( - #{request_number}Unexpected response status: expected 200, but received - #{response[:status]})) - next - end - - @request_number = index + 1 - jwks = json_parse(response[:body]) - next if jwks.blank? - - crd_jwks_json << response[:body] - - jwks = JSON.parse(response[:body]) - else - skip_if cds_jwk_set.blank?, - %(#{request_number}JWK Set must be inputted if Client's JWK Set is not available via a URL - identified by the jku header field) - - jwks = JSON.parse(cds_jwk_set) - end - - keys = jwks['keys'] - unless keys.is_a?(Array) - add_message('error', "#{request_number}JWKS `keys` field must be an array") - next - end - - if keys.blank? - add_message('error', "#{request_number}The JWK set returned contains no public keys") - next - end - - keys.each do |jwk| - JWT::JWK.import(jwk.deep_symbolize_keys) - rescue StandardError - add_message('error', "#{request_number}Invalid JWK: #{jwk.to_json}") - end - - kid_presence = keys.all? { |key| key['kid'].present? } - if kid_presence.blank? - add_message('error', - "#{request_number}`kid` field must be present in each key if JWKS contains multiple keys") - next - end - - kid_uniqueness = keys.map { |key| key['kid'] }.uniq.length == keys.length - if kid_uniqueness.blank? - add_message('error', "#{request_number}`kid` must be unique within the client's JWK Set.") - next - end - - crd_jwks_keys_json << keys.to_json - end - - output crd_jwks_json: crd_jwks_json.to_json, - crd_jwks_keys_json: crd_jwks_keys_json.to_json - - no_error_validation('Retrieving JWKS failed.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/token_header_test.rb b/lib/davinci_crd_test_kit/client_tests/token_header_test.rb deleted file mode 100644 index 0407fcc1..00000000 --- a/lib/davinci_crd_test_kit/client_tests/token_header_test.rb +++ /dev/null @@ -1,67 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class TokenHeaderTest < Inferno::Test - include ClientHookRequestValidation - - id :crd_token_header - title 'Authorization token header contains required information' - description %( - Verify that the JWT header contains the header fields required by the [CDS hooks spec](https://cds-hooks.hl7.org/2.0#trusting-cds-clients). - The `alg`, `kid`, and `typ` fields are required. This test also verifies that the `typ` field is set to `JWT` and - that the key used to sign the token can be identified in the JWKS. - ) - - verifies_requirements 'cds-hooks_2.0@182', 'cds-hooks_2.0@184', 'cds-hooks_2.0@202' - - input :auth_token_headers_json, :crd_jwks_keys_json - output :auth_tokens_jwk_json - - run do - auth_token_headers = JSON.parse(auth_token_headers_json) - crd_jwks_keys = JSON.parse(crd_jwks_keys_json) - skip_if auth_token_headers.empty?, 'No Authorization tokens produced from the previous tests.' - skip_if crd_jwks_keys.empty?, 'No JWKS keys produced from the previous test.' - - auth_tokens_jwk_json = [] - auth_token_headers.each_with_index do |token_header, index| - @request_number = index + 1 - - header = JSON.parse(token_header) - algorithm = header['alg'] - - add_message('error', "#{request_number}Token header must have the `alg` field") if algorithm.blank? - - add_message('error', "#{request_number}Token header `alg` field cannot be set to none") if algorithm == 'none' - - if header['typ'].blank? - add_message('error', "#{request_number}Token header must have the `typ` field") - elsif header['typ'] != 'JWT' - add_message('error', %( - #{request_number}Token header `typ` field must be set to 'JWT', instead was - #{header['typ']})) - end - - if header['kid'].blank? - add_message('error', "#{request_number}Token header must have the `kid` field") - next - end - - kid = header['kid'] - keys = JSON.parse(crd_jwks_keys[index]) - - jwk = keys.find { |key| key['kid'] == kid } - if jwk.blank? - add_message('error', "#{request_number}JWKS did not contain a public key with an id of `#{kid}`") - next - end - - auth_tokens_jwk_json << jwk.to_json - end - - output auth_tokens_jwk_json: auth_tokens_jwk_json.to_json - - no_error_validation('Token headers missing required information.') - end - end -end diff --git a/lib/davinci_crd_test_kit/client_tests/token_payload_test.rb b/lib/davinci_crd_test_kit/client_tests/token_payload_test.rb deleted file mode 100644 index 7ceac2a6..00000000 --- a/lib/davinci_crd_test_kit/client_tests/token_payload_test.rb +++ /dev/null @@ -1,82 +0,0 @@ -require_relative '../client_hook_request_validation' - -module DaVinciCRDTestKit - class TokenPayloadTest < Inferno::Test - include ClientHookRequestValidation - include URLs - id :crd_token_payload - title 'Authorization token payload has required claims and a valid signature' - description %( - Verify that the JWT payload contains the payload fields required by the - [CDS hooks spec](https://cds-hooks.hl7.org/2.0#trusting-cds-clients). - The `iss`, `aud`, `exp`, `iat`, and `jti` claims are required. - Additionally: - - - `iss` must match the `issuer` from the **CRD JWT Issuer** input - - `aud` must match the URL of the CDS Service endpoint being invoked - - `exp` must represent a time in the future - - `jti` must be a non-blank string that uniquely identifies this authentication JWT - ) - - verifies_requirements 'cds-hooks_2.0@180', 'cds-hooks_2.0@181', 'cds-hooks_2.0@187', 'cds-hooks_2.0@189', - 'cds-hooks_2.0@190', 'cds-hooks_2.0@191', 'cds-hooks_2.0@192', 'cds-hooks_2.0@196', - 'cds-hooks_2.0@203' - - REQUIRED_CLAIMS = ['iss', 'aud', 'exp', 'iat', 'jti'].freeze - - def required_claims - REQUIRED_CLAIMS.dup - end - - def hook_url - base_url + config.options[:hook_path] - end - - input :auth_tokens, - :auth_tokens_jwk_json, - :cds_jwt_iss - - run do - auth_tokens_list = JSON.parse(auth_tokens) - auth_tokens_jwk = JSON.parse(auth_tokens_jwk_json) - skip_if auth_tokens_list.empty?, 'No Authorization tokens produced from the previous tests.' - skip_if auth_tokens_jwk.empty?, 'No Authorization token JWK produced from the previous test.' - - auth_tokens_jwk.each_with_index do |auth_token_jwk, index| - @request_number = index + 1 - - begin - jwk = JSON.parse(auth_token_jwk).deep_symbolize_keys - - payload, = - JWT.decode( - auth_tokens_list[index], - JWT::JWK.import(jwk).public_key, - true, - algorithms: [jwk[:alg]], - exp_leeway: 60, - iss: cds_jwt_iss, - aud: hook_url, - verify_not_before: false, - verify_iat: false, - verify_jti: true, - verify_iss: true, - verify_aud: true - ) - rescue StandardError => e - add_message('error', "#{request_number}Token validation error: #{e.message}") - next - end - - missing_claims = required_claims - payload.keys - missing_claims_string = missing_claims.map { |claim| "`#{claim}`" }.join(', ') - - unless missing_claims.empty? - add_message('error', "#{request_number}JWT payload missing required claims: #{missing_claims_string}") - next - end - end - no_error_validation('Token payload is missing required claims or does not have a valid signiture.') - end - end -end diff --git a/lib/davinci_crd_test_kit/crd_client_suite.rb b/lib/davinci_crd_test_kit/crd_client_suite.rb deleted file mode 100644 index 2198272f..00000000 --- a/lib/davinci_crd_test_kit/crd_client_suite.rb +++ /dev/null @@ -1,131 +0,0 @@ -require_relative 'client_fhir_api_group' -require_relative 'client_hooks_group' -require_relative 'client_tests/client_card_must_support_group' -require_relative 'client_registration_group' -require_relative 'routes/cds_services_discovery_handler' -require_relative 'tags' -require_relative 'urls' -require_relative 'crd_options' -require_relative 'routes/hook_request_endpoint' -require_relative 'ext/inferno_core/runnable' - -module DaVinciCRDTestKit - class CRDClientSuite < Inferno::TestSuite - id :crd_client - title 'Da Vinci CRD Client Test Suite' - description <<~DESCRIPTION - The Da Vinci CRD Client Test Suite tests the conformance of client systems - to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) - Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). - - For details on the design and use of these tests, see the wiki including - - [Suite Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Details) - for a high-level description of the test - organization, including its components and limitations. - - [Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions) - for a step-by-step guide to execution of these - tests against a CRD client, including [instructions for a demonstration execution](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Client-Instructions#demonstration-execution) - against the [public reference implementation](https://crd-request-generator.davinci.hl7.org/). - DESCRIPTION - - suite_summary <<~SUMMARY - The Da Vinci CRD Client Test Suite tests the conformance of client systems - to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) - Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). - SUMMARY - - links [ - { - label: 'Report Issue', - url: 'https://github.com/inferno-framework/davinci-crd-test-kit/issues' - }, - { - label: 'Open Source', - url: 'https://github.com/inferno-framework/davinci-crd-test-kit' - }, - { - label: 'Download', - url: 'https://github.com/inferno-framework/davinci-crd-test-kit/releases' - } - ] - - requirement_sets( - { - identifier: 'hl7.fhir.us.davinci-crd_2.0.1', - title: 'Da Vinci Coverage Requirements Discovery (CRD) v2.0.1', - actor: 'Client' - }, - { - identifier: 'cds-hooks_2.0', - title: 'CDS Hooks', - actor: 'Client' - }, - { - identifier: 'cds-hooks-library_1.0.1', - title: 'CDS Hooks Library', - actor: 'Client', - requirements: 'referenced' - } - ) - - fhir_resource_validator do - igs('hl7.fhir.us.davinci-crd#2.0.1') - - exclude_message do |message| - message.message.match?(/\A\S+: \S+: URL value '.*' does not resolve/) - end - end - - suite_option :smart_app_launch_version, - title: 'SMART App Launch Version', - list_options: [ - { - label: 'SMART App Launch 1.0.0', - value: CRDOptions::SMART_1 - }, - { - label: 'SMART App Launch 2.0.0', - value: CRDOptions::SMART_2 - } - ] - - def self.extract_token_from_query_params(request) - request.query_parameters['token'] - end - - route :get, '/cds-services', Routes::CDSServicesDiscoveryHandler - # TODO - # route :post, '/cds-services/:cds-service_id', cds_service_handler - - allow_cors APPOINTMENT_BOOK_PATH, ENCOUNTER_START_PATH, ENCOUNTER_DISCHARGE_PATH, ORDER_DISPATCH_PATH, - ORDER_SELECT_PATH, ORDER_SIGN_PATH - suite_endpoint :post, APPOINTMENT_BOOK_PATH, HookRequestEndpoint - suite_endpoint :post, ENCOUNTER_START_PATH, HookRequestEndpoint - suite_endpoint :post, ENCOUNTER_DISCHARGE_PATH, HookRequestEndpoint - suite_endpoint :post, ORDER_DISPATCH_PATH, HookRequestEndpoint - suite_endpoint :post, ORDER_SELECT_PATH, HookRequestEndpoint - suite_endpoint :post, ORDER_SIGN_PATH, HookRequestEndpoint - - resume_test_route :get, RESUME_PASS_PATH do |request| - CRDClientSuite.extract_token_from_query_params(request) - end - resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request| - CRDClientSuite.extract_token_from_query_params(request) - end - - group do - id :crd_client_hook_invocation - title 'Hook Invocation' - description %( - This groups checks that the system can register as a CDS Client with - Inferno's simulated CRD Server and make hook invocations. - ) - - group from: :crd_client_registration - group from: :crd_client_hooks - group from: :crd_client_card_must_support - end - - group from: :crd_client_fhir_api - end -end diff --git a/lib/davinci_crd_test_kit/crd_options.rb b/lib/davinci_crd_test_kit/crd_options.rb deleted file mode 100644 index 6c59ec02..00000000 --- a/lib/davinci_crd_test_kit/crd_options.rb +++ /dev/null @@ -1,9 +0,0 @@ -module DaVinciCRDTestKit - module CRDOptions - SMART_1 = 'smart_app_launch_1'.freeze - SMART_2 = 'smart_app_launch_2'.freeze - - SMART_1_REQUIREMENT = { smart_app_launch_version: SMART_1 }.freeze - SMART_2_REQUIREMENT = { smart_app_launch_version: SMART_2 }.freeze - end -end diff --git a/lib/davinci_crd_test_kit/crd_server_suite.rb b/lib/davinci_crd_test_kit/crd_server_suite.rb deleted file mode 100644 index 22617a05..00000000 --- a/lib/davinci_crd_test_kit/crd_server_suite.rb +++ /dev/null @@ -1,80 +0,0 @@ -require_relative 'jwt_helper' -require_relative 'routes/jwk_set_endpoint_handler' -require_relative 'server_discovery_group' -require_relative 'server_demonstrate_hook_response_group' -require_relative 'server_hooks_group' - -module DaVinciCRDTestKit - class CRDServerSuite < Inferno::TestSuite - id :crd_server - title 'Da Vinci CRD Server Test Suite' - description <<~DESCRIPTION - The Da Vinci CRD Server Test Suite tests the conformance of server systems - to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) - Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). - - For details on the design and use of these tests, see the wiki including - - [Suite Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Details) - for a high-level description of the test - organization, including its components and limitations. - - [Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Instructions) - for a step-by-step guide to execution of these - tests against a CRD client, including [instructions for a demonstration execution](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Instructions#demonstration-execution) - against the [public reference implementation](https://crd.davinci.hl7.org/). - DESCRIPTION - - suite_summary <<~SUMMARY - The Da Vinci CRD Server Test Suite tests the conformance of server systems - to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) - Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). - SUMMARY - - links [ - { - label: 'Report Issue', - url: 'https://github.com/inferno-framework/davinci-crd-test-kit/issues' - }, - { - label: 'Open Source', - url: 'https://github.com/inferno-framework/davinci-crd-test-kit' - }, - { - label: 'Download', - url: 'https://github.com/inferno-framework/davinci-crd-test-kit/releases' - } - ] - - requirement_sets( - { - identifier: 'hl7.fhir.us.davinci-crd_2.0.1', - title: 'Da Vinci Coverage Requirements Discovery (CRD) v2.0.1', - actor: 'Server' - } - ) - - input :base_url, - title: 'CRD server base URL' - - fhir_resource_validator do - igs('hl7.fhir.us.davinci-crd#2.0.1') - - exclude_message do |message| - # extension definition issue present in 2.0.1 but corrected in later versions - message.message.match?(%r{The extension http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information is not allowed to be used at this point \(allowed = e:QuestionnaireResponse, e:Encounter, e:NutritionOrder, e:CommunicationRequest, e:DeviceRequest, e:ServiceRequest, e:MedicationRequest; this element is \[Appointment\]\)}) # rubocop:disable Layout/LineLength - end - end - - def inferno_base_url - suite_id = self.class.suite.id - @inferno_base_url ||= "#{Inferno::Application['base_url']}/custom/#{suite_id}" - end - - route :get, '/jwks.json', Routes::JWKSetEndpointHandler - - group from: :crd_server_discovery_group - - group from: :crd_server_demonstrate_hook_response - - group from: :crd_server_hooks - end -end diff --git a/lib/davinci_crd_test_kit/cross_suite/base_urls.rb b/lib/davinci_crd_test_kit/cross_suite/base_urls.rb new file mode 100644 index 00000000..d1da6870 --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/base_urls.rb @@ -0,0 +1,20 @@ +module DaVinciCRDTestKit + RESUME_PASS_PATH = '/resume_pass'.freeze + RESUME_FAIL_PATH = '/resume_fail'.freeze + + # base url, plus other shared ones such as resume urls + # suite_id must be defined + module BaseURLs + def inferno_base_url + @inferno_base_url ||= "#{Inferno::Application['base_url']}/custom/#{suite_id}" + end + + def resume_pass_url + @resume_pass_url ||= inferno_base_url + RESUME_PASS_PATH + end + + def resume_fail_url + @resume_fail_url ||= inferno_base_url + RESUME_FAIL_PATH + end + end +end diff --git a/lib/davinci_crd_test_kit/cards_identification.rb b/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb similarity index 76% rename from lib/davinci_crd_test_kit/cards_identification.rb rename to lib/davinci_crd_test_kit/cross_suite/cards_identification.rb index 33ff11c2..5d524d3e 100644 --- a/lib/davinci_crd_test_kit/cards_identification.rb +++ b/lib/davinci_crd_test_kit/cross_suite/cards_identification.rb @@ -1,10 +1,10 @@ -require_relative 'server_hook_request_validation' +require_relative 'hook_request_field_validation' require_relative 'suggestion_actions_validation' module DaVinciCRDTestKit module CardsIdentification include DaVinciCRDTestKit::SuggestionActionsValidation - include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::HookRequestFieldValidation COVERAGE_INFO_EXT_URL = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information'.freeze @@ -16,6 +16,7 @@ module CardsIdentification INSTRUCTIONS_RESPONSE_TYPE = 'instructions'.freeze LAUNCH_SMART_APP_RESPONSE_TYPE = 'launch_smart_app'.freeze PROPOSE_ALTERNATIVE_REQUEST_RESPONSE_TYPE = 'propose_alternate_request'.freeze + COVERAGE_INFO_CONFIGURATION_CODE = 'coverage-info'.freeze ADDITIONAL_ORDERS_EXPECTED_RESOURCE_TYPES = %w[ CommunicationRequest Device DeviceRequest Medication @@ -24,7 +25,7 @@ module CardsIdentification ].freeze PROPOSE_ALTERNATIVE_REQUEST_EXPECTED_RESOURCE_TYPES = %w[ - Device DeviceRequest Encounter Medication + CommunicationRequest Device DeviceRequest Encounter Medication MedicationRequest NutritionOrder ServiceRequest VisionPrescription ].freeze @@ -51,6 +52,59 @@ def identify_action_type(action) nil end + def coverage_info_card_type?(card) + return false unless card.respond_to?(:dig) + + card.dig('source', 'type') == COVERAGE_INFO_CONFIGURATION_CODE || + card.dig('source', 'topic', 'code') == COVERAGE_INFO_CONFIGURATION_CODE + end + + def coverage_info_system_action_type?(action) + return false unless action.respond_to?(:[]) + + [COVERAGE_INFORMATION_RESPONSE_TYPE, FORM_COMPLETION_RESPONSE_TYPE].include?(identify_action_type(action)) + end + + def coverage_info_content(response_body) + return [[], []] unless response_body.is_a?(Hash) + + cards = + if response_body['cards'].is_a?(Array) + response_body['cards'].select { |card| coverage_info_card_type?(card) } + else + [] + end + actions = + if response_body['systemActions'].is_a?(Array) + response_body['systemActions'].select { |action| coverage_info_system_action_type?(action) } + else + [] + end + + [cards, actions] + end + + def coverage_info_response?(response_body) + cards, actions = coverage_info_content(response_body) + + cards.present? || actions.present? + end + + def coverage_info_configuration_disabled?(request_body) + request_body.is_a?(Hash) && + request_body.dig('extension', 'davinci-crd.configuration', COVERAGE_INFO_CONFIGURATION_CODE) == false + end + + def disable_coverage_info_configuration!(request_body) + request_body['extension'] = {} unless request_body['extension'].is_a?(Hash) + unless request_body['extension']['davinci-crd.configuration'].is_a?(Hash) + request_body['extension']['davinci-crd.configuration'] = {} + end + request_body['extension']['davinci-crd.configuration'][COVERAGE_INFO_CONFIGURATION_CODE] = false + + request_body + end + def additional_orders_response_type?(card, expected_resource_types: ADDITIONAL_ORDERS_EXPECTED_RESOURCE_TYPES) card['suggestions']&.all? do |suggestion| actions = suggestion['actions'] @@ -62,7 +116,23 @@ def additional_orders_response_type?(card, expected_resource_types: ADDITIONAL_O end def coverage_information_response_type?(action) - action.dig('resource', 'extension')&.any? { |extension| extension['url'] == COVERAGE_INFO_EXT_URL } + return false unless action.respond_to?(:[]) + + extensions = + if action['resource'].respond_to?(:extension) + action['resource'].extension + else + action.dig('resource', 'extension') + end + + extensions&.any? { |extension| extension_url(extension) == COVERAGE_INFO_EXT_URL } + end + + def extension_url(extension) + return extension.url if extension.respond_to?(:url) + return extension['url'] if extension.respond_to?(:[]) + + nil end def create_or_update_coverage_card_response_type?(card) @@ -75,6 +145,10 @@ def create_or_update_coverage_action_response_type?(action) ['create', 'update'].include?(action['type']) && action_resource_type_check(action, ['Coverage']) end + def create_questionnaire_action_response_type?(action) + action['type'] == 'create' && action_resource_type_check(action, ['Questionnaire']) + end + def external_reference_response_type?(card) card['links']&.all? { |link| link['type'] == 'absolute' } end diff --git a/lib/davinci_crd_test_kit/cross_suite/cards_logical_model_validation.rb b/lib/davinci_crd_test_kit/cross_suite/cards_logical_model_validation.rb new file mode 100644 index 00000000..19cb73a6 --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/cards_logical_model_validation.rb @@ -0,0 +1,98 @@ +require_relative 'cards_identification' + +module DaVinciCRDTestKit + module CardsLogicalModelValidation + include DaVinciCRDTestKit::CardsIdentification + + CRD_LOGICAL_MODEL_BASE = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition'.freeze + CRD_RESPONSE_BASE_LOGICAL_MODEL = 'CRDHooksResponseBase'.freeze + + CARD_TYPE_TO_LOGICAL_MODEL = { + DaVinciCRDTestKit::CardsIdentification::ADDITIONAL_ORDERS_RESPONSE_TYPE => + 'CRDHooksResponse-additionalOrders', + DaVinciCRDTestKit::CardsIdentification::CREATE_OR_UPDATE_COVERAGE_RESPONSE_TYPE => + 'CRDHooksResponse-adjustCoverage', + DaVinciCRDTestKit::CardsIdentification::EXTERNAL_REFERENCE_RESPONSE_TYPE => + 'CRDHooksResponse-externalReference', + DaVinciCRDTestKit::CardsIdentification::FORM_COMPLETION_RESPONSE_TYPE => + 'CRDHooksResponse-formCompletion', + DaVinciCRDTestKit::CardsIdentification::INSTRUCTIONS_RESPONSE_TYPE => + 'CRDHooksResponse-instructions', + DaVinciCRDTestKit::CardsIdentification::LAUNCH_SMART_APP_RESPONSE_TYPE => + 'CRDHooksResponse-launchSMART', + DaVinciCRDTestKit::CardsIdentification::PROPOSE_ALTERNATIVE_REQUEST_RESPONSE_TYPE => + 'CRDHooksResponse-alternateRequest' + }.freeze + + ACTION_TYPE_TO_LOGICAL_MODEL = { + DaVinciCRDTestKit::CardsIdentification::COVERAGE_INFORMATION_RESPONSE_TYPE => + 'CRDHooksResponse-coverageInformation', + DaVinciCRDTestKit::CardsIdentification::CREATE_OR_UPDATE_COVERAGE_RESPONSE_TYPE => + 'CRDHooksResponse-adjustCoverage', + DaVinciCRDTestKit::CardsIdentification::FORM_COMPLETION_RESPONSE_TYPE => + 'CRDHooksResponse-formCompletion' + }.freeze + + def logical_model_url(profile_name) + "#{CRD_LOGICAL_MODEL_BASE}/#{profile_name}" + end + + def perform_cards_logical_model_validation(cards, system_actions, response_index = 0) + if cards.is_a?(Array) + cards.each_with_index do |card, card_index| + validate_card_against_logical_model(card, response_index, card_index) + end + end + + return unless system_actions.is_a?(Array) + + system_actions.each_with_index do |action, action_index| + validate_system_action_against_logical_model(action, response_index, action_index) + end + end + + def validate_card_against_logical_model(card, response_index, card_index) + label = logical_model_entity_label(response_index, card_index, 'card') + unless card.is_a?(Hash) + add_message('error', "#{label} is not a JSON object; skipping logical model validation.") + return + end + + card_type = identify_card_type(card) + profile_name = CARD_TYPE_TO_LOGICAL_MODEL[card_type] + unless profile_name + add_message('warning', + "#{label} could not be categorized as a known CRD response type; " \ + 'validating against the base CRD response logical model.') + profile_name = CRD_RESPONSE_BASE_LOGICAL_MODEL + end + + conforms_to_logical_model?({ 'cards' => [card] }, logical_model_url(profile_name), + message_prefix: "#{label} (#{card_type || 'uncategorized'}): ") + end + + def validate_system_action_against_logical_model(action, response_index, action_index) + label = logical_model_entity_label(response_index, action_index, 'systemAction') + unless action.is_a?(Hash) + add_message('error', "#{label} is not a JSON object; skipping logical model validation.") + return + end + + action_type = identify_action_type(action) + profile_name = ACTION_TYPE_TO_LOGICAL_MODEL[action_type] + unless profile_name + add_message('warning', + "#{label} could not be categorized as a known CRD response type; " \ + 'validating against the base CRD response logical model.') + profile_name = CRD_RESPONSE_BASE_LOGICAL_MODEL + end + + conforms_to_logical_model?({ 'systemActions' => [action] }, logical_model_url(profile_name), + message_prefix: "#{label} (#{action_type || 'uncategorized'}): ") + end + + def logical_model_entity_label(response_index, entity_index, kind) + "Server response #{response_index + 1} #{kind} #{entity_index + 1}" + end + end +end diff --git a/lib/davinci_crd_test_kit/cards_validation.rb b/lib/davinci_crd_test_kit/cross_suite/cards_validation.rb similarity index 96% rename from lib/davinci_crd_test_kit/cards_validation.rb rename to lib/davinci_crd_test_kit/cross_suite/cards_validation.rb index 70fdd1a3..b8a33c36 100644 --- a/lib/davinci_crd_test_kit/cards_validation.rb +++ b/lib/davinci_crd_test_kit/cross_suite/cards_validation.rb @@ -1,9 +1,9 @@ -require_relative 'server_hook_request_validation' +require_relative 'hook_request_field_validation' require_relative 'suggestion_actions_validation' module DaVinciCRDTestKit module CardsValidation - include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::HookRequestFieldValidation include DaVinciCRDTestKit::SuggestionActionsValidation HOOKS = [ @@ -166,7 +166,7 @@ def card_source_topic_check(topic) def card_summary_check(card) return if !card['summary'].is_a?(String) || card['summary'].length < 140 - add_message('error', "`summary` is over the 140-character limit: `#{card}`") + add_message('error', "`summary` is over the 140-character limit: `#{card['summary']}`") end def card_indicator_check(card) @@ -224,7 +224,7 @@ def extract_all_valid_cards_from_hooks_responses service_response = JSON.parse(request.response_body) perform_cards_validation(service_response['cards'], service_response['systemActions'].present?, index) rescue JSON::ParserError - add_message('error', "Invalid JSON: #{response_label(response_index + 1).downcase} is not a valid JSON.") + add_message('error', "Invalid JSON: #{response_label(index + 1).downcase} is not valid JSON.") end end diff --git a/lib/davinci_crd_test_kit/client_tests/coverage-information_stu201_metadata.yml b/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu201_metadata.yml similarity index 96% rename from lib/davinci_crd_test_kit/client_tests/coverage-information_stu201_metadata.yml rename to lib/davinci_crd_test_kit/cross_suite/coverage-information_stu201_metadata.yml index b026cccb..dfc18464 100644 --- a/lib/davinci_crd_test_kit/client_tests/coverage-information_stu201_metadata.yml +++ b/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu201_metadata.yml @@ -1,7 +1,7 @@ --- :name: coverage_information :version: v2.0.1 -:reformatted_version: vv201 +:reformatted_version: v201 :profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information :profile_name: "Extension: Coverage Information" :profile_version: 2.0.1 diff --git a/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu221_metadata.yml b/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu221_metadata.yml new file mode 100644 index 00000000..fe881028 --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/coverage-information_stu221_metadata.yml @@ -0,0 +1,60 @@ +--- +:name: coverage_information +:version: v2.2.1 +:reformatted_version: v221 +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information +:profile_name: "Extension: Coverage Information" +:profile_version: 2.2.1 +:title: Coverage Information +:must_supports: + :extensions: + - :id: Extension.extension:coverage + :path: extension + :url: coverage + - :id: Extension.extension:covered + :path: extension + :url: covered + - :id: Extension.extension:pa-needed + :path: extension + :url: pa-needed + - :id: Extension.extension:doc-needed + :path: extension + :url: doc-needed + - :id: Extension.extension:doc-purpose + :path: extension + :url: doc-purpose + - :id: Extension.extension:info-needed + :path: extension + :url: info-needed + - :id: Extension.extension:billingCode + :path: extension + :url: billingCode + - :id: Extension.extension:reason + :path: extension + :url: reason + - :id: Extension.extension:detail + :path: extension + :url: detail + - :id: Extension.extension:dependency + :path: extension + :url: dependency + - :id: Extension.extension:questionnaire + :path: extension + :url: questionnaire + - :id: Extension.extension:date + :path: extension + :url: date + - :id: Extension.extension:coverage-assertion-id + :path: extension + :url: coverage-assertion-id + - :id: Extension.extension:satisfied-pa-id + :path: extension + :url: satisfied-pa-id + - :id: Extension.extension:contact + :path: extension + :url: contact + - :id: Extension.extension:expiry-date + :path: extension + :url: expiry-date + :slices: + :elements: diff --git a/lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request.rb b/lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request.rb new file mode 100644 index 00000000..560166bf --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request.rb @@ -0,0 +1,155 @@ +require 'uri' + +module DaVinciCRDTestKit + class FhirpathServiceError < StandardError; end + + # Methods for executing simple fhirpath queries on cds request objects, e.g., to resolve + # prefetch tokens. + # + # If resolve() calls are in scope (CRD 2.2.1 and beyond), then an implementation of the + # `resolve(target)` method must be provided, where `target` is + module FhirpathOnCDSRequest + SUPPORTED_POST_RESOLVE_FUNCTIONS = %w[ofType today resolve].freeze + + # fhirpath services doesn't handle the following, which are handled manually + # - non-fhir objects + # - resolve() + # - Bundle.entry.resource when resolve() appears in the remaining query (to track entry.fullUrl per entry) + def execute_fhirpath_on_cds_request(hook_request, fhirpath_query) + cds_component, remaining_query = identify_cds_component(fhirpath_query) + execution_targets = cds_component.present? ? get_cds_field(hook_request, cds_component) : hook_request + + execution_targets.map do |execution_target| + @current_base_fhir_server = hook_request['fhirServer'] + execute(execution_target, remaining_query) + end.flatten.compact + ensure + # clean-up identity + @current_base_fhir_server = nil + end + + private + + # ------------------------------------------------------------------------- + # resolve() handling + # ------------------------------------------------------------------------- + + # input is either + # - string representing a FHIR reference, absolute or relative + # - a FHIR Reference object with an absolute or relative reference in the `reference` element + # Default implementation does not perform any resolution + def resolve(_reference) + nil + end + + # ------------------------------------------------------------------------- + # CDS Request Handling + # ------------------------------------------------------------------------- + + # returns a pair of [cds component, remaining query] + def identify_cds_component(fhirpath_query) + if fhirpath_query.starts_with?('context.') + context_field, remaining_query = fhirpath_query[8..].split('.', 2) + ["context.#{context_field}", remaining_query] + elsif fhirpath_query.starts_with?('%') + prefetch_key, remaining_query = fhirpath_query[1..].split('.', 2) + ["prefetch.#{prefetch_key}", remaining_query] + else + # everything is in the cds request + [fhirpath_query, nil] + end + end + + def get_cds_field(request, cds_path) + value = cds_path.split('.').reduce(request) { |hash, path| hash.present? ? hash[path] : nil } + + value.is_a?(Array) ? value : [value] + end + + # ------------------------------------------------------------------------- + # Main execution loop + # ------------------------------------------------------------------------- + + def execute(execution_target, fhirpath_query) + return execution_target unless fhirpath_query.present? && execution_target.present? + + if fhirpath_query.starts_with?('resolve()') + execute_resolve(execution_target, fhirpath_query) + elsif fhirpath_query.starts_with?('entry.resource.') && fhirpath_query.include?('resolve()') + execute_entry_resource_step(execution_target, fhirpath_query) + else + execute_fhirpath_step(execution_target, fhirpath_query) + end + end + + def execute_fhirpath_step(execution_target, fhirpath_query) + path_to_execute, query_after_next_resolve = fhirpath_query.split('.resolve()', 2) + remaining_query = "#{'resolve()' if fhirpath_query.include?('resolve()')}#{query_after_next_resolve}" + delegate_execution_to_fhirpath_engine(execution_target, path_to_execute).compact.map do |result| + execute(result, remaining_query) + end.flatten.compact + end + + def execute_resolve(execution_target, fhirpath_query) + referenced = resolve(execution_target) + return nil unless referenced.present? + + execute(referenced, fhirpath_query[10..]) + end + + def execute_entry_resource_step(execution_target, fhirpath_query) + validate_entry_resource_query!(fhirpath_query) + return nil unless execution_target['entry'].present? + + Array.wrap(execution_target['entry']).map do |entry| + @current_base_fhir_server = base_fhir_server_for_identity(entry['fullUrl']) + execute(entry['resource'], fhirpath_query[15..]) + end.flatten.compact + end + + def validate_entry_resource_query!(fhirpath_query) + _, post_resolve = fhirpath_query.split('.resolve()', 2) + return unless post_resolve.present? + + unsupported = post_resolve.scan(/[a-zA-Z_]\w*(?=\()/).uniq - SUPPORTED_POST_RESOLVE_FUNCTIONS + return if unsupported.empty? + + raise FhirpathServiceError, + "Unsupported function(s) after resolve() in '#{fhirpath_query}': #{unsupported.join(', ')}. " \ + "Supported: #{SUPPORTED_POST_RESOLVE_FUNCTIONS.join(', ')}." + end + + def base_fhir_server_for_identity(current_resource_identity) + return nil unless current_resource_identity.present? + + parsed_identity = URI.parse(current_resource_identity) + return nil unless ['http', 'https'].include?(parsed_identity.scheme) + + current_resource_identity.split('/')[0..-3].join('/') + rescue URI::InvalidURIError + nil + end + + # ------------------------------------------------------------------------- + # fhirpath delegation + # ------------------------------------------------------------------------- + + def fhirpath_evaluator + @fhirpath_evaluator ||= Inferno::DSL::FhirpathEvaluation::Evaluator.new + end + + def delegate_execution_to_fhirpath_engine(hash, fhirpath_query) + return [hash] unless fhirpath_query.present? + return [] unless hash.present? + + result = fhirpath_evaluator.call_fhirpath_service(hash, fhirpath_query) + unless result.status.to_s.starts_with?('2') + raise FhirpathServiceError, + "FHIRPath service returned #{result.status} for query '#{fhirpath_query}' " \ + "on resource #{hash.to_json}: #{result.body}" + end + + JSON.parse(result.body).map { |entry| entry['element'] } + end + end +end diff --git a/lib/davinci_crd_test_kit/hook_request_field_validation.rb b/lib/davinci_crd_test_kit/cross_suite/hook_request_field_validation.rb similarity index 80% rename from lib/davinci_crd_test_kit/hook_request_field_validation.rb rename to lib/davinci_crd_test_kit/cross_suite/hook_request_field_validation.rb index 048deb54..06bbccbb 100644 --- a/lib/davinci_crd_test_kit/hook_request_field_validation.rb +++ b/lib/davinci_crd_test_kit/cross_suite/hook_request_field_validation.rb @@ -1,5 +1,108 @@ module DaVinciCRDTestKit module HookRequestFieldValidation + def json_parse(json) + JSON.parse(json) + rescue JSON::ParserError + add_message('error', "#{request_number}Invalid JSON.") + false + end + + def hook_request_required_fields_check(request_body, hook_name, ig_version: 'v201') # rubocop:disable Lint/UnusedMethodArgument + hook_request_required_fields_check_presence_and_types(request_body) + + if request_body['hook'] != hook_name + add_message('error', + "#{request_number}The `hook` field should be #{hook_name}, but was #{request_body['hook']}") + end + + if request_body['fhirAuthorization'].present? && request_body['fhirServer'].blank? + add_message('error', %( + #{request_number}Missing `fhirServer` field: If `fhirAuthorization` is provided, this field is + #REQUIRED.)) + end + + return unless request_body['hookInstance'].present? && !guid?(request_body['hookInstance']) + + add_message('error', "#{request_number}`hookInstance` field must be a globally unique UUID.") + end + + def hook_request_optional_fields_check(request_body, ig_version: 'v201') # rubocop:disable Lint/UnusedMethodArgument) + hook_request_optional_fields_check_type(request_body) + + defined_fields = hook_required_fields.keys + hook_optional_fields.keys + request_body.keys.reject { |field| defined_fields.include?(field) }.each do |field| + if request_body[field].blank? + add_message('error', "#{request_number}Hook request field `#{field}` cannot be defined but blank.") + end + end + + hook_request_fhir_auth_check(request_body) + end + + def hook_request_context_check(context, hook_name, ig_version: 'v201') + required_fields = context_required_fields_by_hook[hook_name] + required_fields.each do |field, type| + validate_presence_and_type(context, field, type, + "#{request_number}#{hook_name} request context") + end + context_validate_optional_fields(context, hook_name, ig_version:) + hook_specific_context_check(context, hook_name, ig_version:) + end + + def hook_request_prefetch_check(advertised_prefetch_fields, received_prefetch, received_context, ig_version: 'v201') + received_prefetch.each do |received_prefetch_key, received_prefetch_hash| + unless advertised_prefetch_fields.key?(received_prefetch_key) + add_message('error', "#{request_number}Client sent non-requested Prefetch field `#{received_prefetch_key}`.") + next + end + + unless received_prefetch_hash.is_a?(Hash) + add_message('error', "#{request_number}Prefetch field `#{received_prefetch_key}` is not of type `Hash`.") + next + end + + received_prefetch_resource = FHIR.from_contents(received_prefetch[received_prefetch_key].to_json) + advertised_prefetch_template = advertised_prefetch_fields[received_prefetch_key] + if advertised_prefetch_template.include?('?') + advertised_prefetch_fhir_search = advertised_prefetch_template.gsub(/{|}/, '').split('?') + advertised_prefetch_resource_type = advertised_prefetch_fhir_search.first + + if advertised_prefetch_resource_type == 'Coverage' + advertised_coverage_query_params = Rack::Utils.parse_nested_query(advertised_prefetch_fhir_search.last) + + advertised_patient_token = advertised_coverage_query_params['patient'] + advertised_context_patient_id_key = advertised_patient_token.split('.').last + received_context_patient_id = received_context[advertised_context_patient_id_key] + + advertised_status_param = advertised_coverage_query_params['status'] + + validate_prefetch_coverages(received_prefetch_resource, received_prefetch_key, received_context_patient_id, + advertised_status_param, ig_version:) + end + else + advertised_prefetch_token = advertised_prefetch_template.gsub(/{|}/, '').split('/') + advertised_context_id = advertised_prefetch_token.last.split('.').last + + if advertised_prefetch_token.length == 1 + received_context_reference = FHIR::Reference.new(reference: received_context[advertised_context_id]) + received_context_resource_type = received_context_reference.resource_type + received_context_id = received_context_reference.reference_id + else + received_context_id = received_context[advertised_context_id] + received_context_resource_type = advertised_prefetch_token.first + end + validate_prefetch_resource(received_prefetch_resource, received_prefetch_key, + received_context_resource_type, received_context_id, ig_version:) + end + end + end + + def no_error_validation(message) + assert messages.none? { |msg| msg[:type] == 'error' }, message + end + + private + def request_number if @request_number.blank? '' @@ -8,13 +111,6 @@ def request_number end end - def json_parse(json) - JSON.parse(json) - rescue JSON::ParserError - add_message('error', "#{request_number}Invalid JSON.") - false - end - def hook_required_fields { 'hook' => String, @@ -82,45 +178,57 @@ def context_user_types_by_hook }.freeze end - def structure_definition_map + def structure_definition_map(ig_version) + case ig_version + when 'v221' + structure_definition_map_v221 + when 'v201' + structure_definition_map_v201 + end + end + + def structure_definition_map_v201 { - 'Practitioner' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner', - 'PractitionerRole' => 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole', - 'Patient' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient', - 'Encounter' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter', - 'Appointment' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment', - 'DeviceRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest', - 'MedicationRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest', - 'NutritionOrder' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-nutritionorder', - 'ServiceRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest', - 'VisionPrescription' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription', - 'Medication' => 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication', - 'Device' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-device', - 'CommunicationRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest', - 'Task' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-taskquestionnaire', - 'Coverage' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-coverage', - 'Location' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location', - 'Organization' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization' + 'Practitioner' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner|2.0.1', + 'PractitionerRole' => 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole|3.1.1', + 'Patient' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient|2.0.1', + 'Encounter' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter|2.0.1', + 'Appointment' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment|2.0.1', + 'DeviceRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest|2.0.1', + 'MedicationRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest|2.0.1', + 'NutritionOrder' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-nutritionorder|2.0.1', + 'ServiceRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest|2.0.1', + 'VisionPrescription' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription|2.0.1', + 'Medication' => 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication|3.1.1', + 'Device' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-device|2.0.1', + 'CommunicationRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest|2.0.1', + 'Task' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-taskquestionnaire|2.0.1', + 'Coverage' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-coverage|2.0.1', + 'Location' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location|2.0.1', + 'Organization' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization|2.0.1' }.freeze end - def hook_request_required_fields_check(request_body, hook_name) - hook_request_required_fields_check_presence_and_types(request_body) - - if request_body['hook'] != hook_name - add_message('error', - "#{request_number}The `hook` field should be #{hook_name}, but was #{request_body['hook']}") - end - - if request_body['fhirAuthorization'].present? && request_body['fhirServer'].blank? - add_message('error', %( - #{request_number}Missing `fhirServer` field: If `fhirAuthorization` is provided, this field is - #REQUIRED.)) - end - - return unless request_body['hookInstance'].present? && !guid?(request_body['hookInstance']) - - add_message('error', "#{request_number}`hookInstance` field must be a globally unique UUID.") + def structure_definition_map_v221 + { + 'Practitioner' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner|2.2.1', + 'PractitionerRole' => 'http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole|1.2.0', + 'Patient' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient|2.2.1', + 'Encounter' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter|2.2.1', + 'Appointment' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment-no-order|2.2.1', + 'DeviceRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest|2.2.1', + 'MedicationRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest|2.2.1', + 'NutritionOrder' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-nutritionorder|2.2.1', + 'ServiceRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest|2.2.1', + 'VisionPrescription' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription|2.2.1', + 'Medication' => 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication|3.1.1', + 'Device' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-device|2.2.1', + 'CommunicationRequest' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest|2.2.1', + 'Task' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-taskquestionnaire|2.2.1', + 'Coverage' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-coverage|2.2.1', + 'Location' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location|2.2.1', + 'Organization' => 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization|2.2.1' + }.freeze end def hook_request_required_fields_check_presence_and_types(request_body) @@ -131,7 +239,7 @@ def hook_request_required_fields_check_presence_and_types(request_body) end unless request_body[field].is_a?(type) - add_message('error', "#{request_number}Hook request field #{field} is not of type #{type}") + add_message('error', "#{request_number}Hook request field `#{field}` is not of type #{type}") next end end @@ -145,7 +253,7 @@ def fhir_auth_fields_valid?(fhir_authorization_required_fields, fhir_authorizati fhir_auth_valid = false end unless fhir_authorization[field].is_a?(type) - add_message('error', "#{request_number}`fhirAuthorization` field #{field} is not of type #{type}") + add_message('error', "#{request_number}`fhirAuthorization` field `#{field}` is not of type #{type}") fhir_auth_valid = false end end @@ -189,19 +297,6 @@ def hook_request_fhir_auth_check(request_body) { fhir_server_uri: request_body['fhirServer'], fhir_access_token: access_token } end - def hook_request_optional_fields_check(request_body) - hook_request_optional_fields_check_type(request_body) - - defined_fields = hook_required_fields.keys + hook_optional_fields.keys - request_body.keys.reject { |field| defined_fields.include?(field) }.each do |field| - if request_body[field].blank? - add_message('error', "#{request_number}Hook request field `#{field}` cannot be defined but blank.") - end - end - - hook_request_fhir_auth_check(request_body) - end - def hook_request_optional_fields_check_type(request_body) hook_optional_fields.each do |field, type| if request_body[field].blank? @@ -213,7 +308,7 @@ def hook_request_optional_fields_check_type(request_body) end if request_body[field] && !request_body[field].is_a?(type) - add_message('error', "#{request_number}Hook request field #{field} is not of type #{type}") + add_message('error', "#{request_number}Hook request field `#{field}` is not of type #{type}") end end end @@ -238,35 +333,25 @@ def validate_presence_and_type(object, field_name, type, description = '', requi add_message('error', error_msg) end - def hook_request_context_check(context, hook_name) - required_fields = context_required_fields_by_hook[hook_name] - required_fields.each do |field, type| - validate_presence_and_type(context, field, type, - "#{request_number}#{hook_name} request context") - end - context_validate_optional_fields(context, hook_name) - hook_specific_context_check(context, hook_name) - end - - def hook_specific_context_check(context, hook_name) + def hook_specific_context_check(context, hook_name, ig_version: 'v201') case hook_name when 'appointment-book' - appointment_book_context_check(context) + appointment_book_context_check(context, ig_version:) when 'encounter-start', 'encounter-discharge' - encounter_start_or_discharge_context_check(context, hook_name) + encounter_start_or_discharge_context_check(context, hook_name, ig_version:) when 'order-select', 'order-sign' - order_select_or_sign_context_check(context, hook_name) + order_select_or_sign_context_check(context, hook_name, ig_version:) when 'order-dispatch' - order_dispatch_context_check(context) + order_dispatch_context_check(context, ig_version:) end end - def hook_user_type_check(context, hook_name) + def hook_user_type_check(context, hook_name, ig_version: 'v201') supported_resource_types = context_user_types_by_hook[hook_name] - resource_reference_check(context['userId'], 'userId', supported_resource_types:) + resource_reference_check(context['userId'], 'userId', supported_resource_types:, ig_version:) end - def resource_reference_check(reference, field_name, supported_resource_types: nil) + def resource_reference_check(reference, field_name, supported_resource_types: nil, ig_version: 'v201') return unless reference.is_a?(String) && valid_reference_format?(reference, field_name) resource_type, resource_id = reference.split('/') @@ -280,7 +365,9 @@ def resource_reference_check(reference, field_name, supported_resource_types: ni return end - query_and_validate_id_field(resource_type, resource_id) if client_test? && !field_name.include?('selections') + return unless client_test? && !field_name.include?('selections') + + query_and_validate_id_field(resource_type, resource_id, ig_version:) end def valid_reference_format?(reference, field_name) @@ -294,14 +381,14 @@ def valid_reference_format?(reference, field_name) false end - def id_only_fields_check(hook_name, context, id_fields) + def id_only_fields_check(hook_name, context, id_fields, ig_version: 'v201') id_fields.each do |field| resource_id = context[field] next unless resource_id.is_a?(String) && valid_id_format?(field, hook_name, resource_id) if client_test? resource_type = field.split(/(?=[A-Z])/).first.capitalize - query_and_validate_id_field(resource_type, resource_id) + query_and_validate_id_field(resource_type, resource_id, ig_version:) end end end @@ -317,7 +404,7 @@ def valid_id_format?(field, hook_name, resource_id) true end - def bundle_entries_check(context, context_field_name, bundle, resource_types, status = nil) + def bundle_entries_check(context, context_field_name, bundle, resource_types, status = nil, ig_version: 'v201') bundle.entry.each do |entry| resource_id = entry.resource.id next unless resource_id.blank? @@ -337,7 +424,7 @@ def bundle_entries_check(context, context_field_name, bundle, resource_types, st status_check(context, context_field_name, status, target_resources) target_resources.each do |resource| - resource_is_valid?(resource:, profile_url: structure_definition_map[resource.resourceType]) + resource_is_valid?(resource:, profile_url: structure_definition_map(ig_version)[resource.resourceType]) end end @@ -366,11 +453,12 @@ def parse_fhir_bundle_from_context(context_field_name, context) nil end - def context_selections_check(context, selections, order_refs, expected_resource_types) + def context_selections_check(context, selections, order_refs, expected_resource_types, ig_version: 'v201') return unless selections.is_a?(Array) selections.each do |reference| - resource_reference_check(reference, 'selections item', supported_resource_types: expected_resource_types) + resource_reference_check(reference, 'selections item', supported_resource_types: expected_resource_types, + ig_version:) next if order_refs.include?(reference) error_msg = "#{request_number}`selections` field must reference FHIR resources in `draftOrders`. " \ @@ -379,25 +467,26 @@ def context_selections_check(context, selections, order_refs, expected_resource_ end end - def appointment_book_context_check(context) - hook_user_type_check(context, 'appointment-book') - id_only_fields_check('appointment-book', context, ['patientId']) + def appointment_book_context_check(context, ig_version: 'v201') + hook_user_type_check(context, 'appointment-book', ig_version:) + id_only_fields_check('appointment-book', context, ['patientId'], ig_version:) appointment_bundle = parse_fhir_bundle_from_context('appointments', context) return if appointment_bundle.blank? expected_resource_types = ['Appointment'] - bundle_entries_check(context, 'appointments', appointment_bundle, expected_resource_types, 'proposed') + bundle_entries_check(context, 'appointments', appointment_bundle, expected_resource_types, 'proposed', + ig_version:) end - def encounter_start_or_discharge_context_check(context, hook_name) - hook_user_type_check(context, hook_name) - id_only_fields_check(hook_name, context, ['patientId', 'encounterId']) + def encounter_start_or_discharge_context_check(context, hook_name, ig_version: 'v201') + hook_user_type_check(context, hook_name, ig_version:) + id_only_fields_check(hook_name, context, ['patientId', 'encounterId'], ig_version:) end - def order_select_or_sign_context_check(context, hook_name) - hook_user_type_check(context, hook_name) - id_only_fields_check(hook_name, context, ['patientId']) + def order_select_or_sign_context_check(context, hook_name, ig_version: 'v201') + hook_user_type_check(context, hook_name, ig_version:) + id_only_fields_check(hook_name, context, ['patientId'], ig_version:) draft_orders_bundle = parse_fhir_bundle_from_context('draftOrders', context) return if draft_orders_bundle.blank? @@ -407,28 +496,25 @@ def order_select_or_sign_context_check(context, hook_name) 'ServiceRequest', 'VisionPrescription' ] - bundle_entries_check(context, 'draftOrders', draft_orders_bundle, expected_resource_types) + bundle_entries_check(context, 'draftOrders', draft_orders_bundle, expected_resource_types, ig_version:) return unless hook_name == 'order-select' order_refs = draft_orders_bundle.entry.map(&:resource).map do |resource| "#{resource.resourceType}/#{resource.id}" end - context_selections_check(context, context['selections'], order_refs, expected_resource_types) + context_selections_check(context, context['selections'], order_refs, expected_resource_types, ig_version:) end - def order_dispatch_context_check(context) - id_only_fields_check('order-dispatch', context, ['patientId']) + def order_dispatch_context_check(context, ig_version: 'v201') + id_only_fields_check('order-dispatch', context, ['patientId'], ig_version:) order_supported_resource_type = [ 'DeviceRequest', 'MedicationRequest', 'NutritionOrder', 'ServiceRequest', 'VisionPrescription' ] - resource_reference_check(context['order'], 'order', supported_resource_types: order_supported_resource_type) - resource_reference_check(context['performer'], 'performer') - end - - def no_error_validation(message) - assert messages.none? { |msg| msg[:type] == 'error' }, message + resource_reference_check(context['order'], 'order', supported_resource_types: order_supported_resource_type, + ig_version:) + resource_reference_check(context['performer'], 'performer', ig_version:) end def valid_url?(url) @@ -443,7 +529,7 @@ def guid?(string) uuid_regex.match?(string.to_s) end - def query_and_validate_id_field(resource_type, resource_id) + def query_and_validate_id_field(resource_type, resource_id, ig_version: 'v201') fhir_read(resource_type, resource_id) status = request.response[:status] unless status == 200 @@ -465,11 +551,11 @@ def query_and_validate_id_field(resource_type, resource_id) return end - profile_url = hook_name == 'order-dispatch' ? nil : structure_definition_map[resource_type] + profile_url = hook_name == 'order-dispatch' ? nil : structure_definition_map(ig_version)[resource_type] resource_is_valid?(profile_url:) end - def context_validate_optional_fields(hook_context, hook_name) + def context_validate_optional_fields(hook_context, hook_name, ig_version: 'v201') hook_optional_context_fields = context_optional_fields_by_hook[hook_name] return if hook_optional_context_fields.blank? @@ -481,7 +567,7 @@ def context_validate_optional_fields(hook_context, hook_name) optional_field_keys = hook_optional_context_fields.keys if optional_field_keys.include?('encounterId') && hook_context['encounterId'].present? - id_only_fields_check(hook_name, hook_context, ['encounterId']) + id_only_fields_check(hook_name, hook_context, ['encounterId'], ig_version:) end validate_hash_fields(hook_context, optional_field_keys) @@ -513,56 +599,8 @@ def validate_hash_fields(hook_context, hook_optional_context_fields) end end - def hook_request_prefetch_check(advertised_prefetch_fields, received_prefetch, received_context) - received_prefetch.each do |received_prefetch_key, received_prefetch_hash| - unless advertised_prefetch_fields.key?(received_prefetch_key) - add_message('error', "#{request_number}Client sent non-requested Prefetch field `#{received_prefetch_key}`.") - next - end - - unless received_prefetch_hash.is_a?(Hash) - add_message('error', "#{request_number}Prefetch field `#{received_prefetch_key}` is not of type `Hash`.") - next - end - - received_prefetch_resource = FHIR.from_contents(received_prefetch[received_prefetch_key].to_json) - advertised_prefetch_template = advertised_prefetch_fields[received_prefetch_key] - if advertised_prefetch_template.include?('?') - advertised_prefetch_fhir_search = advertised_prefetch_template.gsub(/{|}/, '').split('?') - advertised_prefetch_resource_type = advertised_prefetch_fhir_search.first - - if advertised_prefetch_resource_type == 'Coverage' - advertised_coverage_query_params = Rack::Utils.parse_nested_query(advertised_prefetch_fhir_search.last) - - advertised_patient_token = advertised_coverage_query_params['patient'] - advertised_context_patient_id_key = advertised_patient_token.split('.').last - received_context_patient_id = received_context[advertised_context_patient_id_key] - - advertised_status_param = advertised_coverage_query_params['status'] - - validate_prefetch_coverages(received_prefetch_resource, received_prefetch_key, received_context_patient_id, - advertised_status_param) - end - else - advertised_prefetch_token = advertised_prefetch_template.gsub(/{|}/, '').split('/') - advertised_context_id = advertised_prefetch_token.last.split('.').last - - if advertised_prefetch_token.length == 1 - received_context_reference = FHIR::Reference.new(reference: received_context[advertised_context_id]) - received_context_resource_type = received_context_reference.resource_type - received_context_id = received_context_reference.reference_id - else - received_context_id = received_context[advertised_context_id] - received_context_resource_type = advertised_prefetch_token.first - end - validate_prefetch_resource(received_prefetch_resource, received_prefetch_key, - received_context_resource_type, received_context_id) - end - end - end - def validate_prefetch_coverages(received_resource, advertised_prefetch_key, - received_context_patient_id, advertised_status) + received_context_patient_id, advertised_status, ig_version: 'v201') unless received_resource.resourceType == 'Bundle' add_message('error', "#{request_number}Unexpected resource type: Expected `Bundle`. Got " \ "`#{received_resource.resourceType}`.") @@ -581,12 +619,12 @@ def validate_prefetch_coverages(received_resource, advertised_prefetch_key, received_resource.entry.each_with_index do |entry, index| validate_prefetch_coverage(entry&.resource, advertised_prefetch_key, - received_context_patient_id, advertised_status, index) + received_context_patient_id, advertised_status, index, ig_version:) end end def validate_prefetch_coverage(coverage_resource, advertised_prefetch_key, - received_context_patient_id, advertised_status, entry_index) + received_context_patient_id, advertised_status, entry_index, ig_version: 'v201') unless coverage_resource.present? add_message('error', "#{request_number}Coverage Bundle entry #{entry_index + 1} had no resource") return @@ -599,7 +637,7 @@ def validate_prefetch_coverage(coverage_resource, advertised_prefetch_key, end resource_is_valid?(resource: coverage_resource, - profile_url: structure_definition_map['Coverage']) + profile_url: structure_definition_map(ig_version)['Coverage']) coverage_beneficiary_reference = coverage_resource.beneficiary coverage_beneficiary_patient_id = coverage_beneficiary_reference.reference_id @@ -626,7 +664,7 @@ def validate_prefetch_coverage(coverage_resource, advertised_prefetch_key, end def validate_prefetch_resource(received_resource, advertised_prefetch_key, context_field_resource_type, - context_field_id) + context_field_id, ig_version: 'v201') return unless prefetch_resource_type_correct?(received_resource, context_field_resource_type, "#{request_number}`#{advertised_prefetch_key}` - ") @@ -635,7 +673,7 @@ def validate_prefetch_resource(received_resource, advertised_prefetch_key, conte resource_is_valid?(resource: received_resource) else resource_is_valid?(resource: received_resource, - profile_url: structure_definition_map[context_field_resource_type]) + profile_url: structure_definition_map(ig_version)[context_field_resource_type]) end prefetch_resource_id_correct?(received_resource, context_field_id, diff --git a/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb b/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb new file mode 100644 index 00000000..a09866bc --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker.rb @@ -0,0 +1,462 @@ +require_relative 'fhirpath_on_cds_request' +require_relative 'replace_tokens' +require 'uri' + +module DaVinciCRDTestKit + # ----------------------------------------------------------------------- + # Prefetch Check Helper Class + # ----------------------------------------------------------------------- + class PrefetchCompletenessChecker + include FhirpathOnCDSRequest + include ReplaceTokens + + attr_accessor :hook_request, :request_index, :services_file_path, + :instantiated_prefetch_templates, + :observed_fhirpath_collection_as_comma_delimited_string + + def initialize(hook_request, request_index, services_file_path) + @hook_request = hook_request + @request_index = request_index + @services_file_path = services_file_path + @observed_fhirpath_collection_as_comma_delimited_string = false + @instantiated_prefetch_templates = {} + extract_prefetched_resources + end + + def check_prefetched_data + return ["#{request_error_prefix} No prefetch data provided."] unless hook_request.key?('prefetch') + + hook_prefetch_templates.each do |prefetch_key, prefetch_request| + check_prefetch_template(prefetch_key, prefetch_request) + end + + hook_request['prefetch'].each_key do |prefetch_template| + next if hook_prefetch_templates.key?(prefetch_template) + + errors << "#{request_error_prefix} Extra prefetch data " \ + "provided in unrequested template '#{prefetch_template}'." + end + + errors.uniq + end + + # ----------------------------------------------------------------------- + # Complete vs Subset Prefetch Difference Checking + # ----------------------------------------------------------------------- + + def data_set_different_with_alternate_service?(alternate_services_file_path, compare_key_map) + PrefetchCompletenessChecker.new(hook_request, request_index, alternate_services_file_path) + .data_sets_different?(self, compare_key_map) + end + + # Precondition: the original checker passed without errors meaning the expected set was present + # handles both subset < complete and complete > subset checks via two checks. + # - differences in the calculated id set for `_id` searches signal differences in the data sets. + # - errors during instantiation signal that a resource in the set wasn't present. Since the original + # set was complete, this will only happen if the original set was a subset and the complete set + # includes more data, meaning that the sets are different. (NOTE: triggers an error rather than a different + # set of ids because fhirpath like `...resolve().id` requires the resource be present to evaluate it) + def data_sets_different?(original_service_checker, compare_key_map) + template_key_map = compare_key_map.transform_keys { |key| "%#{key}." }.transform_values { |value| "%#{value}." } + hook_prefetch_templates.each do |prefetch_key, prefetch_request| + data_set_different = data_set_different?(original_service_checker, + compare_key_map, + template_key_map, + prefetch_key, + prefetch_request) + + return true if data_set_different + end + + false + end + + private + + def data_set_different?(original_service_checker, compare_key_map, template_key_map, prefetch_key, prefetch_request) + return false if ['patient', 'pat', 'encounter', 'enc', 'coverage', 'cov'].include?(prefetch_key) + + mapped_prefetch_request = prefetch_request.gsub(/%[a-zA-Z]+\./, template_key_map) + instantiated_request = instantiate_template(prefetch_key, mapped_prefetch_request) + return true if errors.present? # fetch errors - there was more data to include for complete (complete > subset) + + compare_prefetch_key = compare_key_map.key?(prefetch_key) ? compare_key_map[prefetch_key] : prefetch_key + original_instantiated_request = original_service_checker.instantiated_prefetch_templates[compare_prefetch_key] + # don't try to compare when the original didn't have this key + return false unless original_instantiated_request.present? + + _, alternate_ids = resource_type_and_ids_from_search(instantiated_request) + _, original_ids = resource_type_and_ids_from_search(original_instantiated_request) + + # missing ids - the subset requested strictly less data (subset < complete) + alternate_ids != original_ids + end + + # ----------------------------------------------------------------------- + # Errors to return + # ----------------------------------------------------------------------- + def errors + @errors ||= [] + end + + def request_error_prefix + "(Request #{request_index + 1})" + end + + def error_prefix + "#{request_error_prefix} Prefetch Template #{@current_prefetch_key} -" + end + + # ----------------------------------------------------------------------- + # Requested Prefetch Templates + # ----------------------------------------------------------------------- + def hook_prefetch_templates + @hook_prefetch_templates ||= + JSON.parse(File.read(services_file_path))['services'].find do |service| + service['hook'] == hook_request['hook'] + end['prefetch'] + end + + # ----------------------------------------------------------------------- + # Instantiated Prefetch Templates + # ----------------------------------------------------------------------- + def instantiate_template(prefetch_key, prefetch_request) + instantiated_request = replace_tokens_in_string(prefetch_request.dup, hook_request) + instantiated_prefetch_templates[prefetch_key] = instantiated_request + instantiated_request + end + + # ----------------------------------------------------------------------- + # Check of actual prefetch against an instantiated request + # ----------------------------------------------------------------------- + def check_prefetch_template(prefetch_key, prefetch_request) + @current_prefetch_key = prefetch_key + instantiated_request = instantiate_template(prefetch_key, prefetch_request) + if demonstrates_collection_as_comma_delimited_string?(prefetch_request, instantiated_request) + @observed_fhirpath_collection_as_comma_delimited_string = true + end + unless hook_request['prefetch'].key?(prefetch_key) + errors << "#{error_prefix} No prefetch data provided." + return + end + check_provided_against_request(hook_request['prefetch'][prefetch_key], instantiated_request) + rescue FhirpathServiceError => e + raise "#{error_prefix} FHIRPath service error while evaluating prefetch template. " \ + "This indicates an implementation problem in Inferno - please log a ticket. Details: #{e.message}" + end + + def check_provided_against_request(prefetched_value, instantiated_request) + if instantiated_request.include?('?') + if id_search?(instantiated_request) + check_id_search(prefetched_value, instantiated_request) + elsif instantiated_request.starts_with?('Coverage') + check_coverage_search(prefetched_value, instantiated_request) + else + raise "#{error_prefix} Unexpected search template '#{instantiated_request}'. " \ + 'This indicates an implementation problem in the test kit — please log a ticket.' + end + else + check_read(prefetched_value, instantiated_request) + end + end + + def id_search?(request_string) + resource_type = request_string.split('?').first + request_string.starts_with?("#{resource_type}?_id=") + end + + def check_coverage_search(prefetched_value, _instantiated_request) + unless prefetched_value.present? + errors << "#{error_prefix} requested Coverage not provided." + return + end + + check_is_fhir_resource(prefetched_value, target_resource_type: 'Bundle') + unless prefetched_value['entry'].size == 1 + errors << "#{error_prefix} exactly one Coverage must be provided." + return + end + + check_coverage(prefetched_value.dig('entry', 0, 'resource')) + end + + def check_coverage(prefetched_coverage) + unless prefetched_coverage['resourceType'].present? + errors << "#{error_prefix} entry in prefetched Coverage Bundle is not a FHIR resource (no resourceType)." + return + end + + unless prefetched_coverage['resourceType'] == 'Coverage' + errors << "#{error_prefix} entry in prefetched Coverage Bundle has an unexpected type: " \ + "expected Coverage, got #{prefetched_coverage['resourceType']}." + return + end + + unless prefetched_coverage['status'] == 'active' + errors << "#{error_prefix} prefetched Coverage has an unexpected status: " \ + "expected active, got #{prefetched_coverage['status']}." + end + + target_patient_id = hook_request.dig('context', 'patientId') + unless prefetched_coverage.dig('beneficiary', 'reference') == "Patient/#{target_patient_id}" + errors << "#{error_prefix} prefetched Coverage has an unexpected beneficiary reference: " \ + "expected Patient/#{target_patient_id}, got #{prefetched_coverage.dig('beneficiary', + 'reference')}." + end + + nil + end + + def check_read(prefetched_value, instantiated_request) + resource_type, resource_id = instantiated_request.split('/') + + resource_requested = resource_id.present? + + unless prefetched_value.present? + if resource_requested + errors << "#{error_prefix} requested resource '#{full_url_for_target_id(instantiated_request)}' not provided." + end + return + end + + check_is_fhir_resource(prefetched_value, target_resource_type: resource_type) + unless prefetched_value.key?('id') + errors << "#{error_prefix} prefetched #{resource_type} is missing an id." + return + end + unless prefetched_value['id'] == resource_id + errors << "#{error_prefix} prefetched #{resource_type} has unexpected id: " \ + "expected #{resource_id}, got #{prefetched_value['id']}." + end + + nil + end + + def resource_type_and_ids_from_search(instantiated_search) + resource_type, id_list = instantiated_search.split('?_id=') + target_ids = id_list.present? ? id_list.split(',').map { |id| "#{resource_type}/#{id}" }.uniq.sort : [] + + [resource_type, target_ids] + end + + def check_id_search(prefetched_value, instantiated_request) + resource_type, target_ids = resource_type_and_ids_from_search(instantiated_request) + resources_requested = target_ids.present? + + unless prefetched_value.present? + if resources_requested + errors << "#{error_prefix} requested resources not provided: " \ + "#{target_ids.map { |id| full_url_for_target_id(id) }.join(', ')}." + end + return + end + + check_is_fhir_resource(prefetched_value, target_resource_type: 'Bundle') + check_bundle_entry_resource_type(prefetched_value, resource_type) + check_ids(target_ids, actual_ids(prefetched_value)) + nil + end + + def actual_ids(prefetched_value) + return [] unless prefetched_value['entry'].present? + + prefetched_value['entry'].map do |entry| + type = entry.dig('resource', 'resourceType') + id = entry.dig('resource', 'id') + next unless type.present? && id.present? + + type_and_id = "#{type}/#{id}" + [type_and_id, entry['fullUrl'].presence || type_and_id] + end.compact + end + + def check_ids(target_ids, actual_id_pairs) + actual_type_ids = actual_id_pairs.map(&:first) + unless actual_type_ids.size == actual_type_ids.uniq.size + errors << "#{error_prefix} prefetched Bundle has multiple entries with the same resource id." + end + + actual_ids_map = actual_id_pairs.to_h + + missing_ids = target_ids - actual_type_ids + if missing_ids.present? + errors << "#{error_prefix} prefetched Bundle missing expected entries: " \ + "#{missing_ids.map { |id| full_url_for_target_id(id) }.join('\', \'')}." + end + + extra_ids = actual_type_ids - target_ids + return unless extra_ids.present? + + errors << "#{error_prefix} prefetched Bundle includes unrequested entries: " \ + "#{extra_ids.map { |id| actual_ids_map[id] }.join('\', \'')}." + end + + # NOTE: would possibly fail in the case of duplicate / with different + # base urls but this will cause other problems since in the _id search form those + # would be the same. So not worth trying to work around it. + def full_url_for_target_id(type_and_id) + prefetched_resources.keys.find { |url| url.end_with?("/#{type_and_id}") } || + fhir_server_url_for(type_and_id) + end + + def fhir_server_url_for(type_and_id) + return type_and_id unless hook_request['fhirServer'].present? + + "#{hook_request['fhirServer'].chomp('/')}/#{type_and_id}" + end + + def check_bundle_entry_resource_type(bundle, target_resource_type) + bundle['entry']&.each_with_index do |entry, index| + entry_resource_type = entry.dig('resource', 'resourceType') + next if entry_resource_type == target_resource_type + + errors << if entry_resource_type.present? + "#{error_prefix} prefetched Bundle entry #{index + 1} has an unexpected resourceType: " \ + "expected #{target_resource_type}, got #{entry_resource_type}." + else + "#{error_prefix} prefetched Bundle entry #{index + 1} is not a FHIR resource (no resourceType)." + end + end + end + + def check_is_fhir_resource(prefetched_value, target_resource_type: nil) + unless prefetched_value.key?('resourceType') + errors << "#{error_prefix} prefetched value is not a FHIR resource (no resourceType)." + return + end + + return if target_resource_type.blank? || prefetched_value['resourceType'] == target_resource_type + + errors << "#{error_prefix} prefetched value has unexpected resourceType: " \ + "expected #{target_resource_type}, got #{prefetched_value['resourceType']}." + end + + # ----------------------------------------------------------------------- + # Map of prefetched resources by fullUrl + # ----------------------------------------------------------------------- + def prefetched_resources + @prefetched_resources ||= {} + end + + def extract_prefetched_resources + hook_request['prefetch']&.each_value do |prefetch_resource| + next unless prefetch_resource&.dig('resourceType').present? + + if prefetch_resource['resourceType'] == 'Bundle' + extract_resources_from_prefetched_bundle(prefetch_resource) + else + extract_prefetched_resource_instance(prefetch_resource) + end + end + end + + def extract_resources_from_prefetched_bundle(bundle) + bundle['entry']&.each do |entry| + next unless entry['resource'].present? + + if entry['fullUrl'].present? + prefetched_resources[entry['fullUrl']] = entry['resource'] unless prefetched_resources.key?(entry['fullUrl']) + else + extract_prefetched_resource_instance(entry['resource']) + end + end + end + + # no fullUrl available, so assume that it is a restful FHIR url + # relative to the fhirServer of the hook request + def extract_prefetched_resource_instance(resource_instance) + return unless resource_instance['id'].present? && + resource_instance['resourceType'].present? && + hook_request['fhirServer'].present? + + fhir_server = + if hook_request['fhirServer'].ends_with?('/') + hook_request['fhirServer'] + else + "#{hook_request['fhirServer']}/" + end + key = "#{fhir_server}#{resource_instance['resourceType']}/#{resource_instance['id']}" + return if prefetched_resources.key?(key) + + prefetched_resources[key] = resource_instance + end + + # ------------------------------------------------------------------------- + # fhirpath resolve() handling + # ------------------------------------------------------------------------- + + def resolve(reference) + return nil unless reference.present? + + key = absolute_reference(reference) + return nil unless key.present? + + unless prefetched_resources[key].present? + errors << "#{error_prefix} resource '#{key}' needed to instantiate the query " \ + 'was not provided in the prefetched values.' + + return nil + end + + @current_base_fhir_server = base_fhir_server_for_identity(key) + prefetched_resources[key] + end + + def absolute_reference(reference) + reference = reference['reference'] if reference.is_a?(Hash) + return nil unless reference.present? + + if URI.parse(reference).absolute? + reference + else + relative_to_absolute_reference(reference) + end + rescue URI::InvalidURIError => e + errors << "#{error_prefix} '#{reference}' needed to instantiate the query " \ + "is invalid: #{e.message}." + nil + end + + def relative_to_absolute_reference(relative_reference) + return nil unless relative_reference_valid?(relative_reference) + + if @current_base_fhir_server.nil? + errors << "#{error_prefix} '#{relative_reference}' needed to instantiate the query " \ + 'is a relative reference, but the base FHIR Server is not known.' + return nil + end + + "#{@current_base_fhir_server}/#{relative_reference}" + end + + def relative_reference_valid?(relative_reference) + if relative_reference.split('/').length > 2 + errors << "#{error_prefix} '#{relative_reference}' needed to instantiate the query " \ + 'is not an absolute reference but has too many segments to be a relative reference.' + return false + end + + resource_type, id = relative_reference.split('/') + if resource_type.blank? || id.blank? + errors << "#{error_prefix} '#{relative_reference}' needed to instantiate the query " \ + 'is not a valid relative reference of the form /.' + end + + true + end + + # ------------------------------------------------------------------------- + # Observe a Collection represented as a comma-delimited string in instantiated search + # ------------------------------------------------------------------------- + + # client will have demonstrated turning a collection into a comma-delimited string if both + # - the prefetch request follows the RESOURCE?_id={{TOKEN}} form when TOKEN has a | indicating 'and', and + # - the instantiated query actually has multiple unique ids + def demonstrates_collection_as_comma_delimited_string?(prefetch_request, instantiated_request) + token = prefetch_request.match(/[a-zA-Z]*\?_id=\{\{(.+?)\}\}/)&.[](1) + return false unless token.present? && token.include?('|') + + instantiated_request.split('?_id=').last.split(',').uniq.size > 1 + end + end +end diff --git a/lib/davinci_crd_test_kit/prefetch_contents_validation.rb b/lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb similarity index 97% rename from lib/davinci_crd_test_kit/prefetch_contents_validation.rb rename to lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb index 6ab14b0b..862ac9ec 100644 --- a/lib/davinci_crd_test_kit/prefetch_contents_validation.rb +++ b/lib/davinci_crd_test_kit/cross_suite/prefetch_contents_validation.rb @@ -1,8 +1,10 @@ require_relative 'replace_tokens' +require_relative 'fhirpath_on_cds_request' module DaVinciCRDTestKit module PrefetchContentsValidation include ReplaceTokens + include FhirpathOnCDSRequest def request_number if @request_number.blank? diff --git a/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb b/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb new file mode 100644 index 00000000..ba2bb362 --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation.rb @@ -0,0 +1,48 @@ +require_relative 'hook_request_field_validation' + +module DaVinciCRDTestKit + module PrefetchProfileValidation + include HookRequestFieldValidation + + def check_prefetch_profiles(prefetch, request_index) + prefetch.each do |key, prefetched_resource| + next unless prefetched_resource.present? # prefetch must be null if no data matches the template + + @prefetch_template = key + check_resource_profile(prefetched_resource, request_index, nil) + end + end + + private + + def check_resource_profile(prefetched_resource, request_index, bundle_entry_index) + if prefetched_resource['resourceType'] == 'Bundle' + prefetched_resource['entry']&.each_with_index do |entry, entry_index| + check_resource_profile(entry['resource'], request_index, entry_index) if entry['resource'].present? + end + elsif prefetched_resource['resourceType'].present? + check_non_bundle_resource_profile(prefetched_resource, request_index, bundle_entry_index) + end + end + + def check_non_bundle_resource_profile(prefetched_resource, request_index, bundle_entry_index) + target_crd_profile = structure_definition_map('v221')[prefetched_resource['resourceType']] + return unless target_crd_profile.present? + + validation_details = [] + resource_is_valid?(resource: FHIR.from_contents(prefetched_resource.to_json), + profile_url: target_crd_profile, + validator_response_details: validation_details, add_messages_to_runnable: false) + validation_details.each do |issue| + prefix = prefetch_profile_error_prefix(request_index, bundle_entry_index) + add_message(issue.severity, "#{prefix}#{issue.message}") + end + end + + def prefetch_profile_error_prefix(request_index, bundle_entry_index) + prefix = "(Request #{request_index + 1}) Prefetch Template '#{@prefetch_template}'" + prefix = "#{prefix} Bundle entry #{bundle_entry_index + 1}" if bundle_entry_index.present? + "#{prefix} validation issue - " + end + end +end diff --git a/lib/davinci_crd_test_kit/replace_tokens.rb b/lib/davinci_crd_test_kit/cross_suite/replace_tokens.rb similarity index 78% rename from lib/davinci_crd_test_kit/replace_tokens.rb rename to lib/davinci_crd_test_kit/cross_suite/replace_tokens.rb index 852b6b37..d327b731 100644 --- a/lib/davinci_crd_test_kit/replace_tokens.rb +++ b/lib/davinci_crd_test_kit/cross_suite/replace_tokens.rb @@ -1,10 +1,7 @@ -require_relative 'fhirpath_on_cds_request' - module DaVinciCRDTestKit # Replace "prefetch" tokens (fhirpath surrounded by {{}}) in json object representation + # requires execute_fhirpath_on_cds_request (from the FhirpathOnCDSRequest module) module ReplaceTokens - include DaVinciCRDTestKit::FhirpathOnCDSRequest - def replace_tokens(value, request) case value when Hash @@ -29,9 +26,13 @@ def replace_tokens_in_string(string, request) string.gsub!(/\{\{.*?\}\}/, replacements) end + private + def calculate_expression_value(request, expression) - results = execute_fhirpath_on_cds_request(request, expression) - results.map { |res| res.is_a?(Array) || res.is_a?(Hash) ? nil : res }.map(&:to_s).join(',') + results = expression.split('|').map do |sub_expression| + execute_fhirpath_on_cds_request(request, sub_expression) + end.flatten + results.map { |res| res.is_a?(Array) || res.is_a?(Hash) ? nil : res }.compact.map(&:to_s).join(',') end end end diff --git a/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb b/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb new file mode 100644 index 00000000..02e18dba --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation.rb @@ -0,0 +1,340 @@ +module DaVinciCRDTestKit + module RequestsLogicalModelValidation + CRD_CDS_HOOK_REQUEST_MODEL_URL = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksRequest'.freeze + + def validate_request_against_logical_model(request_body, request_index, ig_version) + if ig_version == '2.2.1' + check_logical_model_conformance_no_resource_checks(request_body, request_index, ig_version) + + else + conforms_to_logical_model?(request_body, "#{CRD_CDS_HOOK_REQUEST_MODEL_URL}|#{ig_version}", + message_prefix: "(Request #{request_index + 1}) ") + end + + perform_version_specific_additional_verification(request_body, request_index, ig_version) + end + + private + + # ------------------------------------------------------------------------- + # Additional Validation to cover areas not cheked by the logical models + # ------------------------------------------------------------------------- + + def perform_version_specific_additional_verification(request_body, request_index, ig_version) + case ig_version + when '2.2.1' + perform_v221_additional_verification(request_body, request_index) + end + end + + def perform_v221_additional_verification(request_body, request_index) + check_context_resources_for_ids(request_body, request_index) + check_relative_references(request_body, request_index) + check_context_resource_profiles(request_body, request_index, '2.2.1') + end + + # ------------------------------------------------------------------------- + # Context resources profile check (not working in v2.2.1 logical models) + # ------------------------------------------------------------------------- + + def check_logical_model_conformance_no_resource_checks(request_body, request_index, ig_version) + validation_issues = [] + conforms_to_logical_model?(request_body, "#{CRD_CDS_HOOK_REQUEST_MODEL_URL}|#{ig_version}", + add_messages_to_runnable: false, validator_response_details: validation_issues) + + reject_resource_issues(validation_issues).each do |issue| + add_message(issue.severity, "(Request #{request_index + 1}) #{issue.message}") + end + end + + def reject_resource_issues(issues) + issues.reject do |issue| + issue.filtered || issue.location&.match?(%r{/\*[A-Za-z]+/}) # looking for /*/ + end + end + + def check_context_resource_profiles(request_body, request_index, ig_version) + case request_body['hook'] + when 'order-sign', 'order-select' + check_draft_orders_profiles(request_body, request_index, ig_version) + when 'order-dispatch' + request_body.dig('context', 'fulfillmentTasks')&.each_with_index do |task, index| + resource = FHIR.from_contents(task.to_json) + resource_is_valid?(resource:, profile_url: "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-task-dispatch|#{ig_version}", + message_prefix: "(Request #{request_index + 1}) " \ + "context.fulfillmentTasks entry #{index + 1} - ") + end + when 'appointment-book' + check_appointments_profiles(request_body, request_index, ig_version) + end + rescue JSON::ParserError + nil # no resource to validate - error found elsewhere + end + + def check_draft_orders_profiles(request_body, request_index, ig_version) + resource = FHIR.from_contents(request_body.dig('context', 'draftOrders')&.to_json) + resource_is_valid?(resource:, profile_url: "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-bundle-request|#{ig_version}", + message_prefix: "(Request #{request_index + 1}) context.draftOrders - ") + end + + # ------------------------------------------------------------------------- + # Appointment conformance (requires extra help to decide profile and check profile-based slicing) + # ------------------------------------------------------------------------- + + def check_appointments_profiles(request_body, request_index, ig_version) + resource = FHIR.from_contents(request_body.dig('context', 'appointments')&.to_json) + return unless resource.is_a?(FHIR::Bundle) + + check_bundle_non_entry_resource_conformance(resource, + "(Request #{request_index + 1}) context.appointments - ", + ig_version) + + resource.entry.each_with_index do |entry, entry_index| + next unless entry.resource.present? # error caught on Bundle validation + + error_prefix = "(Request #{request_index + 1}) context.appointments entry #{entry_index + 1} - " + check_appointment_conformance(entry.resource, request_body, error_prefix, ig_version) + end + end + + def check_bundle_non_entry_resource_conformance(bundle, error_prefix, ig_version) + validation_issues = [] + resource_is_valid?(resource: bundle, profile_url: "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-bundle-base|#{ig_version}", + add_messages_to_runnable: false, validator_response_details: validation_issues) + + reject_entry_resource_issues(validation_issues).each do |issue| + add_message(issue.severity, "#{error_prefix}#{issue.message}") + end + end + + def reject_entry_resource_issues(issues) + issues.reject do |issue| + issue.filtered || issue.location&.match?(/\ABundle\.entry\[\d+\]\.resource/) + end + end + + def check_appointment_conformance(appointment, request_body, error_prefix, ig_version) + target_appointment_profile = + if appointment.basedOn.present? + 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment-with-order' + else + 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment-no-order' + end + + validation_issues = [] + resource_is_valid?(resource: appointment, profile_url: "#{target_appointment_profile}|#{ig_version}", + add_messages_to_runnable: false, validator_response_details: validation_issues) + + filter_and_manually_check_appointment_validation_errors(validation_issues, appointment, request_body) + .each do |issue| + add_message(issue.severity, "#{error_prefix}#{issue.message}") + end + end + + def filter_and_manually_check_appointment_validation_errors(validation_issues, appointment, request_body) + @matched_participant_slice_indexes = [] + validation_issues.reverse.reject do |issue| + issue.filtered || + resolved_participant_primary_performer_slice_issue?(issue, appointment) || + resolved_participant_patient_slice_issue?(issue, appointment, request_body) || + ( + # list reversed to hit these issues after the slice matching + @matched_participant_slice_indexes.present? && + issue.message.match(/Appointment\.participant\[#{Regexp.union(@matched_participant_slice_indexes.map(&:to_s))}\]: This element does not match any known slice defined in the profile/) # rubocop:disable Layout/LineLength + ) + end.reverse + end + + def resolved_participant_primary_performer_slice_issue?(issue, appointment) + return false unless issue.message.match(/Slice 'Appointment.participant:PrimaryPerformer': a matching slice is required, but not found/) # rubocop:disable Layout/LineLength + + appointment.participant.each_with_index.any? do |participant, index| + # type + profile of the reference checked during prefetch checking + match = participant.actor.present? && + participant.actor.reference.present? && + primary_performer_type?(participant.type) + @matched_participant_slice_indexes << index if match + match + end + end + + def primary_performer_type?(types) + types&.any? do |type| + type.coding&.any? do |coding| + coding.code == 'PPRF' && + coding.system == 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType' + end + end + end + + # NOTE: for simplicity and to avoid duplication of checks, this looks for + # a particular patient reference from the context.patientId, + # the profile of which will be verified during prefetch profile checking + def resolved_participant_patient_slice_issue?(issue, appointment, request_body) + return false unless issue.message.match(/Slice 'Appointment.participant:Patient': a matching slice is required, but not found/) # rubocop:disable Layout/LineLength + + local_patient_ref = "Patient/#{request_body.dig('context', 'patientId')}" + absolute_patient_ref = "#{request_body['fhirServer'].chomp('/')}/#{local_patient_ref}" + appointment.participant.each_with_index.any? do |participant, index| + match = [local_patient_ref, absolute_patient_ref].include?(participant.actor&.reference) + @matched_participant_slice_indexes << index if match + match + end + end + + # ------------------------------------------------------------------------- + # Context relative reference checks + # ------------------------------------------------------------------------- + + USER_ID_ALLOWED_RESOURCE_TYPES = [ + 'Practitioner', 'PractitionerRole', 'Patient', 'RelatedPerson' + ].freeze + + PERFORMER_ALLOWED_RESOURCE_TYPES = [ + 'Practitioner', 'PractitionerRole' + ].freeze + + ORDERS_ALLOWED_RESOURCE_TYPES = [ + 'CommunicationRequest', 'DeviceRequest', 'MedicationRequest', + 'NutritionOrder', 'ServiceRequest', 'VisionPrescription' + ].freeze + + # verify that context fields required to contain local references (resourceType/id) + # do contain them and that the resourceType is in the list of expected types. + def check_relative_references(request_body, request_index) + # unless order-dispatch, check userId + # if order-dispatch, check performer and dispatchedOrders list + # if order-select, check selections + + if request_body['hook'] == 'order-dispatch' + local_reference?(request_body['context']['performer'], + "(Request #{request_index + 1}) context.performer", + allowed_resource_types: PERFORMER_ALLOWED_RESOURCE_TYPES) + request_body['context']['dispatchedOrders'].each_with_index do |order_reference, index| + local_reference?(order_reference, + "(Request #{request_index + 1}) context.dispatchedOrders entry #{index + 1}", + allowed_resource_types: ORDERS_ALLOWED_RESOURCE_TYPES) + end + else + local_reference?(request_body['context']['userId'], + "(Request #{request_index + 1}) context.userId", + allowed_resource_types: USER_ID_ALLOWED_RESOURCE_TYPES) + if request_body['hook'] == 'order-select' + request_body['context']['selections'].each_with_index do |order_reference, index| + error_prefix = "(Request #{request_index + 1}) context.selections entry #{index + 1}" + next unless local_reference?(order_reference, + error_prefix, + allowed_resource_types: ORDERS_ALLOWED_RESOURCE_TYPES) + + referenced_resource_present_in_bundle?(request_body['context']['draftOrders'], order_reference, + error_prefix, 'draftOrders') + end + end + end + end + + def local_reference?(value, error_prefix, allowed_resource_types: nil) + is_local_reference = true + local_reference_match = value.match(%r{^([A-Za-z]+)/(.+)$}) + if local_reference_match.present? + resource_type = local_reference_match[1] + id = local_reference_match[2] + + unless allowed_resource_type?(resource_type, allowed_resource_types) + allowed_types_error_suffix = + if allowed_resource_types.nil? + 'a valid FHIR resource type.' + else + "an one of the allowed resource types (#{allowed_resource_types.join(', ')})" + end + + add_message('error', + "#{error_prefix} local reference resourceType '#{resource_type}' " \ + "is not #{allowed_types_error_suffix}.") + is_local_reference = false + end + unless id.match(/\A[A-Za-z0-9\-\.]{1,64}\z/) + add_message('error', + "#{error_prefix} local reference id '#{id}' does not meet " \ + '[FHIR id data type](https://hl7.org/fhir/R4/datatypes.html#id) requirements.') + is_local_reference = false + end + else + add_message('error', "#{error_prefix} expected a local reference, got '#{value}'.") + is_local_reference = false + end + + is_local_reference + end + + def allowed_resource_type?(resource_type, allowed_resource_types) + if allowed_resource_types.nil? + FHIR::RESOURCES.include?(resource_type) + else + allowed_resource_types.include?(resource_type) + end + end + + def referenced_resource_present_in_bundle?(bundle, local_reference, error_prefix, bundle_location) + unless bundle.present? && bundle['entry'].present? + add_message('error', + "#{error_prefix} referenced resource '#{local_reference}' " \ + "not found in the #{bundle_location} Bundle.") + return false + end + + target_resource_type, target_id = local_reference.split('/') + found = bundle['entry'].any? do |entry| + entry.dig('resource', 'resourceType') == target_resource_type && entry.dig('resource', 'id') == target_id + end + return true if found + + add_message('error', + "#{error_prefix} referenced resource '#{local_reference}' " \ + "not found in the #{bundle_location} Bundle.") + false + end + + # ------------------------------------------------------------------------- + # Context resources include ids + # ------------------------------------------------------------------------- + + # logical models don't explicitly check for resource ids + def check_context_resources_for_ids(request_body, request_index) + hook_name = request_body['hook'] + context = request_body['context'] + return unless context.present? + + case hook_name + when 'appointment-book' + check_bundle_resources_for_ids(context['appointments'], request_index, 'appointments') + when 'order-sign', 'order-select' + check_bundle_resources_for_ids(context['draftOrders'], request_index, 'draftOrders') + when 'order-dispatch' + context['fulfillmentTasks']&.each_with_index do |task, index| + check_resource_for_id(FHIR.from_contents(task.to_json), request_index, 'fulfillmentTasks', index) + end + end + end + + def check_bundle_resources_for_ids(parsed_bundle, request_index, context_field_name) + return unless parsed_bundle.present? + + bundle = FHIR.from_contents(parsed_bundle.to_json) + return unless bundle.present? + + bundle.entry&.each_with_index do |entry, index| + check_resource_for_id(entry.resource, request_index, context_field_name, index) + end + end + + def check_resource_for_id(resource, request_index, context_field_name, entry_index = nil) + return if resource.present? && resource.id.present? + + message = "(Request #{request_index + 1}) " \ + 'FHIR resources provided in the hook context must have an id, none found for ' \ + "`context.#{context_field_name}`#{" entry #{entry_index + 1}" if entry_index.present?}." + add_message('error', message) + end + end +end diff --git a/lib/davinci_crd_test_kit/suggestion_actions_validation.rb b/lib/davinci_crd_test_kit/cross_suite/suggestion_actions_validation.rb similarity index 75% rename from lib/davinci_crd_test_kit/suggestion_actions_validation.rb rename to lib/davinci_crd_test_kit/cross_suite/suggestion_actions_validation.rb index b764be4c..73747e30 100644 --- a/lib/davinci_crd_test_kit/suggestion_actions_validation.rb +++ b/lib/davinci_crd_test_kit/cross_suite/suggestion_actions_validation.rb @@ -1,21 +1,46 @@ -require_relative 'server_hook_request_validation' +require_relative 'hook_request_field_validation' + module DaVinciCRDTestKit module SuggestionActionsValidation - include DaVinciCRDTestKit::ServerHookRequestValidation + include HookRequestFieldValidation - def action_required_fields - { 'type' => String, 'description' => String } - end - - def action_fields_validation(action) + def action_fields_validation(action, ig_version: 'v201') action_required_fields.each do |field, type| validate_presence_and_type(action, field, type, 'Action') end - action_type_field_validation(action) + action_type_field_validation(action, ig_version:) + end + + def actions_check(actions, contexts = nil, ig_version: 'v201') + create_actions_resource_types = extract_resource_types_by_action(actions, 'create') + + actions.each do |action| + case action['type'] + when 'create', 'update' + create_or_update_action_check(action, contexts, ig_version:) + when 'delete' + delete_action_check(action, create_actions_resource_types, contexts) + end + end + end + + def action_resource_type_check(action, expected_resource_types) + resource_type = if ['create', 'update'].include?(action['type']) + FHIR.from_contents(action['resource'].to_json)&.resourceType + else + action['resourceId']&.split('/')&.first + end + expected_resource_types.include?(resource_type) + end + + private + + def action_required_fields + { 'type' => String, 'description' => String } end - def action_type_field_validation(action) + def action_type_field_validation(action, ig_version: 'v201') return unless action['type'] allowed_types = ['create', 'update', 'delete'] @@ -30,7 +55,7 @@ def action_type_field_validation(action) if ['create', 'update'].include?(type) action_resource_field_validation(action, type) else - action_resource_id_field_validation(action) + action_resource_id_field_validation(action, ig_version:) end end @@ -46,9 +71,9 @@ def action_resource_field_validation(action, type) add_message('error', "`Action.resource` must be a FHIR resource: `#{action}`.") end - def action_resource_id_field_validation(action) + def action_resource_id_field_validation(action, ig_version: 'v201') validate_presence_and_type(action, 'resourceId', String, '`delete` Action') - resource_reference_check(action['resourceId'], 'Action.resourceId') + resource_reference_check(action['resourceId'], 'Action.resourceId', ig_version:) end def draft_orders_bundle_entry_refs(contexts) @@ -58,37 +83,16 @@ def draft_orders_bundle_entry_refs(contexts) end end - def action_resource_type_check(action, expected_resource_types) - resource_type = if ['create', 'update'].include?(action['type']) - FHIR.from_contents(action['resource'].to_json)&.resourceType - else - action['resourceId']&.split('/')&.first - end - expected_resource_types.include?(resource_type) - end - def extract_resource_types_by_action(actions, action_type) actions.each_with_object([]) do |act, resource_types| resource_types << act['resource']['resourceType'] if act['type'] == action_type end end - def actions_check(actions, contexts = nil) - create_actions_resource_types = extract_resource_types_by_action(actions, 'create') - - actions.each do |action| - case action['type'] - when 'create', 'update' - create_or_update_action_check(action, contexts) - when 'delete' - delete_action_check(action, create_actions_resource_types, contexts) - end - end - end - - def create_or_update_action_check(action, contexts) + def create_or_update_action_check(action, contexts, ig_version: 'v201') resource = FHIR.from_contents(action['resource'].to_json) - resource_is_valid?(resource:, profile_url: structure_definition_map[resource.resourceType]) + resource_is_valid?(resource:, profile_url: structure_definition_map(ig_version)[resource.resourceType]) + return unless action['type'] == 'update' && contexts ref = "#{resource.resourceType}/#{resource.id}" @@ -99,6 +103,20 @@ def create_or_update_action_check(action, contexts) add_message('error', error_msg) end + def questionnaire_creation_check(action) + return unless action.dig('resource', 'resourceType') == 'Questionnaire' + + extension_value = action.dig('extension', 'davinci-crd.if-none-exist') + + if extension_value.nil? + add_message('error', '`davinci-crd.if-none-exist` extension is not present.') + elsif !extension_value.is_a? String + add_message('error', '`davinci-crd.if-none-exist` extension is not a string.') + elsif extension_value.blank? + add_message('error', '`davinci-crd.if-none-exist` extension is an empty string.') + end + end + def delete_action_check(action, create_actions_resource_types, contexts) ref = action['resourceId'] unless draft_orders_bundle_entry_refs(contexts).include?(ref) diff --git a/lib/davinci_crd_test_kit/cross_suite/tags.rb b/lib/davinci_crd_test_kit/cross_suite/tags.rb new file mode 100644 index 00000000..2d5dfae5 --- /dev/null +++ b/lib/davinci_crd_test_kit/cross_suite/tags.rb @@ -0,0 +1,42 @@ +module DaVinciCRDTestKit + APPOINTMENT_BOOK_TAG = 'appointment-book'.freeze + ENCOUNTER_START_TAG = 'encounter-start'.freeze + ENCOUNTER_DISCHARGE_TAG = 'encounter-discharge'.freeze + ORDER_DISPATCH_TAG = 'order-dispatch'.freeze + ORDER_SELECT_TAG = 'order-select'.freeze + ORDER_SIGN_TAG = 'order-sign'.freeze + DISCOVERY_TAG = 'cds_discovery'.freeze + ANY_HOOK_TAG = 'any_hook'.freeze + DATA_FETCH_TAG = 'data_fetch'.freeze + PAYER_ORG_FETCH_TAG = 'payer_org'.freeze + PARENT_LOCATION_FETCH_TAG = 'parent_location'.freeze + HOOK_INSTANCE_TAG_PREFIX = 'hi_'.freeze + HOOK_INSTANCE_DATA_FETCH_TAG_PREFIX = 'hi_data_fetch_'.freeze + LONG_RUNNING_GROUP_TAG = 'long_running_request'.freeze + DUPLICATED_HOOK_INSTANCE_TAG = 'duplicate_hook_instance'.freeze + COVERAGE_INFO_DISABLED_TAG = 'coverage-info-disabled'.freeze + UNKNOWN_CONFIGURATION_TAG = 'unknown-configuration'.freeze + UNKNOWN_CONTEXT_TAG = 'unknown-context'.freeze + UNKNOWN_ELEMENT_TAG = 'unknown-element'.freeze + + ALL_HOOK_TAGS = [ + APPOINTMENT_BOOK_TAG, + ENCOUNTER_START_TAG, + ENCOUNTER_DISCHARGE_TAG, + ORDER_DISPATCH_TAG, + ORDER_SELECT_TAG, + ORDER_SIGN_TAG + ].freeze + + module TagMethods + def hook_instance_tag(hook_instance) + "#{HOOK_INSTANCE_TAG_PREFIX}#{hook_instance}" + end + + def hook_instance_data_fetch_tag(hook_instance) + "#{HOOK_INSTANCE_DATA_FETCH_TAG_PREFIX}#{hook_instance}" + end + + module_function :hook_instance_tag, :hook_instance_data_fetch_tag + end +end diff --git a/lib/davinci_crd_test_kit/fhirpath_on_cds_request.rb b/lib/davinci_crd_test_kit/fhirpath_on_cds_request.rb deleted file mode 100644 index 21c92558..00000000 --- a/lib/davinci_crd_test_kit/fhirpath_on_cds_request.rb +++ /dev/null @@ -1,78 +0,0 @@ -module DaVinciCRDTestKit - # Build responses using tester-provided template - module FhirpathOnCDSRequest - def fhirpath_evaluator - @fhirpath_evaluator ||= Inferno::DSL::FhirpathEvaluation::Evaluator.new - end - - # fhirpath service assumes that the object passed is a FHIR resource - # so do everything manually until we get to that or a data type (e.g., string) - def execute_fhirpath_on_cds_request(request, fhirpath_expression) - execute_fhirpath_on_object(request, fhirpath_expression.split('.').map(&:strip)) - end - - def execute_fhirpath_on_object(hash, fhirpath_tokens) - return [hash] unless fhirpath_tokens.present? - return [] unless hash[fhirpath_tokens.first].present? - - next_value = hash[fhirpath_tokens.first] - next_tokens = fhirpath_tokens.drop(1) - - case next_value - when Hash - if next_value['resourceType'].present? - execute_fhirpath_on_fhir_resource(next_value, next_tokens) - else - handle_object_next_value_where(next_value, next_tokens) - end - when Array - execute_fhirpath_on_array(next_value, next_tokens) - else - execute_fhirpath_on_datatype(next_value, next_tokens) - end - end - - def handle_object_next_value_where(next_value, next_tokens) - return [next_value] unless next_tokens.present? - - if next_tokens.first&.starts_with?('where(') - condition_target, condition_value = next_tokens.first[6..-2].split('=').map(&:strip) - return [] unless next_value[condition_target] == condition_value - - next_tokens = next_tokens.drop(1) - end - - execute_fhirpath_on_object(next_value, next_tokens) - end - - def execute_fhirpath_on_fhir_resource(hash, fhirpath_tokens) - return [hash] unless fhirpath_tokens.present? - - result = fhirpath_evaluator.call_fhirpath_service(hash, fhirpath_tokens.join('.')) - return [] unless result.status.to_s.starts_with?('2') - - JSON.parse(result.body).map { |entry| entry['element'] } - end - - def execute_fhirpath_on_array(array, fhirpath_tokens) - return array unless fhirpath_tokens.present? - - array.map do |entry| - case entry - when Hash - execute_fhirpath_on_object(entry, fhirpath_tokens) - when Array - execute_fhirpath_on_array(entry, fhirpath_tokens) - else - execute_fhirpath_on_datatype(entry, fhirpath_tokens) - end - end.flatten - end - - def execute_fhirpath_on_datatype(value, fhirpath_tokens) - return [] unless fhirpath_tokens.blank? - - [value] - end - end -end diff --git a/lib/davinci_crd_test_kit/igs/davinci-crd-2.0.1.tgz b/lib/davinci_crd_test_kit/igs/davinci-crd-2.0.1.tgz deleted file mode 100644 index d68d3e95..00000000 Binary files a/lib/davinci_crd_test_kit/igs/davinci-crd-2.0.1.tgz and /dev/null differ diff --git a/lib/davinci_crd_test_kit/metadata.rb b/lib/davinci_crd_test_kit/metadata.rb index 76441553..bb549d27 100644 --- a/lib/davinci_crd_test_kit/metadata.rb +++ b/lib/davinci_crd_test_kit/metadata.rb @@ -6,9 +6,10 @@ class Metadata < Inferno::TestKit title 'Da Vinci Coverage Requirements Discovery (CRD) Test Kit' description <<~DESCRIPTION The Da Vinci Coverage Requirements Discovery (CRD) Test Kit tests the - conformance of client and server systems to [version 2.0.1 of the Da Vinci - Coverage Requirements Discovery (CRD) Implementation - Guide](https://hl7.org/fhir/us/davinci-crd/STU2). + conformance of client and server systems to versions of the + Da Vinci Coverage Requirements Discovery (CRD) FHIR Implementation Guide (IG), including + - [Da Vinci Coverage Requirements Discovery (CRD) STU 2.0.1](https://hl7.org/fhir/us/davinci-crd/STU2), and + - [Da Vinci Coverage Requirements Discovery (CRD) STU 2.2.1](https://hl7.org/fhir/us/davinci-crd/2.2.1) @@ -20,51 +21,16 @@ class Metadata < Inferno::TestKit requirements and may change how these are tested. Additional details on the IG requirements that underlie this test kit can be - found in this [CRD testing note](https://github.com/inferno-framework/davinci-crd-test-kit/blob/main/docs/crd-testing-notes.md). The document - includes the requirements extracted from the IG and specified the ones that are - not testable. + found in the [Specification Requirements display within the testing UI](https://inferno-framework.github.io/docs/user-interface.html#specification-requirements) + and other artifacts of Inferno's [requirements tracking tools](https://inferno-framework.github.io/docs/advanced-test-features/requirements.html). - ## Test Scope and Limitations + ## Additional Details - Documentation of the current tests and their limitations can be found in each - suite's (client and server) description when the tests are run. + Additional details about design, scope, and limitations of the suites within this + test kit can be found on the [CRD Test Kit Wiki](https://github.com/inferno-framework/davinci-crd-test-kit/wiki) - ### Test Scope - - At a high-level, the tests check: - - - **Client Suite**: - - The ability of a CRD client to initiate CDS Hooks calls. - - The ability of a CRD client to support the FHIR interactions defined in the - implementation guide. - - **Server Suite**: - - The ability of a CRD server to return a valid response when invoking its - discovery endpoint. - - The ability of a CRD server to return a valid response when invoking a - supported hook, including producing the required response types across all - hooks invoked. - - ### Limitations - - - **Client Suite**: - - This suite does not implement any payer business logic, so the responses to - hook calls are simple hard-coded responses. - - The tests cannot verify that a client is able to consume the received - decision support. Testers should consider this requirement to be verified - through attestation and should not represent their systems as having passed - these tests if this requirement is not met. - - Hook configuration is not tested. - - **Server Suite**: - - Inferno is unable to determine what requests will result in specific kinds - of responses from the server under test (e.g., what will result in - Instructions being returned vs. Coverage Information). As a result, the - tester must supply the request bodies that will cause the system under test - to return the desired response types. - - The ability of a CRD server to request additional FHIR resources is not - tested. - - Hook configuration is not tested. DESCRIPTION - suite_ids [:crd_client, :crd_server] + suite_ids [:crd_client, :crd_client_v221, :crd_server, :crd_server_v221] tags ['Da Vinci', 'CRD'] last_updated LAST_UPDATED version VERSION diff --git a/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx b/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx new file mode 100644 index 00000000..0e6e7f44 Binary files /dev/null and b/lib/davinci_crd_test_kit/requirements/cds-hooks_3.0.0-ballot_requirements.xlsx differ diff --git a/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv b/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv index 2ab2375a..a87e414a 100644 --- a/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv +++ b/lib/davinci_crd_test_kit/requirements/davinci_crd_test_kit_requirements.csv @@ -370,6 +370,336 @@ cds-hooks_2.0,217,https://cds-hooks.hl7.org/2.0/#coding,"[When sending a coding cds-hooks_2.0,218,https://cds-hooks.hl7.org/2.0/#coding,"[When sending a coding object,] the code field is required [and SHALL be a] string data type",SHALL,Service,,true,, cds-hooks_2.0,219,https://cds-hooks.hl7.org/2.0/#coding,"[When sending a coding object,] the display field is human-readable display required [when] [Override Reasons](https://cds-hooks.hl7.org/2.0/#overridereason) provided by CDS Service [are sent in card.overrideReason and SHALL be a] string data type",SHALL,Service,,true,, cds-hooks_2.0,220,https://cds-hooks.hl7.org/2.0/#coding,"[When sending a coding object,] the display field is human-readable display [which is] OPTIONAL [when sending source.topic]",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,1,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,All data exchanged through production RESTful APIs MUST be sent and received as JSON (JavaScript Object Notation) structures.,SHALL,"Client, Service",,,, +cds-hooks_3.0.0-ballot,2,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,All data exchanged through production RESTful APIs MUST be ... transmitted over HTTPS,SHALL,"Client, Service",,,, +cds-hooks_3.0.0-ballot,221,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,JSON comments and trailing commas SHOULD NOT be transmitted as they are not part of the JSON specification.,SHOULD NOT,"Client, Service",,,, +cds-hooks_3.0.0-ballot,3,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"JSON elements SHALL NOT be null … [or] empty, unless otherwise specified (e.g. to indicate no guidance with an empty array of cards in the CDS Hooks response).",SHALL NOT,"Client, Service",,,, +cds-hooks_3.0.0-ballot,222,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"If a JSON attribute is defined as OPTIONAL, and does not have a value, implementers MUST omit it.",SHALL,"Client, Service",,,, +cds-hooks_3.0.0-ballot,223,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"Unless otherwise specified, JSON attribute values SHALL NOT be null or empty, so null, """", [], or {} are prohibited",SHALL NOT,"Client, Service",,,, +cds-hooks_3.0.0-ballot,224,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"If a JSON attribute is defined with as OPTIONAL, and does not have a value, implementers SHALL omit it.",SHALL,"Client, Service",,,, +cds-hooks_3.0.0-ballot,225,https://cds-hooks.hl7.org/2026Jan/en/index.html#capability-documentation,[C]lients SHALL indicate whether they support the actionSelectionBehavior feature,SHALL,Client,,,, +cds-hooks_3.0.0-ballot,226,https://cds-hooks.hl7.org/2026Jan/en/index.html#capability-documentation,[C[lients … SHOULD document any other feature support necessary to ensure safe operation of CDS Services.,SHOULD,Client,,,, +cds-hooks_3.0.0-ballot,227,https://cds-hooks.hl7.org/2026Jan/en/index.html#capability-documentation,CDS Services SHALL NOT make use of the actionSelectionBehavior feature without knowing that the requesting client supports it.,SHALL NOT,Service,,,, +cds-hooks_3.0.0-ballot,4,https://cds-hooks.hl7.org/2026Jan/en/index.html#discovery,A CDS Service provider exposes its discovery endpoint at: {baseURL}/cds-services,SHALL,Service,,,, +cds-hooks_3.0.0-ballot,5,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request,The Discovery endpoint SHALL always be available at {baseUrl}/cds-services [using HTTP GET],SHALL,Service,,,, +cds-hooks_3.0.0-ballot,6,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,The response to the discovery endpoint SHALL be an object containing a list [json array] of CDS Services.,SHALL,Service,,,, +cds-hooks_3.0.0-ballot,7,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,"Each CDS Service SHALL be described by the following attributes [including]: +- field: hook +- optionality: REQUIRED +- type: string +- description: The hook this service should be invoked on",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,8,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,"Each CDS Service SHALL be described by the following attributes [including]: +- field: title +- optionality: RECOMMENDED +- type: string +- description: The human-friendly name of this service.",SHOULD,Service,,,, +cds-hooks_3.0.0-ballot,9,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,"Each CDS Service SHALL be described by the following attributes [including]: +- field: description +- optionality: REQUIRED +- type: string +- description: The description of this service.",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,10,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,"Each CDS Service SHALL be described by the following attributes [including]: +- field: id +- optionality: REQUIRED +- type: string +- description: The {id} portion of the URL to this service which is available at +{baseUrl}/cds-services/{id}",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,11,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,"Each CDS Service SHALL be described by the following attributes [including]: +- field: prefetch +- optionality: OPTIONAL +- type: object +- description: An object containing key/value pairs of FHIR queries that this service is requesting the CDS Client to perform and provide on each service call. The key is a *string* that describes the type of data being requested and the value is a *string* representing the FHIR query.",MAY,Service,,,, +cds-hooks_3.0.0-ballot,12,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,"Each CDS Service SHALL be described by the following attributes [including]: +- field: usageRequirements +- optionality: OPTIONAL +- type: string +- description: Human-friendly description of any preconditions for the use of this CDS Service.",MAY,Service,,,, +cds-hooks_3.0.0-ballot,228,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,"Each CDS Service SHALL be described by the following attributes [including]: +- field: version +- optionality: RECOMMENDED +- type: string +- description: The version of the CDS Hooks specification implemented (STU1 | STU2 | STU3).",SHOULD,Service,,,, +cds-hooks_3.0.0-ballot,229,https://cds-hooks.hl7.org/2026Jan/en/index.html#response,[A] CDS server can host multiple entries of CDS service with the same id for different hooks,MAY,Service,,,, +cds-hooks_3.0.0-ballot,13,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-status-codes,[Services SHALL return a HTTP] 200 ok [response to indicate] A successful response [to a discovery request],SHALL,Service,,,, +cds-hooks_3.0.0-ballot,14,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-status-codes,"CDS Services MAY return other HTTP statuses, specifically 4xx and 5xx HTTP error codes.",MAY,Service,,,, +cds-hooks_3.0.0-ballot,15,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,A CDS Client SHALL call a CDS Service by POSTing a JSON document to the service,SHALL,Client,,,, +cds-hooks_3.0.0-ballot,16,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,The CDS Service endpoint can be constructed from the CDS Service base URL and an individual service id as {baseUrl}/cds-services/{service.id}.,SHALL,Service,,,, +cds-hooks_3.0.0-ballot,17,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"CDS Clients may add additional requirements for the triggering of a hook, based upon the user, workflow, CDS Service or other reasons (e.g. if the service is provided by a payer, the patient has active coverage with that payer).",MAY,Client,,,, +cds-hooks_3.0.0-ballot,18,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: hook +- optionality: REQUIRED +- type: string +- description: The hook that triggered this CDS Service call.",DEPRECATED,Client,,,, +cds-hooks_3.0.0-ballot,19,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: hookInstance +- optionality: REQUIRED +- type: string +- description: A universally unique identifier (UUID) for this particular hook call",DEPRECATED,Client,,,, +cds-hooks_3.0.0-ballot,20,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: fhirServer +- optionality: CONDITIONAL +- type: URL +- description: The base URL of the CDS Client's FHIR server. If fhirAuthorization is provided, this field is REQUIRED. The scheme MUST be https when production data is exchanged.",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,21,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: fhirAuthorization +- optionality: OPTIONAL +- type: object +- description: A structure holding an OAuth 2.0 bearer access token granting the CDS Service access to FHIR resources, along with supplemental information relating to the token.",MAY,Client,,,, +cds-hooks_3.0.0-ballot,22,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: context +- optionality: REQUIRED +- type: object +- description: Hook-specific contextual data that the CDS service will need.",DEPRECATED,Client,,,, +cds-hooks_3.0.0-ballot,23,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: prefetch +- optionality: OPTIONAL +- type: object +- description: The FHIR data that was prefetched by the CDS Client",MAY,Client,,,, +cds-hooks_3.0.0-ballot,24,https://cds-hooks.hl7.org/2026Jan/en/index.html#hookinstance,"While working in the CDS Client, a user can perform multiple actions in series or in parallel. For example, a clinician might prescribe two drugs in a row; each prescription action would be assigned a unique hookInstance. This allows a CDS Service to uniquely identify each hook invocation.",DEPRECATED,Client,,,, +cds-hooks_3.0.0-ballot,25,https://cds-hooks.hl7.org/2026Jan/en/index.html#hookinstance,the hookInstance is globally unique,SHALL,Client,,,, +cds-hooks_3.0.0-ballot,26,https://cds-hooks.hl7.org/2026Jan/en/index.html#hookinstance,the hookInstance ... should contain enough entropy to be un-guessable.,SHOULD,Client,,,, +cds-hooks_3.0.0-ballot,27,https://cds-hooks.hl7.org/2026Jan/en/index.html#providing-fhir-resources-to-a-cds-service,CDS Services SHOULD respond quickly (on the order of 500 ms.),SHOULD,Service,,,, +cds-hooks_3.0.0-ballot,28,https://cds-hooks.hl7.org/2026Jan/en/index.html#providing-fhir-resources-to-a-cds-service,"FHIR resources MAY be obtained [by the service] by passing ""prefetched"" data from the CDS Client to the CDS Service in the service call.",MAY,Service,,,, +cds-hooks_3.0.0-ballot,29,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"If data is to be prefetched, the CDS Service registers a set of ""prefetch templates"" with the CDS Client… [communicated] in the CDS Service discovery response.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,30,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"The [prefetched] FHIR resources are passed as key-value pairs, with each key matching a key described in the discovery response, and each value being a FHIR resource. Note that in the case of searches, this resource may be a searchset Bundle.",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,31,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"If the CDS Client decides to have the CDS Service fetch its own FHIR resources, the CDS Client obtains and passes directly to the CDS Service a bearer token issued for the CDS Service's use in executing FHIR API calls against the CDS Client's FHIR server to obtain the required resources.",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,32,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"Some CDS Clients MAY pass prefetched data, along with a bearer token for the CDS Service to use if additional resources are required.",MAY,Client,,false,, +cds-hooks_3.0.0-ballot,33,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"Each CDS Client SHOULD decide which approach [for providing data to the Service], or combination, is preferred, based on performance considerations and assessment of attendant security and safety risks.",DEPRECATED,Client,,false,, +cds-hooks_3.0.0-ballot,34,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,CDS Services should be capable of accessing FHIR resources via either prefetch or from the CDS Client's FHIR server.,SHOULD,Service,,true,, +cds-hooks_3.0.0-ballot,230,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,A *prefetch template* is a FHIR [`read`](http://hl7.org/fhir/http.html#read) or [`search`](http://hl7.org/fhir/http.html#search) request that describes relevant data needed by the CDS Service.,SHALL,Service,,false,, +cds-hooks_3.0.0-ballot,35,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"To allow for prefetch templates that are dependent on the workflow context, prefetch templates may include references to context using prefetch tokens.",MAY,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,36,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,The prefetch field of a CDS Service discovery response … [SHALL provide a] prefetch key for each … [prefetch template] that is used to identify the prefetch data in the CDS request.,SHALL,Service,,false,, +cds-hooks_3.0.0-ballot,37,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"CDS Client MAY choose to honor zero, some, or all of the desired prefetch templates",MAY,Client,,false,, +cds-hooks_3.0.0-ballot,38,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,A CDS Client MAY ... choose the most appropriate source for … [its prefetch] data,MAY,Client,,false,, +cds-hooks_3.0.0-ballot,39,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"[To avoid a network call,] the CDS Client MAY ... [use] prefetched data already in memory",MAY,Client,,false,, +cds-hooks_3.0.0-ballot,40,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"[To minimize the number of calls,] the CDS Client MAY compute an efficient set of prefetch templates from multiple CDS Services",MAY,Client,,false,, +cds-hooks_3.0.0-ballot,41,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,The CDS Client MAY satisfy some of the desired prefetched templates via some internal service or even its own FHIR server.,MAY,Client,,false,, +cds-hooks_3.0.0-ballot,42,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"[When providing prefetched data, t]he CDS Client SHALL only provide access to resources that are within the user's authorized scope.",SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,231,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"As part of preparing the request, a CDS Client processes each prefetch template it intends to satisfy by replacing the prefetch tokens in the prefetch template to construct a relative FHIR request URL.",SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,43,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,The relative URL [constructed when a CDS client processes prefetch templates] may be appended to the base URL for the CDS Client's FHIR server and directly invoked,MAY,Client,,false,, +cds-hooks_3.0.0-ballot,44,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,CDS Clients may use internal infrastructure to satisfy the [prefetch] request in the same way that invoking against the FHIR server would.,MAY,Client,,false,, +cds-hooks_3.0.0-ballot,45,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,the prefetched data given to the CDS Service MUST be equivalent to the data the CDS Service would receive if it were making its own call to the CDS Client's FHIR server using the parameterized prefetch template.,SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,46,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,Prefetch data for other services registered to the same hook MUST NOT be provided [to a CDS service that has not requested or is not authorized to receive it],SHALL NOT,Client,,false,, +cds-hooks_3.0.0-ballot,47,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,[CDS] services SHALL only receive the data they requested in their prefetch.,SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,232,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,The resulting response [of the prefetch query] is passed along to the CDS Service using the prefetch parameter,SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,48,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,CDS Client MAY paginate prefetch results,MAY,Client,,false,, +cds-hooks_3.0.0-ballot,49,,The CDS Client MUST NOT send any prefetch template key that it chooses not to satisfy.,DEPRECATED,Client,,false,, +cds-hooks_3.0.0-ballot,50,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"If the CDS Client encounters errors prefetching the requested data, OperationOutcome(s) SHOULD be used to communicate those errors to prevent the CDS Service from incurring an unneeded follow-up query.",SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,51,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,CDS Clients MUST omit the prefetch key if relevant details cannot be provided (e.g. intermittent connectivity issues),SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,52,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,CDS Services SHOULD check any prefetched data for the existence of OperationOutcomes,SHOULD,Service,,false,, +cds-hooks_3.0.0-ballot,53,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"If the CDS Client has no data to populate a template prefetch key, the prefetch template key MUST have a value of null. In case the prefetch url is a single-resource request, the search result may be null, otherwise it is a search and could be a bundle with zero entries.",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,54,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"If the CDS Service is unable to obtain required data because it cannot access the FHIR server and the request did not contain the necessary prefetch keys, the service SHALL respond with an HTTP 412 Precondition Failed status code.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,55,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-tokens,Prefetch tokens MUST be delimited by {{ and }},SHALL,Service,,false,, +cds-hooks_3.0.0-ballot,56,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-tokens,"Prefetch tokens ... MUST contain only the qualified path to a hook context field with optional FHIRPath or one of the following user identifiers: userPractitionerId, userPractitionerRoleId, userPatientId, or userRelatedPersonId.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,57,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-tokens,Only root-level fields with a primitive value within the context object are eligible to be used as prefetch tokens.,SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,233,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-tokens-containing-simpler-fhirpath,"[When evaluating prefetch tokens] CDS Clients can support a limited, targeted subset of FHIRPath aligned with [x-fhir-query](https://hl7.org/fhir/r5/fhir-xquery.html)...: +- the 'context' object, which corresponds to the context element passed in the CDS Hooks call +- variables that correspond to the names of prior prefetch templates +- simple chaining through element paths +- the following FHIRPath functions: ofType(), resolve(), today() +- the '+' and '-' math options",MAY,Client,,,, +cds-hooks_3.0.0-ballot,234,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-tokens-containing-simpler-fhirpath,"[When defining prefetch tokens] a CDS Service's prefetch template can include [at most the following [x-fhir-query](https://hl7.org/fhir/r5/fhir-xquery.html) features]: +- the 'context' object, which corresponds to the context element passed in the CDS Hooks call +- variables that correspond to the names of prior prefetch templates +- simple chaining through element paths +- the following FHIRPath functions: ofType(), resolve(), today() +- the '+' and '-' math options",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,235,https://cds-hooks.hl7.org/2026Jan/en/index.html#simple-fhirpath-for-relative-dates,"[When evaluating prefetch tokens] CDS Clients SHOULD support: +- the [FHIRPath `today()`](https://hl7.org/fhirpath/N1/index.html#current-date-and-time-functions) function +- [addition](https://hl7.org/fhirpath/N1/index.html#addition-2) and [subtraction](https://hl7.org/fhirpath/N1/index.html#subtraction-2) of quantity unit [days](https://hl7.org/fhirpath/N1/index.html#datetime-arithmetic),",SHOULD,Client,,,, +cds-hooks_3.0.0-ballot,236,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,"[When defining prefetch tokens] an argument to ofType() SHALL be a [FHIR resource type](https://hl7.org/fhir/valueset-resource-types.html#definition) (also known as ""concrete core types"").",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,237,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] CDS Clients SHOULD support paths to References,SHOULD,Client,,,, +cds-hooks_3.0.0-ballot,238,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] CDS Clients … MAY support paths to any element within a FHIR resource in context.,MAY,Client,,,, +cds-hooks_3.0.0-ballot,239,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] FHIRPath collections of simple data types are represented as comma-delimited strings,SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,240,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] other prefetch parameters can be referenced in token expressions as FHIRPath variables by placing '%' in front of the prefetch parameter name.,SHALL,Client,,,, +cds-hooks_3.0.0-ballot,241,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When defining prefetch tokens i]t is an error if dependencies are cyclical - i.e. if one prefetch either directly or indirectly depends on itself.,SHALL NOT,Service,,,, +cds-hooks_3.0.0-ballot,242,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens a] prefetch token ... Contain[ing] multiple path selectors delimited with pipes [SHALL be interpretted as a union of the individual parts],SHALL,Client,,,, +cds-hooks_3.0.0-ballot,58,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-query-restrictions,"To reduce the implementation burden on CDS Clients that support CDS Services, prefetch queries SHOULD be restricted to widely supported search parameters and capabilities … [includeing]: +- instance level [read](https://www.hl7.org/fhir/http.html#read) interactions (for resources with known ids such as `Patient`, `Practitioner`, or `Encounter`) +- type level [search](https://www.hl7.org/fhir/http.html#search) interactions; e.g. `patient={{context.patientId}}` +- Resource references (e.g. `patient={{context.patientId}}`) +- token search parameters using equality (e.g. `code=4548-4`) and ... the `:in` modifier (no other modifiers for token parameters) +- date search parameters on `date`, `dateTime`, `instant`, or `Period` types only, and using only the prefixes `eq`, `lt`, `gt`, `ge`, `le` +- the `_count` parameter to limit the number of results returned +- the `_sort` parameter to allow for most recent and first queries",SHOULD,Service,,,, +cds-hooks_3.0.0-ballot,59,https://cds-hooks.hl7.org/2026Jan/en/index.html#example-prefetch-token,"When context fields are used as tokens, their token name MUST be `context.name-of-the-field`",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,60,https://cds-hooks.hl7.org/2026Jan/en/index.html#fhir-resource-access,"If the CDS Client provides both fhirServer and fhirAuthorization request parameters, the CDS Service MAY use the FHIR server to obtain any FHIR resources for which it's authorized, beyond those provided by the CDS Client as prefetched data",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,61,https://cds-hooks.hl7.org/2026Jan/en/index.html#fhir-resource-access,CDS Hooks requires that CDS Services present a valid access token to the FHIR server with each API call,SHALL,Service,,false,, +cds-hooks_3.0.0-ballot,62,https://cds-hooks.hl7.org/2026Jan/en/index.html#fhir-resource-access,"CDS Hooks workflow MUST accommodate the automated, low-latency delivery of an access token to the CDS service",DEPRECATED,Client,,false,, +cds-hooks_3.0.0-ballot,63,https://cds-hooks.hl7.org/2026Jan/en/index.html#fhir-resource-access,"[When executing a CDS request on behalf of a user,] the data to which the CDS Service is given access by the CDS Client MUST be limited to the same restrictions and authorizations afforded the current user.",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,64,https://cds-hooks.hl7.org/2026Jan/en/index.html#fhir-resource-access,"[When executing a CDS request on behalf of a user,] the access token SHALL be scoped to: The CDS Service being invoked [and] the current user",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,65,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"If the CDS Client chooses not to pass along an access token, the fhirAuthorization parameter [SHALL be] … omitted.",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,66,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] access_token field [SHALL be populated with] the [Oauth 2.0](https://oauth.net/2/) access token [as a] string data type",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,67,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] token_type field [SHALL be populated with the] fixed value: 'Bearer'",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,68,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] expires_in field [SHALL be populated with the] the lifetime in seconds of the access token [as an] integer data type",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,69,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] scope field [SHALL be populated with the] the scopes the access token grants the CDS Service [as a] string data type",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,70,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] subject field [SHALL be populated with] the [Oauth 2.0](https://oauth.net/2/) client identifier of the CDS Service, as registered with the CDS Client's authorization server [as a] string data type",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,71,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter and] the access token is restricted to a specific patient, [the] patient field SHOULD be populated to identify the FHIR id of that patient [as a] string data type",SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,72,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,The `expires_in` value is established by the authorization server and SHOULD BE very short lived,SHOULD,Client,,false,, +cds-hooks_3.0.0-ballot,73,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,CDS Clients SHOULD revoke an issued access token upon the completion of the CDS Hooks request/response to limit the validity period of the token.,SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,74,https://cds-hooks.hl7.org/2026Jan/en/index.html#cds-service-response,"For successful responses, CDS Services SHALL respond with a 200 HTTP response with an object containing a cards array",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,75,https://cds-hooks.hl7.org/2026Jan/en/index.html#cds-service-response,"For successful responses, CDS Services [MAY] optionally [respond with an object containing] a systemActions array",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,243,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-status-codes-1,"[When t]he CDS Service is unable to retrieve the necessary FHIR data to execute its decision support, either through a prefetch request or directly calling the FHIR server [it SHALL return a `412 Precondition Failed`status]",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,76,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-status-codes-1,"CDS Services MAY return other HTTP statuses, specifically 4xx and 5xx HTTP error codes.",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,77,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-response,"If … [the] CDS Service has no decision support for the user, … [the] service should return a 200 HTTP response with an empty array of cards",SHOULD,Service,,true,, +cds-hooks_3.0.0-ballot,78,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-response,Clients SHOULD remove cards returned by previous invocations of a hook to a service with the same id when a new hook is triggered,SHOULD,Service,,true,, +cds-hooks_3.0.0-ballot,244,/Users/karlnaden/Documents/for_travel/igs/cds-hooks/en/index.html#returning-operationoutcome,"If a CDS Service encounters an error and returns a non-2xx HTTP status, the CDS Service SHOULD include an OperationOutcome resource in the response body to aid issue-tracking and troubleshooting.",SHOULD,Service,,false,, +cds-hooks_3.0.0-ballot,79,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When receiving a card object] the uuid field SHALL be included in any subsequent calls to the CDS service's feedback endpoint.,SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,80,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When sending a card object] the uuid field SHALL [be a] unique identifier of the card [and be sent as] a string data type,SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,81,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When sending a card object] the uuid field is optional,MAY,Service,,true,, +cds-hooks_3.0.0-ballot,82,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When sending a card object] the uuid field MAY be used for auditing and logging cards,MAY,Client,,true,, +cds-hooks_3.0.0-ballot,83,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When sending a card object] the summary field Shall be a < 140 summary message for display to the user as a string data type,SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,84,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When sending a card object] the detail field is optional [and used to send] information to display,MAY,Service,,true,, +cds-hooks_3.0.0-ballot,85,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object] the detail field, if provided, MUST be represented in [(GitHub Flavored) Markdown](https://github.github.com/gfm/)",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,86,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"For non-urgent cards, the CDS Client MAY hide [the information from the detail field] until the user clicks a link like ""view more details.",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,87,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When sending a card object] the indicator field is a required field [conveying] the urgency / importance of the card [information sent as a] string data type,SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,88,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object] the indicator field's allowed values, in order of increasing urgency, are: info, warning, critical",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,89,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the CDS Client MAY use [the indicator] field to help make UI display decisions such as sort order or coloring.",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,90,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the source is a required field [and SHALL be populated with a] [source](https://cds-hooks.hl7.org/2.0/#source) object",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,91,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] the source field [/ source object] should be the primary source of guidance for the decision support the card represents.",SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,92,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the suggestion field allows a service to suggest a set of changes in the context of the current activity [and is sent as a] array of [suggestion](https://cds-hooks.hl7.org/2.0/#suggestion) [objects]",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,93,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] If suggestions are present, selectionBehavior MUST also be provided.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,94,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the suggestion field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,95,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the selectionBehavior field [has] allowed values of at-most-one, indicating that the user may choose none or at most one of the suggestions [and] any, indicating that the end user may choose any number of suggestions including none of them and all of them",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,96,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the selectionBehavior field [SHALL be sent as a] string data type [and SHALL be present if the suggestions field in the card is populated]",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,97,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] CDS Clients that do not understand the value [in the selectionBehavior field] MUST treat the card as an error.",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,98,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the overrideReason field [SHALL be sent as a] array of [coding](https://cds-hooks.hl7.org/2.0/#coding) [objects]",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,99,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the CDS service MAY return a list of override reasons to the CDS client",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,100,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] if override reasons are present, the CDS Service MUST populate a display value for each reason's [Coding](https://cds-hooks.hl7.org/2.0/#coding)",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,101,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] if override reasons are present … the CDS Client SHOULD present these reasons to the clinician when they dismiss a card.",SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,102,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] if override reasons are present … a CDS Client MAY augment the override reasons presented to the user with its own reasons.",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,103,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the link field [SHALL be sent as a] array of [link](https://cds-hooks.hl7.org/2.0/#link) [objects]",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,104,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the link field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,105,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the label field is required and [SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,245,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the label field is required and [SHALL contain a] short, human-readable label to display for the source of the information displayed on this card",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,106,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] if a url is also specified, [the label field] MAY be the text for the hyperlink",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,107,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the url field [SHALL be a] URL data type [and contain an] ,,, absolute URL to load (via GET, in a browser context) when a user clicks on this link to learn more about the organization or data set that provided the information on this card.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,108,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the url field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,109,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the URL [field] should not be used to supply a context-specific ""drill-down"" view of the information on this card.",SHOULD NOT,Service,,true,, +cds-hooks_3.0.0-ballot,110,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"To supply a context-specific ""drill-down"" view of the information on a card [object implementers SHOULD] ... use [card.link.url](https://cds-hooks.hl7.org/2.0/#link)",SHOULD,Service,,false,, +cds-hooks_3.0.0-ballot,111,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the icon field [SHALL be a] URL data type [and use a] absolute URL",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,112,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the icon field URL SHOULD be a 100x100 pixel PNG image without any transparent regions.",SHOULD,Service,,true,, +cds-hooks_3.0.0-ballot,113,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the icon field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,114,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When receiving a Source object,] the CDS Client may ignore or scale the image during display as appropriate for user experience.",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,115,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the topic field [SHALL be a] [Coding](https://cds-hooks.hl7.org/2.0/#coding) type object [containing a] topic [that] describes the content of the card by providing a high-level categorization that can be useful for filtering, searching or ordered display of related cards in the CDS client's UI.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,116,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When sending a Source object,] the topic field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,117,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the label field is required and [SHALL be a] string data type [and contain h]uman-readable label to display for this suggestion",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,118,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the uuid field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,119,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the uuid field [SHALL be a] string data type [and contain a u]nique identifier, used for auditing and logging suggestions.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,120,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the isRecommended field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,121,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the isRecommended field [SHALL be a] boolean data type … [and indicates] that a specific suggestion is recommended from all the available suggestions on the card",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,122,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] multiple suggestions MAY be recommended [using suggestion.isRecommended], if card.selectionBehavior is any.",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,123,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the action field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,124,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the action field [SHALL be a] array of [actions](https://cds-hooks.hl7.org/2.0/#action)",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,125,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"Within a suggestion, all actions … [SHALL use] AND [logic], such that a user selecting a suggestion selects all of the actions within it [unless a different behavior is indicated by the `actionSelectionBehavior` field].",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,126,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When receiving a Suggestion object,] When a suggestion contains multiple actions, the actions SHOULD be processed as per FHIR's rules for processing [transactions](https://hl7.org/fhir/http.html#trules) with the CDS Client's fhirServer as the base url for the inferred full URL of the transaction bundle entries. (Specifically, deletes happen first, then creates, then updates).",SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,246,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When sending a Suggestion object,] the actionSelectionBehavior field [SHALL be a] string … [and SHALL indicate] whether the end user may select any, none, or only a single action from those included in the suggestion [including values] `all`, `any`, [and] `at-most-one`.",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,247,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,[When receiving a Suggestion object Clients MAY not support the `actionSelectionBehavior` field],MAY,Client,,,, +cds-hooks_3.0.0-ballot,127,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object,] the type field is required and [SHALL be a] string data type [with] values of create, update, delete.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,128,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object,] the description field is required and [SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,129,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When receiveing an Action object,] the description field MAY be presented to the end-user",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,130,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object,] the resource field [SHALL be a] FHIR resource",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,131,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object,] when the type attribute [of the Action object] is create, the resource attribute SHALL contain a new FHIR resource to be created.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,132,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object,] when the type attribute [of the Action object] is update, this holds the updated resource in its entirety and not just the changed fields.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,248,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When receiveing an Action object, t]he CDS Client may reject conflicting changes, for example, due to [concurrency](https://www.hl7.org/fhir/http.html#concurrency).",MAY,Client,,,, +cds-hooks_3.0.0-ballot,133,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object and when the type attribute of the Action object is delete], [the resource field SHOULD NOT be used] to communicate a string of a FHIR id for delete suggestions",SHOULD NOT,Service,,true,, +cds-hooks_3.0.0-ballot,134,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object and when the type attribute of the Action object is delete], the resourceID field SHOULD be provided",SHOULD,Service,,true,, +cds-hooks_3.0.0-ballot,135,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When sending an Action object,] the resourceID field [SHALL be a] string data type [containing a] relative reference to the relevant resource.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,136,https://cds-hooks.hl7.org/2026Jan/en/index.html#reasons-for-rejecting-a-card,"[When sending card.overrideReason,] CDS Services MUST provide a human readable text in the display property",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,137,https://cds-hooks.hl7.org/2026Jan/en/index.html#reasons-for-rejecting-a-card,CDS Clients MAY incorporate [the card.overrideReason.display] into their user interface,MAY,Client,,false,, +cds-hooks_3.0.0-ballot,249,https://cds-hooks.hl7.org/2026Jan/en/index.html#reasons-for-rejecting-a-card,[When providing override reasons] a suggested set of standardized non-adherence reasons is provided in the [Non-Adherence Reason Codes](file:///Users/karlnaden/Documents/for_travel/igs/cds-hooks/en/CodeSystem-non-adherence-reason-codes.html) code system.,SHOULD,Service,,,, +cds-hooks_3.0.0-ballot,250,https://cds-hooks.hl7.org/2026Jan/en/index.html#reasons-for-rejecting-a-card,[When providing override reasons] a suggested set of [clinically relevant codes](file:///Users/karlnaden/Documents/for_travel/igs/cds-hooks/en/ValueSet-non-adherence-reason-clinical.html) is provided as a starting point for service providers to use.,SHOULD,Service,,,, +cds-hooks_3.0.0-ballot,138,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the label field is required [and SHALL be a] string data type [containing h]uman-readable label to display for this link (e.g. the CDS Client might render this as the underlined text of a clickable link).",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,139,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the url field is required [and SHALL be a] URL data type [containing a] URL to load (via GET, in a browser context) when a user clicks on this link.",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,140,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the url field MAY be a ""deep link"" with context embedded in path segments, query parameters, or a hash.",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,141,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the type field is required [and SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,142,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the type field [SHALL have values] absolute … or smart. absolute indicates that the URL is absolute and should be treated as-is. smart indicates that the URL is absolute or smart indicates that the URL is a SMART app launch URL",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,143,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When receiving a Link object and the link.type field is smart,] CDS Client should ensure the SMART app launch URL is populated with the appropriate SMART launch parameters.",SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,144,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the appContext field [SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,145,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the appContext field is optional",MAY,Service,,true,, +cds-hooks_3.0.0-ballot,146,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the appContext field should only be valued if the link type is smart",SHOULD,Service,,true,, +cds-hooks_3.0.0-ballot,147,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the appContext field is not valid for absolute links [in other words, when link.type is absolute appContext SHALL NOT be populated]",SHALL NOT,Service,,true,, +cds-hooks_3.0.0-ballot,251,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,[When receiving a Link object] CDS Clients SHOULD support passing appCOntext from the CDS Service to a launched SMART app.,SHOULD,Client,,,, +cds-hooks_3.0.0-ballot,252,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the autolaunchable field [SHALL be a] boolean data type [and] serves as a hint to the CDS Client suggesting this link be immediately launched, without displaying the card and without manual user interaction",SHALL,Service,,,, +cds-hooks_3.0.0-ballot,253,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When sending a Link object,] the autolaunchable field is optional",MAY,Service,,,, +cds-hooks_3.0.0-ballot,254,https://cds-hooks.hl7.org/2026Jan/en/index.html#system-action,[When sending a response a] systemAction shares all elements with an Action except that its description is optional.,MAY,Service,,,, +cds-hooks_3.0.0-ballot,255,https://cds-hooks.hl7.org/2026Jan/en/index.html#system-action,[When receiving a systemAction] actions aren't displayed to users in cards,SHOULD NOT,Client,,,, +cds-hooks_3.0.0-ballot,256,https://cds-hooks.hl7.org/2026Jan/en/index.html#system-action,[When receiving a systemAction] actions … can be automatically applied without requiring user intervention … and the CDS Client is expected to process them.,SHOULD,Client,,,, +cds-hooks_3.0.0-ballot,148,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,A CDS Service MAY support a feedback endpoint [to gather suggestion analytics from the CDS client],MAY,Service,,false,, +cds-hooks_3.0.0-ballot,149,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,a CDS Client SHOULD be capable of sending feedback [to send suggestion analytics to the CDS service],SHOULD,Client,,false,, +cds-hooks_3.0.0-ballot,150,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,CDS Clients should report ... end-user interactions as feedback.,SHOULD,Client,,false,, +cds-hooks_3.0.0-ballot,151,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,A CDS Client provides feedback by POSTing a JSON document,SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,152,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"The [service's] feedback endpoint can ([SHALL]) be constructed from the CDS Service endpoint and a path segment of ""feedback"" as {baseUrl}/cds-services/{service.id}/feedback",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,153,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"The feedback endpoint [for submission] can ([SHALL]) be constructed from the CDS Service endpoint and a path segment of ""feedback"" as {baseUrl}/cds-services/{service.id}/feedback",SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,154,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,The request to the feedback endpoint SHALL be an object containing an array [of [Feedback](https://cds-hooks.hl7.org/2.0/#feedback) objects],SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,155,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the card field is required [and SHALL be a] string data type [containing] the card.uuid from the CDS Hooks response",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,156,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the outcome field is required [and SHALL be a] string data type [with a value of either] accepted or overridden",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,157,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the outcome field is required [and SHALL be a] string data type [with a value of either] accepted or overridden",DEPRECATED,Client,,true,, +cds-hooks_3.0.0-ballot,158,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the acceptedSuggestions field is an array of json objects identifying one or more of the user's AcceptedSuggestions [and is r]equired [when feedback.outcome is accepted]",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,159,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the overrideReason field is a overrideReason object",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,160,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the overrideReason field is optional",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,161,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the outcomeTimestamp field is required [and SHALL be a] string data type [using the] [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) representation of the date and time in Coordinated Universal Time (UTC) when action was taken on the card, as profiled in [section 5.6 of RFC3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6)",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,162,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion-accepted,"[When sending an AcceptedSuggestion object], the id field is required [and SHALL be a] string data type [containing] card.suggestion.uuid from the CDS Hooks response",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,163,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion-accepted,"If either the card or the suggestion has no uuid, the CDS Client does not send a [feedback] notification",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,164,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-ignored,If the end-user doesn't interact with the CDS Service's card at all … the CDS Client [SHALL NOT] inform the CDS Service of the rejected guidance,SHALL NOT,Client,,true,, +cds-hooks_3.0.0-ballot,257,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridden-guidance,A CDS Client may enable the end user to override guidance without providing an explicit reason for doing so. The CDS Client can inform the service when a card was dismissed by specifying an outcome of overridden without providing an overrideReason.,MAY,Client,,,, +cds-hooks_3.0.0-ballot,165,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridereason,"[When sending a overrideReason object,] the reason field is required if user selected an override reason from the list of reasons provided in the Card [and SHALL be a] coding object",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,166,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridereason,"[When sending a overrideReason object,] the userComment field is a string data type",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,167,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridereason,"[When sending a overrideReason object,] the userComment field is optional [and contains a] further explain[ation of] why the card was rejected with free text.",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,168,https://cds-hooks.hl7.org/2026Jan/en/index.html#security-and-safety,"All data exchanged through the RESTful APIs MUST be transmitted over channels secured using the Hypertext Transfer Protocol (HTTP) over Transport Layer Security (TLS), also known as HTTPS and defined in [RFC2818](https://tools.ietf.org/html/rfc2818)",SHALL,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,169,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,"Each CDS Client vendor/provider SHOULD maintain an ""allow list"" (and/or ""deny list"") of the CDS Services it has vetted",SHOULD,Client,,false,, +cds-hooks_3.0.0-ballot,170,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,"Each CDS Client vendor/provider SHOULD maintain an ""allow list"" (and/or ""deny list"") of ... the Card links that have been deemed safe to display from within the CDS Client context",SHOULD,Client,,false,, +cds-hooks_3.0.0-ballot,171,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,The CDS Service can be registered with the CDS Client's authorization server,MAY,Client,,false,, +cds-hooks_3.0.0-ballot,172,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,Every interaction between a CDS Client and a CDS Service is initiated by the CDS Client sending a service request to a CDS Service endpoint protected using the [Transport Layer Security protocol] (https://tools.ietf.org/html/rfc5246),SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,173,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,CDS Client SHALL deny access to a requested resource if it is outside the user's authorized scope,SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,174,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,"If a CDS Client is satisfying prefetch requests from a CDS Service or sends a non-null fhirAuthorization object to a CDS Service so that it can call the FHIR server, the CDS Service MUST be pre-registered with the authorization server protecting access to the FHIR server",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,175,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[The CDS service] MAY use mutual TLS, in which both ends of the channel are authenticated.",MAY,Service,,false,, +cds-hooks_3.0.0-ballot,176,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[If not using mutual TLS,] to enable the CDS Service to authenticate the identity of the CDS Client, CDS Hooks uses digitally signed [JSON web tokens (JWT)](https://jwt.io/) [(rfc7519)](https://tools.ietf.org/html/rfc7519)",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,177,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,CDS Services SHOULD require authentication if invoking the service poses any risk of exposing sensitive data to the caller.,SHOULD,Service,,false,, +cds-hooks_3.0.0-ballot,178,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"Each time a CDS Client transmits a request to a CDS Service which requires authentication, the request MUST include an Authorization header presenting the JWT as a “Bearer” token: +Authorization: Bearer {{JWT}}",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,179,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,mutual TLS MAY be used alongside JSON web tokens to establish trust of the CDS Client by the CDS Service,MAY,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,180,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The CDS Client MUST use its private key to digitally sign the JWT, using the [JSON Web Signatures (rfc7515)](https://tools.ietf.org/html/rfc7515) standard",SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,181,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the alg field is required [and SHALL be a] string data type [containing] the cryptographic algorithm used to sign this JWT.",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,182,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the kid field is required [and SHALL be a] string data type [containing] the identifier of the key-pair used to sign this JWT.",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,183,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the kid field MUST be unique within the CDS Client's JWK Set.",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,184,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the typ field is required [and SHALL be a] string data type and SHALL be 'JWT'",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,185,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the jku field is a url data type [containing] the URL to the JWK Set containing the public key(s)",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,186,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the jku field is optional",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,187,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the iss field is required [and SHALL be a] string data type [containing] the URI of the issuer of the JWT",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,188,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The JWT MAY be self-issued by the CDS Client, or MAY be issued by a third-party identity provider.",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,189,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the aud field is required [and SHALL be a] string data type or an array of strings [per [rfc7519](https://tools.ietf.org/html/rfc7519#section-4.1.3) containing] the CDS Service endpoint that is being called by the CDS Client",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,190,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the exp field is required [and SHALL be a] number data type [containing the] expiration time integer for this authentication JWT, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC).",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,191,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the iat field is required [and SHALL be a] number data type [containing] the time at which this JWT was issued, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC)",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,192,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the jti field is required [and SHALL be a] string data type [containing] a nonce string value that uniquely identifies this authentication JWT (used to protect against replay attacks)",SHALL,Client,,true,, +cds-hooks_3.0.0-ballot,193,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the tenant field is optional [SHALL be a] string data type [containing] an opaque string identifying the healthcare organization that is invoking the CDS Hooks request",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,194,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the tenant field is optional",MAY,Client,,true,, +cds-hooks_3.0.0-ballot,195,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,CDS Services SHOULD limit the CDS Clients they trust by maintaining an allowlist of iss and jku urls.,SHOULD,Service,,false,, +cds-hooks_3.0.0-ballot,196,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"For CDS Hooks, [the aud] value MUST be the URL of the CDS Service endpoint being invoked",SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,197,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The CDS Client MUST make its public key, expressed as a JSON Web Key (JWK), available in a JWK Set, as defined by [rfc7517](https://tools.ietf.org/html/rfc7517)",SHALL,Client,,false,, +cds-hooks_3.0.0-ballot,198,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The CDS Client MAY make its JWK Set available via a URL identified by the jku header field, as defined by [rfc7515 4.1.2](https://tools.ietf.org/html/rfc7515#section-4.1.2)",MAY,Client,,false,, +cds-hooks_3.0.0-ballot,199,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"If the jku header field is ommitted, the CDS Client and CDS Service SHALL communicate the JWK Set out-of-band.",SHALL,"Client, Service",,true,, +cds-hooks_3.0.0-ballot,200,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,[JSON Web Algorithms (rfc7518)](https://tools.ietf.org/html/rfc7518) defines several cryptographic algorithms for use in signing JWTs and should be referenced by CDS Hooks implementers.,SHOULD,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,201,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"JWTs SHALL NOT be signed using the none algorithm, referred to in rfc7518 as unsecured JSON Web Signatures, [and Services SHALL NOT accept these JWTs] as the lack of a cryptographic signature does not provide any integrity protection.",SHALL NOT,Service,,false,, +cds-hooks_3.0.0-ballot,202,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"JWTs SHALL NOT be signed [by Clients] using the none algorithm, referred to in rfc7518 as unsecured JSON Web Signatures, as the lack of a cryptographic signature does not provide any integrity protection.",SHALL NOT,Client,,false,, +cds-hooks_3.0.0-ballot,203,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,JWTs SHALL NOT be signed using any symmetric algorithm as these algorithms require the CDS Client and CDS Service to share a private key in order to verify the signature,SHALL NOT,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,204,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"When choosing an algorithm to sign their JWTs, CDS Clients SHOULD consider not only the algorithms (and key sizes) that are recommended within the security industry, but also how well those algorithms are supported in the various programming languages and libraries that may be used by CDS Services.",SHOULD,Client,,false,, +cds-hooks_3.0.0-ballot,205,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"At publication time of this specification, both ES384 and RS384 are RECOMMENDED for their regard within the larger security industry, strength, and support across popular programming languages and libraries.",SHOULD,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,206,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"Stronger and better algorithms [than ES384 and RS384] are continually being introduced due to new threats, weaknesses, and increases in computing power [and] CDS Clients SHOULD continually re-evaluate their choice of an algorithm based upon these ever changing conditions.",SHOULD,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,207,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,CDS Services SHOULD consider the algorithms they understand and trust based upon their tolerance for risk.,DEPRECATED,Service,,false,, +cds-hooks_3.0.0-ballot,208,https://cds-hooks.hl7.org/2026Jan/en/index.html#cross-origin-resource-sharing,CDS Services and browser-based CDS Clients will require CORS support. [Cross-origin resource sharing (CORS)](https://www.w3.org/TR/cors/) is a [World Wide Web Consortium (W3C)](https://www.w3.org/Consortium/) standard mechanism that uses additional HTTP headers to enable a web browser to gain permission to access resources from an Internet domain different from that which the browser is currently accessing.,SHALL,"Client, Service",,true,, +cds-hooks_3.0.0-ballot,209,https://cds-hooks.hl7.org/2026Jan/en/index.html#update-stale-guidance,"In the case that CDS Hooks cards are persisted, clients should take care to ensure that stale guidance does not negatively impact patient care.",SHOULD,Client,,true,, +cds-hooks_3.0.0-ballot,210,https://cds-hooks.hl7.org/2026Jan/en/index.html#update-stale-guidance,CDS Services can update their previously returned guidance by returning a new set of cards when the service is invoked based on a different hook,MAY,Service,,true,, +cds-hooks_3.0.0-ballot,211,https://cds-hooks.hl7.org/2026Jan/en/index.html#update-stale-guidance,CDS Services indicate [intent to update an existing card] by providing multiple CDS Services with the same id in discovery.,SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,212,https://cds-hooks.hl7.org/2026Jan/en/index.html#update-stale-guidance,[When updating a card] Clients are recommended to remove cards returned by a previous invocation with the new cards.,SHOULD,Service,,true,, +cds-hooks_3.0.0-ballot,213,https://cds-hooks.hl7.org/2026Jan/en/index.html#update-stale-guidance,Note that CDS Services will need to negotiate with CDS Clients to ensure that hooks that are required to ensure patient safety are supported by the CDS Client,SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,214,https://cds-hooks.hl7.org/2026Jan/en/index.html#extensions,The value of an extension element MUST be a pre-coordinated JSON object,SHALL,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,215,https://cds-hooks.hl7.org/2026Jan/en/index.html#extensions,"Extension structures SHOULD use a strategy for naming that ensures global uniqueness, such as reverse-domain-name notation",SHOULD,"Client, Service",,false,, +cds-hooks_3.0.0-ballot,216,https://cds-hooks.hl7.org/2026Jan/en/index.html#coding,"[When sending a coding object,] the code field is required [and SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,217,https://cds-hooks.hl7.org/2026Jan/en/index.html#coding,"[When sending a coding object,] the system field is required [and SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,218,https://cds-hooks.hl7.org/2026Jan/en/index.html#coding,"[When sending a coding object,] the code field is required [and SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,219,https://cds-hooks.hl7.org/2026Jan/en/index.html#coding,"[When sending a coding object,] the display field is human-readable display required [when] [Override Reasons](https://cds-hooks.hl7.org/2.0/#overridereason) provided by CDS Service [are sent in card.overrideReason and SHALL be a] string data type",SHALL,Service,,true,, +cds-hooks_3.0.0-ballot,220,https://cds-hooks.hl7.org/2026Jan/en/index.html#coding,"[When sending a coding object,] the display field is human-readable display [which is] OPTIONAL [when sending source.topic]",SHALL,Service,,true,, hl7.fhir.us.davinci-crd_2.0.1,1,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#foundational-requirements,"Future versions of this specification will evolve based on implementer feedback. Therefore, CRD servers and CRD clients MAY mutually agree to support additional hooks, additional card patterns, additional resources, additional extensions, etc. not found in this specification.",MAY,"Client, Server",,,, hl7.fhir.us.davinci-crd_2.0.1,2,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#mustsupport,"For CRD clients, If the client maintains the data element and surfaces it to users, then it SHALL be exposed in their FHIR interface when the data exists and privacy constraints permit",SHALL,Client,,,, hl7.fhir.us.davinci-crd_2.0.1,3,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#mustsupport,"For CRD servers, the server SHALL leverage mustSupport elements as available and appropriate to provide decision support.",SHALL,Server,,,, @@ -749,3 +1079,244 @@ hl7.fhir.us.davinci-crd_2.0.1,320,https://hl7.org/fhir/us/davinci-crd/STU2/Capab hl7.fhir.us.davinci-crd_2.0.1,321,https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html,"The CRD Client SHALL also support ‘update’ functionality for [the ServiceRequest resource type when] the client allows invoking [the order-dispatch, order-select, or order-sign hook].",SHALL,Client,,,, hl7.fhir.us.davinci-crd_2.0.1,322,https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html,"The CRD Client SHALL also support ‘update’ functionality for [the VisionPrescription resource type when] the client allows invoking [the order-dispatch, order-select, or order-sign hook].",SHALL,Client,,,, hl7.fhir.us.davinci-crd_2.0.1,323,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#crd-access-tokens,"When a CRD client invokes a CRD server via CDS Hooks, it will provide an access token that allows the CRD server to retrieve additional patient information.",SHALL,Client,,,, +hl7.fhir.us.davinci-crd_2.2.1,billopt-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-1,"CRD clients **SHALL** use the billing-options extension to convey likely billing codes if they are known, but are not required to know billing codes (e.g. if ordering and performing systems will differ).",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,billopt-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-2,CRD servers **SHALL NOT** depend on the billing-options extension being present in order to provide a response.,SHALL NOT,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,billopt-3-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-3,"If codes are provided with the billing-options extension, CRD servers **SHALL** consider any codes provided",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,billopt-3-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-3,"If codes are provided with the billing-options extension, CRD servers ... **MAY** consider additional codes determined by their own mapping when returning coverage information responses.",MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-1,CRD clients **SHALL** support at least one of the three specified versions of US Core.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-2,CRD servers **SHALL** be able to handle all three US Core versions.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-3,"If the CRD client maintains a mustSupport data element and surfaces it to users, then it **SHALL** be exposed in their FHIR interface when the data exists and privacy constraints permit.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,conf-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-4,CRD servers **SHALL** leverage mustSupport elements as available and appropriate to provide decision support.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-5,CRD servers **SHALL** populate mustSupport elements if an appropriate value exists.,SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,conf-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-6,CRD clients **SHALL** make the mustSupport data available to the appropriate user (clinical or administrative) or leverage the data within their workflow as necessary to follow the intention of the provided decision support.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-7,"When preparing [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) responses, CRD servers **SHALL NOT** depend on or set expectations for the inclusion of resource instances not compliant with profiles defined in this guide, HRex, or US Core.",SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-8,CRD servers **SHALL NOT** depend on or set expectations for the inclusion of any data elements not marked as mandatory (min cardinality >= 1) or mustSupport in those profiles.,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-9,"When preparing [response types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html) other than Coverage Information, CRD servers **SHOULD** limit themselves to the same resource instances and data elements as permitted above for Coverage Information responses.",SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,conf-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-10,CRD clients **SHALL NOT** depend on or set expectations for CRD servers to communicate data elements not marked as mandatory or mustSupport in the CRD specification.,SHALL NOT,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-11,"implementations **MAY**, by mutual agreement, pre-adopt the use of those additional CI-build profiles and/or mustSupport data elements and not be considered in violation of #1 or #3 above.",MAY,"CRD Client, CRD Server",,true,, +hl7.fhir.us.davinci-crd_2.2.1,conf-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-12,"Where cardinality and other constraints present in profiles allow data elements to be omitted, CRD compliant systems **SHALL NOT** treat the omission of those elements as an error.",SHALL NOT,"CRD Client, CRD Server",,true,, +hl7.fhir.us.davinci-crd_2.2.1,conf-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-13,CRD clients and services and **SHALL** use standard CRD data elements (i.e. elements found within CRD-defined or inherited profiles and marked as mandatory or mustSupport) to communicate needed data where the elements are intended to convey such information.,SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,conf-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-14,CRD implementing organizations **SHALL NOT** publish guidance setting expectations for where certain data elements are conveyed within CRD and inherited data structures,SHALL NOT,"CRD Client Organization, CRD Server Organization",,false,, +hl7.fhir.us.davinci-crd_2.2.1,covinfo-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html#ci-c-covinfo-1,The union of the scoping elements in each coverage-information repetition **SHOULD** be disjoint.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,covinfo-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html#ci-c-covinfo-2,"If there are multiple reason repetitions, each repetition **SHOULD** make clear exactly what aspect of the coverage information assertion the reason applies to.",SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-1,CRD servers **SHALL** declare at least one supported CRD version for each supported hook.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-2,"If the services endpoint can handle multiple CRD versions, it **SHALL** declare all versions it supports.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-3-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-3,The requestedVersion extension **SHALL** be present if the service indicates it supports multiple versions for that hook,SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-3-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-3,The requestedVersion extension ... **MAY** be present always.,MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-4,Each configuration option SHALL include four mandatory elements.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-5,"CRD servers **SHALL**, at minimum, offer configuration options for each type of card they support (with a code corresponding to the [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html) ValueSet and a type of 'boolean', where setting the flag to false will result in the server not returning any cards of the specified type).",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-6,"Guidance can be given about allowed combinations in descriptions, but CRD servers **SHALL** gracefully handle disallowed/nonsensical combinations.",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-7,Configuration codes **SHALL** be valid JSON property names and **SHALL** come from the [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html) list if an applicable type is in that list.,SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-8,"Configuration codes, names, and descriptions **SHALL** be unique within a [CDS Service](http://cds-hooks.hl7.org/2026Jan/index.html#response) definition.",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-9,"Configuration codes, names, and descriptions **SHOULD** be consistent across different hooks supported by the same payer when dealing with the same types of configuration options.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-10,CRD servers providing more than one type of coverage requirement information/guidance **SHOULD** expose configuration options allowing clients to dynamically control what information is returned by the service.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-11,CRD Clients **SHOULD** expose configuration options through a configuration screen to allow users and/or system administrators to control the types of information returned.,SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-12,CRD Clients **SHALL** convey configuration options when invoking the hook using the davinci-crd.configuration extension. It will be a single object whose properties will be drawn from the code values from configuration options and whose values will be of the type defined for that option.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-13,"CRD Clients **SHOULD** provide an ability to leverage the dynamic configuration capabilities of payer services based on provider role, individual provider, and/or hook invocation location as best meets the needs of their users.",SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-14,CRD Servers **SHALL** behave in the manner prescribed by any supported configuration information received from the CRD Client.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-15,CRD Servers **SHALL NOT** require the inclusion of configuration information in a hook call (i.e. no hook invocation is permitted to fail because configuration information was not included).,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-16,CRD Clients **MAY** send configuration information that CRD Servers do not support.,MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-17,CRD Servers **SHALL** ignore unsupported configuration information.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-19,"When included with a Task, the creation of the Questionnaire needs to be conditional - it **SHOULD** only occur if that specific Questionnaire version does not already exist",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-20,the CRD server **SHALL** query to determine if the client has a copy of the Questionnaire before sending the request.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-21,"For the purposes of this implementation guide, the inclusion of the `id` element in 'created' resources and references in created and updated resources within multi-action suggestions **SHALL** be handled as per FHIR's [transaction processing rules](http://hl7.org/fhir/R4/http.html#trules).",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-22,"Specifically, this means that if a FHIR Reference points to the resource type and `id` of a resource of another 'create' Action in the same Suggestion, then the reference to that resource **SHALL** be updated by the CRD client to point to the `id` assigned by the client when performing the 'create'.",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-23,CRD Clients **SHALL** perform 'creates' in an order that ensures that referenced resources are created prior to referencing resources.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-24,"If a hook service is invoked on a collection of resources, all cards returned that are specific to only a subset of the resources passed as context **SHALL** disambiguate in the `detail` element which resources they are associated with in a human-friendly way.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-25,"As well, cards **SHOULD** include the associated-resource extension to allow computable linkage.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-26,CRD clients **SHALL** only invoke hooks on payer services where the patient record indicates active coverage with the payer associated with the service and where there is no recorded indication the patient intends to bypass insurance coverage (i.e. the service or product is not flagged as 'patient-pay').,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-27,"CRD clients **MAY** limit hook invocation to only those payers that are believed to potentially have relevant information related to the current action - for example, clinical guidance, contraindication detection, etc.",MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-28,"To avoid confusion for providers, where a patient has multiple active coverages that could be relevant to the current order/appointment/etc., CRD clients **SHALL** select from those coverages which is most likely to be primary and only solicit coverage information for that one payer.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-29-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-29,This primary coverage **SHALL** be the only one included in the prefetch content as part of the CRD request,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-29-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-29,[O]ther [non-primary] coverages **MAY** be exposed over the CRD client's FHIR API.,MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,dev-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-30,"If they invoke CRD on other payers, CRD clients **SHALL** ensure that response types that return coverage information are disabled for those 'likely secondary' payers.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-31,"In situations where a CRD client determines that there are different primary coverages for different items in the same order action, they **MAY** choose to send separate CRD calls (each with its own access token) for the collection of services pertinent to that Coverage.",MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,dev-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-32,"Where the patient has multiple active coverages that the CRD client deems appropriate to call the respective CRD servers for, the CRD client **SHALL** invoke all CRD server calls in parallel and display results simultaneously to ensure timely response to user action.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-1,"CRD servers and CRD clients **MAY** mutually agree to support additional hooks, additional card patterns, additional resources, additional extensions, etc. not found in this specification.",MAY,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-2,CRD servers **SHALL** return responses for all supported hooks and **SHALL** respond within the required time 90% of the time.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-3,"If a CRD client does not receive a response within the 5 or 10-second window, it **MAY** either abandon the call or process the response asynchronously.",MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-4,"Where a CRD server responds with a coverage information extension indicating `doc-needed` of 'clinical', 'admin', or 'patient' and the payer supports DTR, the responsible organization **SHOULD** support soliciting the identified additional information via DTR.",SHOULD,CRD Server Organization,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-5,CRD servers **SHOULD** query all data necessary to make their coverage determination decisions if that data is available for query in the EHR and that data is not returned in prefetch.,SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-6,CRD clients **SHALL** provide a mechanism for providers to bypass a CRD process that is taking longer than the aforementioned time limit to ensure users are not blocked from proceeding with their business flow.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-7,"Where a CRD client opts to not block users from proceeding for responses that come back in a period of time longer than the target time window in this guide (i.e., 5s or 10s), the client **SHOULD** ensure that users are made aware of the information when it is available.",SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-8,"For responses that come back in a time period that exceeds the time maximm duration specifd in this guide, CRD clients **MAY** ignore the resulting cards and/or system actions.",MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-9,"CRD servers **SHALL** ensure that the guidance returned with respect to coverage and prior authorizations (e.g., assertions that a service is covered, or prior authorization is not necessary) is as accurate as guidance that would be provided by other means (e.g., portals, phone calls).",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-10,"Also, coverage and authorization guidance **SHOULD** allow for possible variances in coding and submission.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-11,CRD servers **SHALL** retain all coverage guidance provided and take into account answers provided via CRD (and DTR) when subsequently adjudicating claims.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-12,"Where the selected code is not already a billing code and CRD clients are able to automatically determine what the corresponding billing code is, they **SHOULD** send a Coding with the billing code alongside the clinical code to reduce the risk of the receiving payer making a different translation.",SHOULD,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-13,CRD servers **SHALL** ensure that CDS Hooks return only messages and information relevant and useful to the intended recipient.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-14,"If a CRD server supports [endpoint discovery](http://hl7.org/fhir/us/davinci-hrex/1.2.0/endpoint-discovery.html), they **SHALL** have at most a single endpoint for each coverage (e.g., Medicare, Medicaid, or commercial) they provide coverage under.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-15,"If a CRD server does not support endpoint discovery, they **SHALL** expose only one CRD endpoint capable of handling all coverages.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-16,"When the connection between a particular client and server has evolved to an automated configuration approach, CRD Clients **SHOULD** perform the discovery process on the CRD server at least once per day to detect any changes to supported hooks, prefetch requirements, and/or configuration options.",SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-17,"If a CRD client encounters an error when invoking a hook, they **SHOULD** re-run the discovery process before failing.",SHOULD,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-18,CRD clients and servers **MAY** leverage the [payer registry](http://hl7.org/fhir/us/davinci-pdex-plan-net) developed by PDex (which will eventually fold into the [national directory under FAST](https://confluence.hl7.org/display/FAST/National+Healthcare+Directory)) as a means of determining which endpoints exist for which payers as candidates for configuration.,MAY,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-19,"Once plans are in the national directory, CRD clients **SHOULD** include that plan identifier to uniquely identify a plan.",SHOULD,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-20,"When a CRD client invokes a CRD server via CDS Hooks, it **SHALL** provide an access token that allows the CRD server to retrieve additional patient information.",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-21,The CRD client **SHALL** limit the scopes provided in their access token as narrowly as feasible to reflect the data requirements identified by the CRD server as necessary to perform their decision support.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-22,Such access tokens **SHOULD** have an expiration time of no longer than 30 seconds which should be sufficient for even 'parallel' decision support with something like 'Order Select' where a user continues to work while the decision support call is processing.,SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-23,CRD Clients **SHALL** be able to parse and execute prefetches that use the simple FHIRPath approach and not fail if that syntax is present.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-24,"For this release of the IG, conformant CRD clients and servers **SHALL** support the CDS Hooks prefetch capability.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-25-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-25,Clients **SHALL** be able to supply the information listed in the bullets above via prefetch for the request resources they support when data exists using the search parameters and FHIRPath expressions covered in the [standard prefetch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#standard-prefetch) section below. This includes the ability to fetch subsets of the specified queries.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-25-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-25,Clients **SHALL** be able to supply ... subsets of the specified [prefetch] queries.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-26,"They **MAY** include more and/or less prefetch requests than described in 'standard' prefetch section below, based on which data is desired.",MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-27,Prefetch requests **SHOULD** only include information that is always expected to be needed for each hook invocation.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-28,"When information is only needed for certain invocations of the hook (e.g., for specific types of medications or services), that information **SHOULD** only be retrieved by query using the provided token, not requested universally via prefetch.",SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-29,Servers **SHALL** use prefetch expressions in the manner described below if those data elements are relevant to their coverage determination or other decision support.,SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,found-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-30,CRD client implementations **SHOULD NOT** depend on standardized prefetch key names or a specific ordering of search filters.,SHOULD NOT,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-31,CRD clients **SHALL** inspect the CDS Hooks discovery endpoint to determine exact prefetch key names and queries.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-32,HTTP 412 responses **SHALL NOT** be used in situations where the prefetch was provided or the query was successfully performed but the record in question did not have all the data the payer might have needed/desired.,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-33,CRD clients and servers **SHALL** ignore unexpected elements when processing instances.,SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-34,CRD servers **SHALL** provide what coverage requirements they can based on the information available.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-35-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-35,"In the specific case of order-based hooks, ""what if"" **SHOULD** use the Order Sign hook",SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-35-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-35,"In the specific case of order-based hooks, ""what if"" ... **SHALL** pass the [unsolicited-determ](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html#expansion) configuration option with a value of 'false' to prevent the return of an unsolicited determination",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-35-C,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-35,"In the specific case of order-based hooks, ""what if"" ... **MAY** use configuration options to prevent the return of other irrelevant types of cards (e.g., duplicate therapy).",MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-36-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-36,"When CRD clients pass resources to a CRD server as part of context, the resources **SHALL** have an 'id'",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-36-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-36,"When CRD clients pass resources to a CRD server as part of context, the ... 'id' [of each resource] **SHALL** be usable as a target for references [(in resource ids and Reference elements)] in resources manipulated by CDS Hooks actions and/or by SMART apps.",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-37,"Therefore, in addition to any logging performed for security purposes, both CRD clients and CRD servers **SHALL** retain logs of all CRD-related hook invocations and their responses for access in the event of a dispute.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-38,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-38,Organizations **SHALL** have processes to ensure logs can be accessed by appropriate authorized users to help resolve discrepancies or issues in a timely manner.,SHALL,"CRD Client Organization, CRD Server Organization",,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-39,CRD clients **SHOULD** ensure that multiple cards with the same advice are handled in a way that will not create a burden on the user.,SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,found-40,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-40,Conformant systems **SHOULD** omit non-significant whitespace in transmitted instances for performance reasons.,SHOULD,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-1,CRD Clients conforming to this implementation guide **SHALL** be able to determine the correct payer CRD server to use for each request.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-2-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-2,CRD Clients conforming to this implementation guide **SHALL** support at least one of the hooks,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-2-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-2,"CRD Clients conforming to this implementation guide **SHALL** support ... (for order-centric hooks), at least one of the order resource types listed below",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-2-C,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-2,CRD Clients conforming to this implementation guide … **SHOULD** support all [order resource types listed below] that apply to the context of their system [for order centric hooks].,SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-3,"For systems that support ordering products or services covered by one of the CRD-supported request types, such clients **SHALL** support the order-sign hook for the order types they support.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-4,CRD Servers conforming to this implementation guide **SHALL** provide a service for all hooks and order resource types required of CRD clients by this implementation guide unless the server has determined that the hook will not be reasonably useful in determining coverage or documentation expectations for the types of coverage provided.,SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-5,CRD Clients and CRD Servers **MAY** choose to support additional hooks available in the registry on the [CDS Hooks continuous integration build](https://build.fhir.org/ig/HL7/cds-hooks-library) or custom hooks defined elsewhere.,MAY,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-6,"When supporting hooks not covered by this guide, systems **SHOULD** adhere to the general conformance expectations defined in this specification for those additional hooks.",SHOULD,"CRD Client, CRD Server",,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-7,CRD clients **SHALL** allow hook invocation to occur transparently as part of user workflow.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-8,"CRD clients **SHALL NOT** require transcription of order, appointment, or other data into a separate interface distinct from regular provider workflow unless performing ""what if"" situations.",SHALL NOT,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-9,"If the CRD Server encounters an error when processing the request, the system **SHALL** return an appropriate error HTTP Response Code, starting with the digit ""4"" or ""5"", indicating that there was an error.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-10,"If an issue is identified at a layer of the CRD Server that is FHIR aware (e.g. not a ""wrong endpoint"" or ""not authorized"" issue), the server **SHALL** provide an OperationOutcome for internal issue tracking by the client system.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-11,The CRD Client **MAY** display to the user that the Coverage Requirements Discovery Service is unavailable.,MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-12,"If additional information (e.g. number to call) is available, it **MAY** also be included in the message to the user.",MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-13,CRD Servers SHALL use the 400 and 422 codes in a manner consistent with the FHIR RESTful Create Action,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-14,"If a CRD server's validation process does not differentiate between validation issues stemming from the JSON syntax validation, FHIR core validation, CDS Hooks validation, and CRD-specific validation, it **MAY** treat all validation rules as 400 errors.",MAY,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-15,A CRD client **MAY** opt to re-invoke a CRD hook either due to manual user intervention or automatically in the background if there is a reason to believe that a substantive change in the patient's record and/or coverage might produce a different CRD response.,MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-16,"Unless reporting an error or coverage information already exists and there is no new information, CRD Servers **SHALL** include a Coverage Information system action in the response for 'primary' hooks, even if the response indicates that further information is needed or that the level of detail provided is insufficient to determine coverage.",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-17,"These hooks **MAY** return cards or system actions, but are not expected to, and CRD clients are free to ignore any cards or actions returned.",MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-18,CRD clients **SHOULD** use the [configuration options](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#new-hook-configuration-mechanism) to instruct CRD servers to not even try to return responses if the client does not intend to display/process them.,SHOULD,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-19,"If Coverage Information is returned for these hooks, it **SHALL NOT** include messages indicating a need for [clinical](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-AdditionalDocumentation.html) or [administrative](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-AdditionalDocumentation.html) information, as such information is expected to be made available later in the process and therefore such guidance is not useful.",SHALL NOT,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-20,"The body of hook invocations **SHALL** conform to the [CRD CDSHooks Request logical model. Additionally, profiles are provided in a table for the hook sections below.",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-21,CRD clients **SHALL** ensure that data included in the hook invocation complies with the listed profiles.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-22,CRD servers **SHALL NOT** depend on data not covered by the identified profiles in order to return valid coverage-information responses.,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-23,CRD Servers **SHALL** handle unrecognized context elements by ignoring them.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-24,The 'context' field in invocations of the appointment-book hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDAppointmentBookContext.html),SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-25,CRD Servers **MAY** use the appointment-book hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-26,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the appointment-book hook.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-27,The 'context' field in invocations of the encounter-start hook **SHALL** conform to the logical model specified [here](http://hl7.org/fhir/tools/1.1.2/StructureDefinition-CDSHookEncounterStartContext.html),SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-28,CRD Servers **MAY** use the encounter-start hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-29,The 'context' field in invocations of the encounter-discharge hook **SHALL** conform to the logical model specified [here](http://hl7.org/fhir/tools/1.1.2/StructureDefinition-CDSHookEncounterDischargeContext.html),SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-30,"Coverage requirements **SHOULD** be limited only to those resources that are included in the `dispatchedOrders` context, though the content of other resources **SHOULD** also be considered before making recommendations about what additional actions are necessary.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-31,The 'context' field in invocations of the order-dispatch hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDOrderDispatchContext.html),SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-32,CRD Servers **MAY** use the order-dispatch hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-33,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-dispatch hook.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-34,"Coverage requirements **SHOULD** be limited only to those resources that are included in the `selections` context, though the content of other resources **SHOULD** also be considered before making recommendations about what additional actions are necessary.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-35,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-35,The 'context' field in invocations of the order-select hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDOrderSelectContext.html),SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-36,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-36,"Where CRD Clients have an appropriate workflow and data capture mechanism, the order-select hook **MAY** be used in scenarios that do not involve creating a true order.",MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-37,The 'context' field in invocations of the order-sign hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDOrderSignContext.html),SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,hook-38,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-38,CRD Servers **MAY** use the order-sign hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,hook-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-39,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-select hook.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,impl-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-1,Clients that suppress 'default presumption' coverage-information of messages **SHALL** mitigate the potential for misinterpretation in the event CRD is unavailable.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,impl-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-2,CRD servers **SHOULD** strive to achieve a minimum of 3-9s availability for their services and strive to provide at least some level of useful response to CRD clients even if some of their back-end systems are unavailable.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,impl-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-3,"Even if implemented using multiple components, there is still a requirement that the exchanges between the provider HIT (including any ePA coordinators) and the payer HIT (including any ePA coordinators) **SHALL** replicate all of the defined exchanges between provider and payer.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,impl-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-4,"In situations where CRD clients are aware of the likely billing codes at the time of ordering, they **MAY** send these codes as additional CodeableConcept.coding repetitions to assist in server processing.",MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,impl-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-5,"Where a CRD server has made inferences beyond what is explicit in the CRD request, the response **SHOULD** make clear what assumptions around billing codes, in/out-of-network, delivery location were made in providing the response.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,metric-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/metrics.html#ci-c-metric-1,"Each of these IGs recommends a set of metrics that **SHOULD** or **MAY** be collected by their respective implementations to facilitate the evaluation of adoption, functionality, processes, and improved outcomes.",SHOULD,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,ops-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/operational.html#ci-c-ops-1,"CRD clients and servers **SHOULD** support encounter-start and order-select, both to allow payer caching and to allow payers to return useful responses when possible (e.g. coverage expired, service not covered) with the limited information available in those hooks.",SHOULD,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-no-order.html#ci-c-prof-1,CRD Clients **SHALL** use either this Appointment without Order profile and/or the [with-order](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-with-order.html) to provide `appointments` context objects to CRD Servers when invoking the [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book) hook as well as to [resolve other references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to Appointment resources.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-with-order.html#ci-c-prof-2,CRD Clients **SHALL** use either this Appointment with Order and/or the [no-order](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-no-order.html) to provide `appointments` context objects to CRD Servers when invoking the [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book) hook as well as to [resolve other references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to Appointment resources.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-communicationrequest.html#ci-c-prof-3,CRD Clients SHALL use the CRD CommunicationRequest profile to resolve references to CommunicationRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-coverage.html#ci-c-prof-4,CRD Clients **SHALL** use the CRD Coverage profile to [resolve references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to insurance Coverage resources passed to CRD Servers.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-device.html#ci-c-prof-5,CRD Clients **SHALL** use the CRD Device profile to [resolve references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to Device resources passed to CRD Servers.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-devicerequest.html#ci-c-prof-6,CRD Clients SHALL use the CRD DeviceRequest profile to resolve references to DeviceRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-encounter.html#ci-c-prof-7,"CRD Clients SHALL use the CRD Encounter profile to resolve references to Encounter resources passed to CRD Servers, including encounterId context references.",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-location.html#ci-c-prof-8,CRD Clients **SHALL** use the CRD Location profile to [resolve references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to insurance Location resources passed to CRD Servers.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-medicationrequest.html#ci-c-prof-9,CRD Clients SHALL use the CRD MedicationRequest profile to resolve references to MedicationRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-nutritionorder.html#ci-c-prof-10,CRD Clients SHALL use CRD NutritionOrder profile to resolve references to NutritionOrder resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-servicerequest.html#ci-c-prof-11,CRD Clients SHALL use the CRD ServiceRequest profile to resolve references to ServiceRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-visionprescription.html#ci-c-prof-12,CRD Clients SHALL use the CRD VisionPrescription profile to resolve references to VisionPrescription resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-location.html#ci-c-prof-13,"If a Location is a fine-grained location such as a bed or room, the address **SHALL** be propagated from the higher-level location it is part of.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,prof-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-medicationrequest.html#ci-c-prof-14,"While the codes for the medication are expected to be drawn from RxNorm, EHRs **MAY** send additional coding repetions to communicate other code systems (e.g. HCPCS J codes).",MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,prof-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#ci-c-prof-15,CRD servers **SHOULD** start sending the ActReason codes in parallel with the CRD-specific codes once they are available to ease transition in future releases when the CRD value set will be deprecated and eventually retired.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-1,"The `Card.indicator` **SHOULD** be populated from the perspective of the clinical decision maker, not the payer",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-2,Most Coverage Requirements **SHOULD** be marked as 'info'.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-3,All `Card.suggestion` elements **SHALL** populate the Suggestion.uuid element.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-4,"The `Card.source.label` **SHALL** be populated with an insurer name that the user and patient are likely to recognize (i.e., the responsible insurer on the patient's insurance card), including in situations where coverage recommendations are being returned by a benefits manager or intermediary operating the CRD server on behalf of the payer.",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-5,"`Card.source.topic` **SHALL** be populated, and has an [extensible](http://www.hl7.org/fhir/terminologies.html#extensible) binding to the ValueSet [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html).",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-6,`Card.summary` **SHOULD** provide actionable information.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-7,`Card.detail` and/or external links **SHOULD** only be provided when coverage recommendations cannot be clearly provided in the 140-character limit of `Card.summary`.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-8,"`Card.detail` **SHOULD** provide graduated information, with critical information being provided in the first paragraph and less critical information towards the end of the page.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-9,"`Card.detail` **SHOULD** provide enough context that a user can determine whether it is worth their time to launch an app or follow an external link, ideally providing a sense of where to look for and how to use whatever link or app they launch in the specific context of the order they are making.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-10,"While links are permitted in the markdown content of `Card.detail`, support for this is not universal, so links **SHOULD** also be provided in `[Card.link](http://Card.link)`.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-11,"CRD client systems might not support all card capabilities, therefore card options **SHOULD** provide sufficient information for a user to perform record changes manually if automated support is not available.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-12,"Where [systemActions](http://cds-hooks.hl7.org/2026Jan/index.html#system-action) are used, CRD servers **SHOULD NOT** return equivalent information in a card for user display.",SHOULD NOT,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-13,All CRD responses **SHALL** comply with the general profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponseBase.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-14,Conformant CRD clients and services **SHALL** support the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#coverage-information-response-type) response type.,SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-15,Conformant CRD clients and services **SHOULD** support the additional (non-coverage information) types defined by this guide.,SHOULD,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-16,CRD servers that provide decision support for domains outside of coverage and/or documentation requirements **SHOULD** take reasonable steps to check that the CRD client does not have the information within its store that would allow it to detect the issue itself.,SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-17,"CRD servers **SHALL NOT** use ""External Reference"" cards to direct users to a portal for the purpose of initiating prior authorization or determining coverage.",SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-18,The card **SHALL** have at least one `[Card.link](http://Card.link)`.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-19,"The `Link.type` **SHALL** have a type of ""absolute"".",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-20,"When reasonable, an ""External Reference"" card **SHOULD** contain a summary of the actionable information from the external reference in the `detail` element.",SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-21,"As much as technically possible, links provided **SHOULD** be 'deep' links that take the user to the specific place in the documentation relevant to the current hook context to minimize provider reading and navigation time.",SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-22,External Reference responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-externalReference.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-23,CRD servers **SHALL NOT** use Instructions Response cards to direct users to a portal for the purpose of initiating prior authorization or determining coverage. Use the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#coverage-information-response-type) response instead.,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-24,Instructions responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-instructions.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-25,"Regardless of the content, this ""Coverage Information"" response type **SHALL NOT** use a card.",SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-26,"CRD servers **SHALL** support supplying coverage information for all primary hooks: order-sign, order-dispatch, and appointment-book.",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-27,CRD servers **MAY** support supplying coverage information for all other (non-primary) hooks.,MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-28,CRD servers **SHALL** supply coverage information for all hooks where they support it unless the EHR sends a configuration option asking them not to.,SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-29,"If coverage information is evaluated, a system action **SHALL** be returned for each in-scope request resource unless that request resource already has a coverage-information extension, and the CRD server has no new information to add.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-30,Such qualifiers around when the coverage assertion is considered valid **SHALL** be included as part of the annotation.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-31,"If a CRD client submits a claim related to an order for which it has received a coverage-information extension for the coverage type associated with the claim, that claim **SHALL** include the `coverage-assertion-id` in the form of a FHIR ServiceRequest or other Request resource with an embedded coverage-information extension as an attachment to the X12 837 submission and, if applicable, the satisfied-pa-id in the X12 837 REF-Prior Authorization segment.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-32,"If multiple extension repetitions of the coverage-information extension are present, all repetitions referencing differing insurance (coverage-information.coverage) **SHALL** have distinct coverage-assertion-ids and satisfied-pa-ids, if present.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-33,"Where multiple repetitions apply to the same coverage, they **MAY** have the same coverage-assertion-ids and satisfied-pa-ids (if present).",MAY,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-34,Systems **MAY** make CRD calls to servers related to orders even if there is already a coverage assertion recorded on the order.,MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-35,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-35,"However, CRD servers **SHALL NOT** send a `systemAction` to update the order unless something is new or changed.",SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-36,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-36,CRD servers **SHOULD** take into account the previous decision in deciding how much processing is necessary before returning a response.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-37,"When returning a `systemAction` to update a resource with the ""Coverage Information"" response type, the resource content **SHALL NOT** make changes to any data elements other than adding or modifying coverage-information extensions.",SHALL NOT,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-38,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-38,"If a *coverage-information* extension indicates the need to collect additional information (via 'doc-needed'), the extension **SHOULD** include a reference to the questionnaire(s) to be completed.",SHOULD,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-39,CRD Servers **SHOULD** access information via the FHIR Rest API as part of CRD and only fall back to data capture via DTR when computable access is not possible.,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-40,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-40,"When a *coverage-information* response type indicates that additional clinical or patient documentation is needed and the CRD client supports DTR, CRD clients **SHALL** ensure that clinical users have an opportunity to launch their DTR solution as part of the current workflow.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-41,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-41,CRD clients **SHOULD** allow clinical users to have an opportunity to launch their DTR solution but **SHOULD** make it clear that the information to be captured is non-clinical.,SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-42,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-42,The CRD server **SHOULD** either prompt for the additional needed information using DTR or return a coverage-information extension indicating that the patient is not covered with a reason indicating the issue (e.g. the member could not be found/resolved).,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-43,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-43,"If the CRD server encounters technical issues that prevent it from determining a coverage, prior auth, or documentation requirement response (e.g. due to internal communication issues, authorization failure, temporary unavailability of the CRD client's FHIR API, etc.), it **SHALL** indicate ""indeterminate"" in the appropriate element with a reason code of [technical](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld) and additional details in the reason.text.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-44,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-44,"If the CRD server is unable to resolve the patient for a reason other than technology failure, the Coverage Information **SHALL** indicate ""not-covered"" in 'coverage' with a reason code of [no-member-found](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld).",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-45,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-45,"If the CRD server is able to resolve the patient but they do not have active coverage or cannot resolve to a single coverage, the Coverage Information **SHALL** indicate ""not-covered"" with a reason of either [coverage-not-found](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld) or [no-active-coverage](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld), as appropriate.",SHALL,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-46,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-46,"If a system action containing a coverage-information extension is returned, the CRD client **SHALL** retain that coverage-information extension and expose it as part of the Request resource in all subsequent communications with that payer, including communications made using DTR and PAS.",SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-47,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-47,"When using the ""Coverage Information"" response type, the proposed order or appointment being submitted for update SHALL comply with the required profiles",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-48,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-48,"CRD clients and servers **SHALL** support the new CDS Hooks system action functionality to cause annotations to automatically be stored on the relevant request, appointment, etc. without any user intervention.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-49,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-49,"In this case, the discrete information propagated into the order extension **SHALL** be available to the user for viewing. However, this might be managed with icons, flyovers, or alternate mechanisms than traditional CDS Hooks card rendering.",SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-50,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-50,"CRD clients **MAY** be configured to not execute system actions under some circumstances, for example if the order has been cancelled or abandoned.",MAY,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-51,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-51,"Where CRD servers need data that was not transmitted, they **SHOULD** attempt to infer values from elements that are present.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-52,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-52,Coverage Information responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-coverageInformation.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-53,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-53,"Each suggestion **SHOULD** contain either a single ""update"" action to revise the existing proposed order; or a ""delete"" action for the current proposed order and a ""create"" action for the new proposed order.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-54,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-54,"The choice of ""update"" vs. ""delete + create"" **SHOULD** be based on how significant the change is and how relevant the other decision support on the original request will still be.",SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-55,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-55,"When using the ""Propose Alternate Request"" response type, the proposed orders (and any associated resources) SHALL comply with the required profiles.",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-56,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-56,Alternate Request responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-alternateRequest.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-57,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-57,"When using the ""Identify Additional Orders"" response type, the proposed orders and any associated resources SHALL comply with the required profiles",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-58,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-58,Additional Orders responses **SHALL** comply with the logical model profile= found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-additionalOrders.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-59,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-59,The Request Form Completion response type **SHALL NOT** be used in place of DTR,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-60,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-60,"Instead of using a card for ""Request Form Completion"", CRD servers **MAY** opt to use a [systemAction](http://cds-hooks.hl7.org/2026Jan/index.html#system-action).",MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-61,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-61,CRD clients supporting the Request Form Completion response type **SHALL** support both the card and systemAction approach.,SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-62,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-62,"When using the ""Request Form Completion"" response type, the resources in the card or system action SHALL comply with the required profiles",SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-63,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-63,CRD servers **SHOULD** use questionnaires that are compliant with either the [Argonaut questionnaire profiles](https://github.com/argonautproject/questionnaire) (for forms to be completed within the CRD client) or the [Structured Data Capture (SDC) profiles](http://hl7.org/fhir/uv/sdc/index.html) (for more sophisticated forms to be created within a SMART on FHIR app or through an external service).,SHOULD,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-64,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-64,CRD clients **SHOULD** retain a copy of all completed forms for future reference.,SHOULD,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-65,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-65,Form Completion responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-formCompletion.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-66,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-66,"Instead of using a card for ""Update Coverage Records"", CRD servers **MAY** opt to use a [systemAction](http://cds-hooks.hl7.org/2026Jan/index.html#system-action) instead.",MAY,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-67,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-67,CRD clients supporting the Update Coverage Records response type **SHALL** support both the card and system action approach.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-68,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-68,"If receiving a system action, a CRD client **MAY** opt to place the updated record in a holding area for human review rather than directly modifying their source of truth.",MAY,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-69,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-69,This Update Coverage Records capability **SHALL NOT** be used in situations where regulation dictates the use of the X12 functionality.,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-70,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-70,"If returning a card rather than a system action, the ""Update Coverage Records"" response type **SHOULD NOT** be returned for hook types that are likely to be triggered by clinical users rather than administrative staff. Cards of this type would be appropriate for hooks such as encounter-start or appointment-book but would not be appropriate for order-select or order-sign.",SHOULD NOT,CRD Server,,true,, +hl7.fhir.us.davinci-crd_2.2.1,resp-71,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-71,Adjust Coverage responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-adjustCoverage.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,resp-72,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-72,Launch SMART responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-launchSMART.html).,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-1,Implementers SHALL adhere to inherited security and privacy rules,SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-2,"As per the CDS Hooks specification, communications between CRD clients and CRD servers **SHALL** use TLS.",SHALL,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-3,CRD servers and CRD clients **SHOULD** enforce a minimum version and other TLS configuration requirements based on [HRex rules](http://hl7.org/fhir/us/davinci-hrex/1.2.0/security.html#exchange-security) for PHI exchange.,SHOULD,"CRD Client, CRD Server",,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-4,CRD clients that support the Launch SMART Application Response Type **SHALL** support running applications that adhere to the SMART on FHIR [confidential app](https://hl7.org/fhir/smart-app-launch/STU2.2/app-launch.html#support-for-public-and-confidential-apps) profile.,SHALL,CRD Client,,true,, +hl7.fhir.us.davinci-crd_2.2.1,sec-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-5,CRD servers **SHALL** use information received solely for coverage determination and decision support purposes.,SHALL,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-6,Servers **SHALL NOT** retain data received over the CRD interfaces for any purpose other than audit or providing context for form completion using DTR.,SHALL NOT,CRD Server,,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-7,CRD clients **SHALL** ensure that the resource identifiers exposed over the CRD interface are distinct from and have no determinable relationship with any business identifiers associated with those records.,SHALL,CRD Client,,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-8,CRD client organizations **SHOULD** audit access to check for reasonableness and appropriateness.,SHOULD,CRD Client Organization,,false,, +hl7.fhir.us.davinci-crd_2.2.1,sec-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-9,Access tokens provided as part of CRD calls **SHOULD NOT** be forwarded to systems that are not managed by the same organization or have business associate agreements that allow centralized audit of access.,SHOULD NOT,CRD Client Organization,,false,, diff --git a/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv b/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv index f5dc557a..045f7e4d 100644 --- a/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv +++ b/lib/davinci_crd_test_kit/requirements/generated/crd_client_requirements_coverage.csv @@ -1,4 +1,4 @@ -Req Set,ID,URL,Requirement,Conformance,Actors,Conditionality,Not Tested Reason,Not Tested Details,Da Vinci CRD Client Test Suite Short ID(s),Da Vinci CRD Client Test Suite Full ID(s) +Req Set,ID,URL,Requirement,Conformance,Actors,Conditionality,Not Tested Reason,Not Tested Details,Da Vinci CRD Client v2.0.1 Test Suite Short ID(s),Da Vinci CRD Client v2.0.1 Test Suite Full ID(s) hl7.fhir.us.davinci-crd_2.0.1,1,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#foundational-requirements,"Future versions of this specification will evolve based on implementer feedback. Therefore, CRD servers and CRD clients MAY mutually agree to support additional hooks, additional card patterns, additional resources, additional extensions, etc. not found in this specification.",MAY,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,2,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#mustsupport,"For CRD clients, If the client maintains the data element and surfaces it to users, then it SHALL be exposed in their FHIR interface when the data exists and privacy constraints permit",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,20,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#performance,"If a CRD service exceeds the allocated time window for a hook (i.e., for those circumstances that fall outside the 90% expectation), CRD clients SHOULD establish a time-out process that ensures users are not blocked from proceeding with their business flow.",SHOULD,Client,,,,"","" @@ -25,7 +25,7 @@ hl7.fhir.us.davinci-crd_2.0.1,43,https://hl7.org/fhir/us/davinci-crd/STU2/founda -Requested performing Organization (if specified) -Requested Location (if specified) -Associated Medication (if any) --Associated Device (if any)",SHALL,Client,,,,"1.2.1.10, 1.2.2.10, 1.2.3.10, 1.2.4.10, 1.2.5.10, 1.2.6.10, 2.2","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_fetched_data, crd_client-crd_client_fhir_api-Group02" +-Associated Device (if any)",SHALL,Client,,,,"1.2.1.3.05, 1.2.2.3.05, 1.2.3.3.05, 1.2.4.3.05, 1.2.5.3.05, 1.2.6.3.05, 2.2","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_fhir_api-Group02" hl7.fhir.us.davinci-crd_2.0.1,44,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch,"In addition to the [base prefetch capabilities](https://cds-hooks.hl7.org/2.0/#prefetch-template) defined in the CDS Hooks specification, systems that support prefetch SHOULD support the [additional prefetch capabilities](https://hl7.org/fhir/us/davinci-crd/STU2/deviations.html#additional-prefetch-capabilities) defined in this specification.",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,45,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch,"'standard' prefetch queries ... SHOULD be supported for [Appointment]: ... @@ -81,19 +81,19 @@ hl7.fhir.us.davinci-crd_2.0.1,51,https://hl7.org/fhir/us/davinci-crd/STU2/founda &_include:iterate=PractitionerRole:practitioner```",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,52,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch,CRD clients MAY support only the resources needed to implement the relevant CDS Hooks and order types.,MAY,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,53,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch,CRD client implementations SHOULD NOT expect standardized prefetch key names.,SHOULD NOT,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,54,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch,CRD clients supporting prefetch SHALL inspect the CDS Hooks discovery endpoint to determine exact prefetch key names and queries.,SHALL,Client,,,,"1.2.1.09, 1.2.2.09, 1.2.3.09, 1.2.4.09, 1.2.5.09, 1.2.6.09","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_prefetch" +hl7.fhir.us.davinci-crd_2.0.1,54,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch,CRD clients supporting prefetch SHALL inspect the CDS Hooks discovery endpoint to determine exact prefetch key names and queries.,SHALL,Client,,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_prefetch" hl7.fhir.us.davinci-crd_2.0.1,55,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#prefetch,CRD clients SHOULD limit the coverages provided to just those relevant to the CRD service.,SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,58,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#query-notes,Conformant CRD clients SHOULD be able to perform [respond to] all the queries defined here [[FHIR Resource Access](https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#fhir-resource-access)],SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,59,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#query-notes,"Conformant CRD clients ... where needed, SHOULD implement interfaces to [_include](http://hl7.org/fhir/R4/search.html#include) resources not available in the client's database.",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,61,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#query-notes,"When full prefetch as defined here is not supported, CRD clients SHOULD, at minimum, support the batch query syntax shown [above]( https://build.fhir.org/ig/HL7/davinci-crd/foundation.html#fhir-resource-access)",SHOULD,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,64,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"CRD Clients conforming with this specification [using SMART on FHIR apps to invoke coverage requirements discovery from CRD servers for ""what if"" scenarios] SHALL support the SMART on FHIR interface,",SHALL,Client,,,,2.1,crd_client-crd_client_fhir_api-Group01 -hl7.fhir.us.davinci-crd_2.0.1,65,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"CRD clients conforming with this [using SMART on FHIR apps to invoke coverage requirements discovery from CRD servers for ""what if"" scenarios] specification … SHALL allow launching of SMART apps from within their application",SHALL,Client,,,,2.1,crd_client-crd_client_fhir_api-Group01 -hl7.fhir.us.davinci-crd_2.0.1,66,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"CRD clients conforming with this [using SMART on FHIR apps to invoke coverage requirements discovery from CRD servers for ""what if"" scenarios] specification ... SHALL be capable of providing the SMART app access to information it exposes to CRD servers using the CDS Hooks interface.",SHALL,Client,,,,2.1,crd_client-crd_client_fhir_api-Group01 +hl7.fhir.us.davinci-crd_2.0.1,64,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"CRD Clients conforming with this specification [using SMART on FHIR apps to invoke coverage requirements discovery from CRD servers for ""what if"" scenarios] SHALL support the SMART on FHIR interface,",SHALL,Client,,,,2.1,crd_client-crd_v201_client_fhir_api-Group01 +hl7.fhir.us.davinci-crd_2.0.1,65,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"CRD clients conforming with this [using SMART on FHIR apps to invoke coverage requirements discovery from CRD servers for ""what if"" scenarios] specification … SHALL allow launching of SMART apps from within their application",SHALL,Client,,,,2.1,crd_client-crd_v201_client_fhir_api-Group01 +hl7.fhir.us.davinci-crd_2.0.1,66,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"CRD clients conforming with this [using SMART on FHIR apps to invoke coverage requirements discovery from CRD servers for ""what if"" scenarios] specification ... SHALL be capable of providing the SMART app access to information it exposes to CRD servers using the CDS Hooks interface.",SHALL,Client,,,,2.1,crd_client-crd_v201_client_fhir_api-Group01 hl7.fhir.us.davinci-crd_2.0.1,67,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"The app/CRD client MAY choose to use configuration options to control what types of cards are of interest [when using SMART on FHIR apps to invoke coverage requirements discovery from CRD servers for ""what if"" scenarios]",MAY,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,68,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"In the specific case of order-based hooks, ""what if"" SHOULD use the Order Sign hook",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,69,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"In the specific case of order-based hooks, ""what if"" ... SHALL use the configuration option that prevents the return of an unsolicited determination",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,70,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#smart-on-fhir-hook-invocation,"In the specific case of order-based hooks, ""what if"" ... MAY use configuration options to prevent the return of other irrelevant types of cards (e.g., duplicate therapy).",MAY,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,71,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#additional-considerations,"When CRD clients pass resources to a CRD server as part of context, the resources SHALL have an ID",SHALL,Client,,,,"1.2.1.08, 1.2.4.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,71,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#additional-considerations,"When CRD clients pass resources to a CRD server as part of context, the resources SHALL have an ID",SHALL,Client,,,,"1.2.1.3.03, 1.2.4.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" hl7.fhir.us.davinci-crd_2.0.1,72,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#additional-considerations,"When CRD clients pass resources to a CRD server as part of context, the resources ... SHALL be usable as a target for references in resources manipulated by CDS Hook actions and/or by SMART apps.",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,75,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#additional-considerations,"Therefore, in addition to any logging performed for security purposes, ... CRD Clients ... SHALL retain logs of all CRD-related hook invocations and their responses for access in the event of a dispute.",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,78,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#additional-considerations,Organizations SHALL have processes to ensure logs can be accessed by appropriate authorized users to help resolve discrepancies or issues in a timely manner.,SHALL,"Client,Server",,,,"","" @@ -107,10 +107,10 @@ hl7.fhir.us.davinci-crd_2.0.1,85,https://hl7.org/fhir/us/davinci-crd/STU2/securi hl7.fhir.us.davinci-crd_2.0.1,86,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Implementers SHALL adhere to any security and privacy rules defined by: … HRex: [Privacy & Security](http://hl7.org/fhir/us/davinci-hrex/STU1/security.html),SHALL,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,87,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Implementers SHALL adhere to any security and privacy rules defined by: … CDS Hooks: [Security & Safety](https://cds-hooks.hl7.org/2.0/#security-and-safety),SHALL,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,88,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Implementers SHALL adhere to any security and privacy rules defined by: … SMART on FHIR: [SMART App Launch](http://www.hl7.org/fhir/smart-app-launch),SHALL,"Client,Server",,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,89,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,"As per the CDS Hook specification, communications between CRD Clients and CRD Servers SHALL use TLS.",SHALL,"Client,Server",,,,2.1,crd_client-crd_client_fhir_api-Group01 +hl7.fhir.us.davinci-crd_2.0.1,89,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,"As per the CDS Hook specification, communications between CRD Clients and CRD Servers SHALL use TLS.",SHALL,"Client,Server",,,,2.1,crd_client-crd_v201_client_fhir_api-Group01 hl7.fhir.us.davinci-crd_2.0.1,90,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Mutual TLS is not required by this specification but is permitted.,MAY,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,91,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,CRD Servers and CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based on [HRex rules for PHI exchange](https://hl7.org/fhir/us/davinci-hrex/STU1/security.html#exchange-of-phi-for-treatment-payment-operations-tpo-as-defined),SHOULD,"Client,Server",,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,92,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,CRD Clients SHALL support running applications that adhere to the SMART on FHIR [confidential app](http://www.hl7.org/fhir/smart-app-launch#support-for-public-and-confidential-apps) profile.,SHALL,Client,,,,2.1,crd_client-crd_client_fhir_api-Group01 +hl7.fhir.us.davinci-crd_2.0.1,92,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,CRD Clients SHALL support running applications that adhere to the SMART on FHIR [confidential app](http://www.hl7.org/fhir/smart-app-launch#support-for-public-and-confidential-apps) profile.,SHALL,Client,,,,2.1,crd_client-crd_v201_client_fhir_api-Group01 hl7.fhir.us.davinci-crd_2.0.1,95,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,"CRD Clients are the final arbiters of what data can or cannot be shared with CRD Servers and SHOULD filter or withhold any resources or data elements necessary to support their obligations as health data custodians, including ... patient consent-based restrictions.",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,96,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,"CRD Clients are the final arbiters of what data can or cannot be shared with CRD Servers and SHOULD filter or withhold any resources or data elements necessary to support their obligations as health data custodians, including legal...restrictions.",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,97,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,"CRD Clients are the final arbiters of what data can or cannot be shared with CRD Servers and SHOULD filter or withhold any resources or data elements necessary to support their obligations as health data custodians, including ... policy restrictions.",SHOULD,Client,,,,"","" @@ -141,48 +141,48 @@ hl7.fhir.us.davinci-crd_2.0.1,145,https://hl7.org/fhir/us/davinci-crd/STU2/devia hl7.fhir.us.davinci-crd_2.0.1,146,https://hl7.org/fhir/us/davinci-crd/STU2/deviations.html#controlling-hook-invocation,"Where the patient has multiple active coverages that the CRD client deems appropriate to call the respective CRD servers for, the CRD client SHALL invoke all CRD server calls in parallel and display results simultaneously to ensure timely response to user action.",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,147,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,the `order-select` hook SHOULD fire whenever a user of a CRD Client creates a new order or referral.,SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,148,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"CRD Clients conforming to this implementation guide SHALL be able to determine the correct payer CRD Service to use for each request. [appointment-book, encounter-start, encounter-discharge, order-dispatch, order-select, and order-sign]",SHALL,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,149,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"CRD Clients conforming to this implementation guide SHALL support at least one of the hooks [appointment-book, encounter-start, encounter-discharge, order-dispatch, order-select, and order-sign]",SHALL,Client,,,,1.2,crd_client-crd_client_hook_invocation-crd_client_hooks -hl7.fhir.us.davinci-crd_2.0.1,150,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"CRD Clients conforming to this implementation guide SHALL support ... (for order-centric hooks), at least one of the order resource types [CommunicationRequest, DeviceRequest, MedicationRequest, ServiceRequest, NutritionOrder, VisionPrescription]",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08, 2.2.2, 2.2.5, 2.2.11, 2.2.12, 2.2.14, 2.2.17","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context, crd_client-crd_client_fhir_api-Group02-Group02, crd_client-crd_client_fhir_api-Group02-Group05, crd_client-crd_client_fhir_api-Group02-Group11, crd_client-crd_client_fhir_api-Group02-Group12, crd_client-crd_client_fhir_api-Group02-Group14, crd_client-crd_client_fhir_api-Group02-Group17" +hl7.fhir.us.davinci-crd_2.0.1,149,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"CRD Clients conforming to this implementation guide SHALL support at least one of the hooks [appointment-book, encounter-start, encounter-discharge, order-dispatch, order-select, and order-sign]",SHALL,Client,,,,1.2,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks +hl7.fhir.us.davinci-crd_2.0.1,150,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"CRD Clients conforming to this implementation guide SHALL support ... (for order-centric hooks), at least one of the order resource types [CommunicationRequest, DeviceRequest, MedicationRequest, ServiceRequest, NutritionOrder, VisionPrescription]",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03, 2.2.2, 2.2.5, 2.2.11, 2.2.12, 2.2.14, 2.2.17","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_fhir_api-Group02-Group02, crd_client-crd_v201_client_fhir_api-Group02-Group05, crd_client-crd_v201_client_fhir_api-Group02-Group11, crd_client-crd_v201_client_fhir_api-Group02-Group12, crd_client-crd_v201_client_fhir_api-Group02-Group14, crd_client-crd_v201_client_fhir_api-Group02-Group17" hl7.fhir.us.davinci-crd_2.0.1,151,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"CRD Clients conforming to this implementation guide ... SHOULD support all [CommunicationRequest, DeviceRequest, MedicationRequest, ServiceRequest, NutritionOrder, VisionPrescription] that apply to the context of their system.",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,154,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,CRD Clients … MAY choose to support additional hooks available in the registry on the [CDS Hooks continuous integration build](https://cds-hooks.org/) or custom hooks defined elsewhere.,MAY,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,156,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,[Clients who choose to support additional hooks] SHOULD adhere to the conformance expectations defined in this specification for any hooks listed here.,SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,166,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,(CRD clients SHOULD use the configuration options to instruct CRD servers to not even try to return cards if they do not intend to display/process them.),SHOULD,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,171,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[Clients SHALL support] version 1.0 of the [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.,SHALL,Client,,,,1.2.1.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request -hl7.fhir.us.davinci-crd_2.0.1,172,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"This [appointment-book] hook would be triggered when the user of a CRD Client books a future appointment for a patient with themselves, with someone else within their organization, or with another organization. (Note that whether the CRD Client will create an appointment - triggering the `appointment-book` hook - or a ServiceRequest - triggering an `order-select` or `order-sign` hook - can vary depending on the service being booked and the organizations involved.)",SHALL,Client,,,,1.2.1,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book -hl7.fhir.us.davinci-crd_2.0.1,177,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the userId … are … [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) [or] [us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html),SHALL,Client,,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,178,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the … patientId … are … [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,179,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the … encounterId … are … [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,180,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the … `appointments` … are … [profile-appointment](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-appointment.html),SHALL,Client,,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,183,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"CRD clients... SHALL, at minimum, support ... processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.",SHALL,Client,,,,1.2.1.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request -hl7.fhir.us.davinci-crd_2.0.1,186,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[Clients SHALL support] version 1.0 of the [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start/))],SHALL,Client,,,,1.2.2.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request -hl7.fhir.us.davinci-crd_2.0.1,187,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,"This [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start/)] hook would be triggered when a patient is admitted, a patient arrives for an out-patient visit, and/or when a provider first engages with a patient during an encounter.",SHALL,Client,,,,1.2.2,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start -hl7.fhir.us.davinci-crd_2.0.1,192,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[For the enounter-start hook t]he profiles expected to be used for the resources resolved to by the userId … are … [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) [or] [us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html),SHALL,Client,,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,193,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[For the enounter-start hook t]he profiles expected to be used for the resources resolved to by the … patientId … are … [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,194,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[For the enounter-start hook t]he profiles expected to be used for the resources resolved to by the … encounterId … are … [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,197,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[Clients SHALL support] version 1.0 of the [[encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/))],SHALL,Client,,,,1.2.3.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request +hl7.fhir.us.davinci-crd_2.0.1,171,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[Clients SHALL support] version 1.0 of the [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.,SHALL,Client,,,,1.2.1.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group01-crd_v201_appointment_book_request +hl7.fhir.us.davinci-crd_2.0.1,172,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"This [appointment-book] hook would be triggered when the user of a CRD Client books a future appointment for a patient with themselves, with someone else within their organization, or with another organization. (Note that whether the CRD Client will create an appointment - triggering the `appointment-book` hook - or a ServiceRequest - triggering an `order-select` or `order-sign` hook - can vary depending on the service being booked and the organizations involved.)",SHALL,Client,,,,1.2.1,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book +hl7.fhir.us.davinci-crd_2.0.1,177,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the userId … are … [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) [or] [us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html),SHALL,Client,,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,178,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the … patientId … are … [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,179,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the … encounterId … are … [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,180,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[For the appointment-book hook t]he profiles expected to be used for the resources resolved to by the … `appointments` … are … [profile-appointment](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-appointment.html),SHALL,Client,,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,183,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"CRD clients... SHALL, at minimum, support ... processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.",SHALL,Client,,,,1.2.1.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group01-crd_v201_appointment_book_request +hl7.fhir.us.davinci-crd_2.0.1,186,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[Clients SHALL support] version 1.0 of the [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start/))],SHALL,Client,,,,1.2.2.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group01-crd_v201_encounter_start_request +hl7.fhir.us.davinci-crd_2.0.1,187,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,"This [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start/)] hook would be triggered when a patient is admitted, a patient arrives for an out-patient visit, and/or when a provider first engages with a patient during an encounter.",SHALL,Client,,,,1.2.2,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start +hl7.fhir.us.davinci-crd_2.0.1,192,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[For the enounter-start hook t]he profiles expected to be used for the resources resolved to by the userId … are … [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) [or] [us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html),SHALL,Client,,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,193,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[For the enounter-start hook t]he profiles expected to be used for the resources resolved to by the … patientId … are … [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,194,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[For the enounter-start hook t]he profiles expected to be used for the resources resolved to by the … encounterId … are … [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,197,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[Clients SHALL support] version 1.0 of the [[encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/))],SHALL,Client,,,,1.2.3.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group01-crd_v201_encounter_discharge_request hl7.fhir.us.davinci-crd_2.0.1,199,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,"[In response to an [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook call, [clients should v]erify that documentation requirements for the services performed have been met to ensure the services provided can be reimbursed",SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,200,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,"[In response to an [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook call, [clients should e]nsure that required follow-up planning is complete and appropriate transfer of care has been arranged, particularly for accountable care models",SHOULD,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,201,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[for the [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook t]he profiles expected to be used for the resources resolved to by the userId … are … [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) [or] [us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html),SHALL,Client,,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,202,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[for the [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook t]he profiles expected to be used for the resources resolved to by the … patientId … are … [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,203,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[for the [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook t]he profiles expected to be used for the resources resolved to by the … encounterId … are … [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,205,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,[Clients SHALL support] version 1.0 of the [[order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/))],SHALL,Client,,,,1.2.5.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request -hl7.fhir.us.davinci-crd_2.0.1,207,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,"CRD clients and servers SHALL, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[order-dispatch](order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/)] hook",SHALL,"Client,Server",,,,1.2.5.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request -hl7.fhir.us.davinci-crd_2.0.1,209,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[Clients SHALL support] version 1.0 of the [[order-select](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-select.html))],SHALL,Client,,,,1.2.4.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request -hl7.fhir.us.davinci-crd_2.0.1,212,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[For the [order-select](https://cds-hooks.hl7.org/hooks/order-select.html) hook] the profiles expected to be used for the resources resolved to by the `patientId` [are] [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,213,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[For the [order-select](https://cds-hooks.hl7.org/hooks/order-select.html) hook] the profiles expected to be used for the resources resolved to by the … `encounterId` [are] [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,214,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,"[for the [order-select](https://cds-hooks.hl7.org/hooks/order-select.html) hook] The profiles expected to be used for the resources resolved to by the ... `draftOrders` context element [are] [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html), [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html), [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html), [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html), [and] [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html)",SHALL,Client,,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,215,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,"While this [order-select](https://cds-hooks.hl7.org/hooks/order-select.html)] hook does not explicitly list PractitionerRole [([us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html)) in addition to [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html)] as an expected resource type for userId, it is not prohibited and is included to allow linking the user to a Practitioner in a specific role acting on behalf of a specific Organization.",SHALL,Client,,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,201,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[for the [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook t]he profiles expected to be used for the resources resolved to by the userId … are … [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html) [or] [us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html),SHALL,Client,,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,202,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[for the [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook t]he profiles expected to be used for the resources resolved to by the … patientId … are … [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,203,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[for the [encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/) hook t]he profiles expected to be used for the resources resolved to by the … encounterId … are … [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,205,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,[Clients SHALL support] version 1.0 of the [[order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/))],SHALL,Client,,,,1.2.5.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group01-crd_v201_order_dispatch_request +hl7.fhir.us.davinci-crd_2.0.1,207,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,"CRD clients and servers SHALL, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[order-dispatch](order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/)] hook",SHALL,"Client,Server",,,,1.2.5.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group01-crd_v201_order_dispatch_request +hl7.fhir.us.davinci-crd_2.0.1,209,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[Clients SHALL support] version 1.0 of the [[order-select](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-select.html))],SHALL,Client,,,,1.2.4.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group01-crd_v201_order_select_request +hl7.fhir.us.davinci-crd_2.0.1,212,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[For the [order-select](https://cds-hooks.hl7.org/hooks/order-select.html) hook] the profiles expected to be used for the resources resolved to by the `patientId` [are] [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html),SHALL,Client,,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,213,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[For the [order-select](https://cds-hooks.hl7.org/hooks/order-select.html) hook] the profiles expected to be used for the resources resolved to by the … `encounterId` [are] [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html),SHALL,Client,,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,214,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,"[for the [order-select](https://cds-hooks.hl7.org/hooks/order-select.html) hook] The profiles expected to be used for the resources resolved to by the ... `draftOrders` context element [are] [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html), [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html), [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html), [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html), [and] [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html)",SHALL,Client,,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,215,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,"While this [order-select](https://cds-hooks.hl7.org/hooks/order-select.html)] hook does not explicitly list PractitionerRole [([us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html)) in addition to [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html)] as an expected resource type for userId, it is not prohibited and is included to allow linking the user to a Practitioner in a specific role acting on behalf of a specific Organization.",SHALL,Client,,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context hl7.fhir.us.davinci-crd_2.0.1,216,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,This [[order-select](https://cds-hooks.hl7.org/hooks/order-select.html)] hook MAY be used in scenarios that don’t involve creating a true order,MAY,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,218,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,[Clients SHALL support] version 1.1 of the [[order-sign](https://cds-hooks.org/hooks/order-sign/2020May/order-sign)] Hook [([published v1.0 link (v1.1.0 in the change log)](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html))],SHALL,Client,,,,1.2.6.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request -hl7.fhir.us.davinci-crd_2.0.1,220,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: the profiles expected to be used for the resources resolved to by the `patientId`are [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html)],SHALL,Client,,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,221,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: the profiles expected to be used for the resources resolved to by the … `encounterId` are [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html)],SHALL,Client,,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,222,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: The profiles expected to be used for the resources resolved to by the ... `draftOrders` context element [are] [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html), [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html), [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html), [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html), [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html)]",SHALL,Client,,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,223,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: while this hook does not explicitly list PractitionerRole [([us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html)) in addition to [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html)] as an expected resource type for userId, it is not prohibited and is included to allow linking the user to a Practitioner in a specific role acting on behalf of a specific Organization.]",SHALL,Client,,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -hl7.fhir.us.davinci-crd_2.0.1,225,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"CRD clients ... SHALL, at minimum, support … processing the Coverage Information system action for all invocations of this [[order-sign hook](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)] hook.",SHALL,Client,,,,1.2.6.01,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request +hl7.fhir.us.davinci-crd_2.0.1,218,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,[Clients SHALL support] version 1.1 of the [[order-sign](https://cds-hooks.org/hooks/order-sign/2020May/order-sign)] Hook [([published v1.0 link (v1.1.0 in the change log)](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html))],SHALL,Client,,,,1.2.6.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group01-crd_v201_order_sign_request +hl7.fhir.us.davinci-crd_2.0.1,220,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: the profiles expected to be used for the resources resolved to by the `patientId`are [profile-patient](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-patient.html)],SHALL,Client,,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,221,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: the profiles expected to be used for the resources resolved to by the … `encounterId` are [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html)],SHALL,Client,,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,222,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: The profiles expected to be used for the resources resolved to by the ... `draftOrders` context element [are] [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html), [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html), [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html), [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html), [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html)]",SHALL,Client,,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,223,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"Use and profiles for [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) also apply to `order-sign` [([link](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)) including: while this hook does not explicitly list PractitionerRole [([us-core-practitionerrole](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-practitionerrole.html)) in addition to [profile-practitioner](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-practitioner.html)] as an expected resource type for userId, it is not prohibited and is included to allow linking the user to a Practitioner in a specific role acting on behalf of a specific Organization.]",SHALL,Client,,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +hl7.fhir.us.davinci-crd_2.0.1,225,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"CRD clients ... SHALL, at minimum, support … processing the Coverage Information system action for all invocations of this [[order-sign hook](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)] hook.",SHALL,Client,,,,1.2.6.1.01,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group01-crd_v201_order_sign_request hl7.fhir.us.davinci-crd_2.0.1,242,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#cards-profiles,It is the responsibility of the CRD Client to determine how best to present the results of the newly created or revised records.,SHOULD,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,243,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"conformant CRD Clients SHALL support the [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference), … response",SHALL,Client,,,,"1.2.1.01, 1.2.2.01, 1.2.3.01, 1.2.4.01, 1.2.5.01, 1.2.6.01","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request" -hl7.fhir.us.davinci-crd_2.0.1,244,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"conformant CRD Clients SHALL support the ... [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions), … response",SHALL,Client,,,,"1.2.1.01, 1.2.2.01, 1.2.3.01, 1.2.4.01, 1.2.5.01, 1.2.6.01","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request" -hl7.fhir.us.davinci-crd_2.0.1,245,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,conformant CRD Clients SHALL support the... [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) response,SHALL,Client,,,,"1.2.1.01, 1.2.2.01, 1.2.3.01, 1.2.4.01, 1.2.5.01, 1.2.6.01","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request" +hl7.fhir.us.davinci-crd_2.0.1,243,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"conformant CRD Clients SHALL support the [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference), … response",SHALL,Client,,,,"1.2.1.1.01, 1.2.2.1.01, 1.2.3.1.01, 1.2.4.1.01, 1.2.5.1.01, 1.2.6.1.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group01-crd_v201_appointment_book_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group01-crd_v201_encounter_start_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group01-crd_v201_encounter_discharge_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group01-crd_v201_order_select_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group01-crd_v201_order_dispatch_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group01-crd_v201_order_sign_request" +hl7.fhir.us.davinci-crd_2.0.1,244,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"conformant CRD Clients SHALL support the ... [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions), … response",SHALL,Client,,,,"1.2.1.1.01, 1.2.2.1.01, 1.2.3.1.01, 1.2.4.1.01, 1.2.5.1.01, 1.2.6.1.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group01-crd_v201_appointment_book_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group01-crd_v201_encounter_start_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group01-crd_v201_encounter_discharge_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group01-crd_v201_order_select_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group01-crd_v201_order_dispatch_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group01-crd_v201_order_sign_request" +hl7.fhir.us.davinci-crd_2.0.1,245,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,conformant CRD Clients SHALL support the... [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) response,SHALL,Client,,,,"1.2.1.1.01, 1.2.2.1.01, 1.2.3.1.01, 1.2.4.1.01, 1.2.5.1.01, 1.2.6.1.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group01-crd_v201_appointment_book_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group01-crd_v201_encounter_start_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group01-crd_v201_encounter_discharge_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group01-crd_v201_order_select_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group01-crd_v201_order_dispatch_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group01-crd_v201_order_sign_request" hl7.fhir.us.davinci-crd_2.0.1,246,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,conformant CRD Clients... SHOULD support the remaining types [of [Responses](https://cds-hooks.hl7.org/2.0/#cds-service-response)].,SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,251,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,[A]cceptance of decision support cards outside the coverage and documentation requirements space is optional (for both server and client).,MAY,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,255,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"When a Coverage Information card type indicating that additional clinical documentation is needed and the CRD client supports DTR, CRD Clients SHALL ensure that clinical users have an opportunity to launch the DTR app as part of the current workflow.",SHALL,Client,true,,,"","" @@ -193,18 +193,18 @@ hl7.fhir.us.davinci-crd_2.0.1,266,https://hl7.org/fhir/us/davinci-crd/STU2/cards hl7.fhir.us.davinci-crd_2.0.1,278,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"CRD clients... SHALL support the new CDS Hooks system action functionality to cause annotations to automatically be stored on the relevant request, appointment, etc. without any user intervention.",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,280,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"In this case, [Where CRD clients and services support the new CDS Hooks system action functionality to cause annotations to automatically be stored on the relevant request, appointment, etc.] the discrete information propagated into the order extension SHALL be available to the user for viewing",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,281,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,CRD clients MAY be configured to not execute system actions under some circumstances - e.g. if the order has been cancelled/abandoned.,MAY,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,284,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,285,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [device] orders (and any associated resources) SHALL comply with the [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,286,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [encounter] orders (and any associated resources) SHALL comply with the [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html) profile",SHALL,Client,,,,"1.2.1.08, 1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,287,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [medication] orders (and any associated resources) SHALL comply with the [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) profile [and referenced Medications SHALL comply with the [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html) profile.]",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,288,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [nutrition] orders (and any associated resources) SHALL comply with the [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,289,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [service] orders (and any associated resources) SHALL comply with the [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,290,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [vision] orders (and any associated resources) SHALL comply with the [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,291,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed [communication] orders (and any associated resources) SHALL comply with the [profile-communicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,292,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) profile [and referenced devices SHALL comply with the [profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) profile]",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,293,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) profile [and referenced medications SHALL comply with the [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html) profile]",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,294,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed [service] orders (and any associated resources) SHALL comply with the [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" -hl7.fhir.us.davinci-crd_2.0.1,295,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed [vision] orders (and any associated resources) SHALL comply with the [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) profile",SHALL,Client,,,,"1.2.4.08, 1.2.5.08, 1.2.6.08","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,284,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,285,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [device] orders (and any associated resources) SHALL comply with the [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,286,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [encounter] orders (and any associated resources) SHALL comply with the [profile-encounter](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-encounter.html) profile",SHALL,Client,,,,"1.2.1.3.03, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,287,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [medication] orders (and any associated resources) SHALL comply with the [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) profile [and referenced Medications SHALL comply with the [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html) profile.]",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,288,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [nutrition] orders (and any associated resources) SHALL comply with the [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,289,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [service] orders (and any associated resources) SHALL comply with the [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,290,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,"When using this [Propose alternate request] response type, the proposed [vision] orders (and any associated resources) SHALL comply with the [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,291,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed [communication] orders (and any associated resources) SHALL comply with the [profile-communicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,292,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) profile [and referenced devices SHALL comply with the [profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) profile]",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,293,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) profile [and referenced medications SHALL comply with the [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html) profile]",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,294,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed [service] orders (and any associated resources) SHALL comply with the [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" +hl7.fhir.us.davinci-crd_2.0.1,295,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order,"When using this [Identify additional orders as companions/prerequisites for current order] response type, the proposed [vision] orders (and any associated resources) SHALL comply with the [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) profile",SHALL,Client,,,,"1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context" hl7.fhir.us.davinci-crd_2.0.1,297,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion,CRD clients supporting this [Request form completion] card type SHALL support either approach [Card or systemAction],SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,301,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion,[for the Request form completion response type] CRD Clients SHOULD retain a copy of all completed forms for future reference.,SHOULD,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,303,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information,CRD clients supporting this [Create or update coverage information] card type SHALL support either approach [Card or systemAction],SHALL,Client,,,,"","" @@ -223,45 +223,45 @@ hl7.fhir.us.davinci-crd_2.0.1,319,https://hl7.org/fhir/us/davinci-crd/STU2/Capab hl7.fhir.us.davinci-crd_2.0.1,320,https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html,"The CRD Client SHALL also support ‘update’ functionality for [the NutritionOrder resource type when] the client allows invoking [the order-dispatch, order-select, or order-sign hook].",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,321,https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html,"The CRD Client SHALL also support ‘update’ functionality for [the ServiceRequest resource type when] the client allows invoking [the order-dispatch, order-select, or order-sign hook].",SHALL,Client,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,322,https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html,"The CRD Client SHALL also support ‘update’ functionality for [the VisionPrescription resource type when] the client allows invoking [the order-dispatch, order-select, or order-sign hook].",SHALL,Client,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,323,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#crd-access-tokens,"When a CRD client invokes a CRD server via CDS Hooks, it will provide an access token that allows the CRD server to retrieve additional patient information.",SHALL,Client,,,,"1.2.1.10, 1.2.2.10, 1.2.3.10, 1.2.4.10, 1.2.5.10, 1.2.6.10","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_fetched_data, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_fetched_data" -cds-hooks_2.0,1,https://cds-hooks.hl7.org/2.0/#use-of-json,All data exchanged through production RESTful APIs MUST be sent and received as JSON (JavaScript Object Notation) structures.,SHALL,"Client,Service",,,,"1.2.1.06, 1.2.1.07, 1.2.2.06, 1.2.2.07, 1.2.3.06, 1.2.3.07, 1.2.4.06, 1.2.4.07, 1.2.5.06, 1.2.5.07, 1.2.6.06, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" +hl7.fhir.us.davinci-crd_2.0.1,323,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#crd-access-tokens,"When a CRD client invokes a CRD server via CDS Hooks, it will provide an access token that allows the CRD server to retrieve additional patient information.",SHALL,Client,,,,"1.2.1.3.05, 1.2.2.3.05, 1.2.3.3.05, 1.2.4.3.05, 1.2.5.3.05, 1.2.6.3.05","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_fetched_data, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_fetched_data" +cds-hooks_2.0,1,https://cds-hooks.hl7.org/2.0/#use-of-json,All data exchanged through production RESTful APIs MUST be sent and received as JSON (JavaScript Object Notation) structures.,SHALL,"Client,Service",,,,"1.2.1.3.01, 1.2.1.3.02, 1.2.2.3.01, 1.2.2.3.02, 1.2.3.3.01, 1.2.3.3.02, 1.2.4.3.01, 1.2.4.3.02, 1.2.5.3.01, 1.2.5.3.02, 1.2.6.3.01, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" cds-hooks_2.0,2,https://cds-hooks.hl7.org/2.0/#use-of-json,All data exchanged through production RESTful APIs MUST be ... transmitted over HTTPS,SHALL,"Client,Service",,,,"","" -cds-hooks_2.0,3,https://cds-hooks.hl7.org/2.0/#use-of-json,"JSON elements SHALL NOT be null … [or] empty, unless otherwise specified (e.g. to indicate no guidance with an empty array of cards in the CDS Hooks response).",SHALL NOT,"Client,Service",,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" -cds-hooks_2.0,15,https://cds-hooks.hl7.org/2.0/#http-request_1,A CDS Client SHALL call a CDS Service by POSTing a JSON document to the service,SHALL,Client,,,,"1.2.1.01, 1.2.2.01, 1.2.3.01, 1.2.4.01, 1.2.5.01, 1.2.6.01","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_appointment_book_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_encounter_start_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_encounter_discharge_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_order_select_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_order_dispatch_request, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_order_sign_request" +cds-hooks_2.0,3,https://cds-hooks.hl7.org/2.0/#use-of-json,"JSON elements SHALL NOT be null … [or] empty, unless otherwise specified (e.g. to indicate no guidance with an empty array of cards in the CDS Hooks response).",SHALL NOT,"Client,Service",,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" +cds-hooks_2.0,15,https://cds-hooks.hl7.org/2.0/#http-request_1,A CDS Client SHALL call a CDS Service by POSTing a JSON document to the service,SHALL,Client,,,,"1.2.1.1.01, 1.2.2.1.01, 1.2.3.1.01, 1.2.4.1.01, 1.2.5.1.01, 1.2.6.1.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group01-crd_v201_appointment_book_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group01-crd_v201_encounter_start_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group01-crd_v201_encounter_discharge_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group01-crd_v201_order_select_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group01-crd_v201_order_dispatch_request, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group01-crd_v201_order_sign_request" cds-hooks_2.0,17,https://cds-hooks.hl7.org/2.0/#http-request_1,"CDS Clients may add additional requirements for the triggering of a hook, based upon the user, workflow, CDS Service or other reasons (e.g. if the service is provided by a payer, the patient has active coverage with that payer).",MAY,Client,,,,"","" cds-hooks_2.0,18,https://cds-hooks.hl7.org/2.0/#http-request_1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: - field: hook - optionality: REQUIRED - type: string -- description: The hook that triggered this CDS Service call.",SHALL,Client,,,,"1.2.1.06, 1.2.2.06, 1.2.3.06, 1.2.4.06, 1.2.5.06, 1.2.6.06","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields" +- description: The hook that triggered this CDS Service call.",SHALL,Client,,,,"1.2.1.3.01, 1.2.2.3.01, 1.2.3.3.01, 1.2.4.3.01, 1.2.5.3.01, 1.2.6.3.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_required_fields" cds-hooks_2.0,19,https://cds-hooks.hl7.org/2.0/#http-request_1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: - field: hookInstance - optionality: REQUIRED - type: string -- description: A universally unique identifier (UUID) for this particular hook call",SHALL,Client,,,,"1.2.1.06, 1.2.2.06, 1.2.3.06, 1.2.4.06, 1.2.5.06, 1.2.6.06","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields" +- description: A universally unique identifier (UUID) for this particular hook call",SHALL,Client,,,,"1.2.1.3.01, 1.2.2.3.01, 1.2.3.3.01, 1.2.4.3.01, 1.2.5.3.01, 1.2.6.3.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_required_fields" cds-hooks_2.0,20,https://cds-hooks.hl7.org/2.0/#http-request_1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: - field: fhirServer - optionality: CONDITIONAL - type: URL -- description: The base URL of the CDS Client's FHIR server. If fhirAuthorization is provided, this field is REQUIRED. The scheme MUST be https when production data is exchanged.",SHALL,Client,true,,,"1.2.1.06, 1.2.1.07, 1.2.2.06, 1.2.2.07, 1.2.3.06, 1.2.3.07, 1.2.4.06, 1.2.4.07, 1.2.5.06, 1.2.5.07, 1.2.6.06, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" +- description: The base URL of the CDS Client's FHIR server. If fhirAuthorization is provided, this field is REQUIRED. The scheme MUST be https when production data is exchanged.",SHALL,Client,true,,,"1.2.1.3.01, 1.2.1.3.02, 1.2.2.3.01, 1.2.2.3.02, 1.2.3.3.01, 1.2.3.3.02, 1.2.4.3.01, 1.2.4.3.02, 1.2.5.3.01, 1.2.5.3.02, 1.2.6.3.01, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" cds-hooks_2.0,21,https://cds-hooks.hl7.org/2.0/#http-request_1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: - field: fhirAuthorization - optionality: OPTIONAL - type: object -- description: A structure holding an OAuth 2.0 bearer access token granting the CDS Service access to FHIR resources, along with supplemental information relating to the token.",MAY,Client,,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" +- description: A structure holding an OAuth 2.0 bearer access token granting the CDS Service access to FHIR resources, along with supplemental information relating to the token.",MAY,Client,,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" cds-hooks_2.0,22,https://cds-hooks.hl7.org/2.0/#http-request_1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: - field: context - optionality: REQUIRED - type: object -- description: Hook-specific contextual data that the CDS service will need. For example, with the patient-view hook this will include the FHIR id of the Patient being viewed",SHALL,Client,,,,"1.2.1.06, 1.2.2.06, 1.2.3.06, 1.2.4.06, 1.2.5.06, 1.2.6.06","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields" +- description: Hook-specific contextual data that the CDS service will need. For example, with the patient-view hook this will include the FHIR id of the Patient being viewed",SHALL,Client,,,,"1.2.1.3.01, 1.2.2.3.01, 1.2.3.3.01, 1.2.4.3.01, 1.2.5.3.01, 1.2.6.3.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_required_fields" cds-hooks_2.0,23,https://cds-hooks.hl7.org/2.0/#http-request_1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: - field: prefetch - optionality: OPTIONAL - type: object -- description: The FHIR data that was prefetched by the CDS Client",MAY,Client,,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" -cds-hooks_2.0,25,https://cds-hooks.hl7.org/2.0/#hookinstance,the hookInstance is globally unique,SHALL,Client,,,,"1.2.1.06, 1.2.2.06, 1.2.3.06, 1.2.4.06, 1.2.5.06, 1.2.6.06","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_required_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_required_fields" +- description: The FHIR data that was prefetched by the CDS Client",MAY,Client,,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" +cds-hooks_2.0,25,https://cds-hooks.hl7.org/2.0/#hookinstance,the hookInstance is globally unique,SHALL,Client,,,,"1.2.1.3.01, 1.2.2.3.01, 1.2.3.3.01, 1.2.4.3.01, 1.2.5.3.01, 1.2.6.3.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_required_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_required_fields" cds-hooks_2.0,26,https://cds-hooks.hl7.org/2.0/#hookinstance,the hookInstance ... should contain enough entropy to be un-guessable.,SHOULD,Client,,,,"","" -cds-hooks_2.0,30,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"The [prefetched] FHIR resources are passed as key-value pairs, with each key matching a key described in the discovery response, and each value being a FHIR resource. Note that in the case of searches, this resource may be a searchset Bundle.",SHALL,Client,true,,,"1.2.1.09, 1.2.2.09, 1.2.3.09, 1.2.4.09, 1.2.5.09, 1.2.6.09","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_prefetch" +cds-hooks_2.0,30,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"The [prefetched] FHIR resources are passed as key-value pairs, with each key matching a key described in the discovery response, and each value being a FHIR resource. Note that in the case of searches, this resource may be a searchset Bundle.",SHALL,Client,true,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_prefetch" cds-hooks_2.0,32,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"Some CDS Clients MAY pass prefetched data, along with a bearer token for the CDS Service to use if additional resources are required.",MAY,Client,false,,,"","" cds-hooks_2.0,35,https://cds-hooks.hl7.org/2.0/#prefetch-template,"To allow for prefetch templates that are dependent on the workflow context, prefetch templates may include references to context using prefetch tokens.",MAY,"Client,Service",false,,,"","" cds-hooks_2.0,37,https://cds-hooks.hl7.org/2.0/#prefetch-template,"CDS Client MAY choose to honor zero, some, or all of the desired prefetch templates",MAY,Client,false,,,"","" @@ -272,9 +272,9 @@ cds-hooks_2.0,41,https://cds-hooks.hl7.org/2.0/#prefetch-template,The CDS Client cds-hooks_2.0,42,https://cds-hooks.hl7.org/2.0/#prefetch-template,"[When providing prefetched data, t]he CDS Client SHALL only provide access to resources that are within the user's authorized scope.",SHALL,Client,false,,,"","" cds-hooks_2.0,43,https://cds-hooks.hl7.org/2.0/#prefetch-template,The relative URL [constructed when a CDS client processes prefetch templates] may be appended to the base URL for the CDS Client's FHIR server and directly invoked,MAY,Client,false,,,"","" cds-hooks_2.0,44,https://cds-hooks.hl7.org/2.0/#prefetch-template,CDS Clients may use internal infrastructure to satisfy the [prefetch] request in the same way that invoking against the FHIR server would.,MAY,Client,false,,,"","" -cds-hooks_2.0,45,https://cds-hooks.hl7.org/2.0/#prefetch-template,the prefetched data given to the CDS Service MUST be equivalent to the data the CDS Service would receive if it were making its own call to the CDS Client's FHIR server using the parameterized prefetch template.,SHALL,Client,false,,,"1.2.1.11, 1.2.2.11, 1.2.3.11, 1.2.4.11, 1.2.5.11, 1.2.6.11","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_prefetch_equals_queried, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_prefetch_equals_queried, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_prefetch_equals_queried, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_prefetch_equals_queried, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_prefetch_equals_queried, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_prefetch_equals_queried" +cds-hooks_2.0,45,https://cds-hooks.hl7.org/2.0/#prefetch-template,the prefetched data given to the CDS Service MUST be equivalent to the data the CDS Service would receive if it were making its own call to the CDS Client's FHIR server using the parameterized prefetch template.,SHALL,Client,false,,,"1.2.1.3.06, 1.2.2.3.06, 1.2.3.3.06, 1.2.4.3.06, 1.2.5.3.06, 1.2.6.3.06","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_prefetch_equals_queried, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_prefetch_equals_queried, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_prefetch_equals_queried, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_prefetch_equals_queried, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_prefetch_equals_queried, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_prefetch_equals_queried" cds-hooks_2.0,46,https://cds-hooks.hl7.org/2.0/#prefetch-template,Prefetch data for other services registered to the same hook MUST NOT be provided [to a CDS service that has not requested or is not authorized to receive it],SHALL NOT,Client,false,,,"","" -cds-hooks_2.0,47,https://cds-hooks.hl7.org/2.0/#prefetch-template,[CDS] services SHALL only receive the data they requested in their prefetch.,SHALL,Client,false,,,"1.2.1.09, 1.2.2.09, 1.2.3.09, 1.2.4.09, 1.2.5.09, 1.2.6.09","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_prefetch, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_prefetch" +cds-hooks_2.0,47,https://cds-hooks.hl7.org/2.0/#prefetch-template,[CDS] services SHALL only receive the data they requested in their prefetch.,SHALL,Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_prefetch, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_prefetch" cds-hooks_2.0,48,https://cds-hooks.hl7.org/2.0/#prefetch-template,CDS Client MAY paginate prefetch results,MAY,Client,false,,,"","" cds-hooks_2.0,49,https://cds-hooks.hl7.org/2.0/#prefetch-template,The CDS Client MUST NOT send any prefetch template key that it chooses not to satisfy.,SHALL NOT,Client,false,,,"","" cds-hooks_2.0,50,https://cds-hooks.hl7.org/2.0/#prefetch-template,"If the CDS Client encounters errors prefetching the requested data, OperationOutcome(s) SHOULD be used to communicate those errors",SHOULD,Client,true,,,"","" @@ -282,12 +282,12 @@ cds-hooks_2.0,51,https://cds-hooks.hl7.org/2.0/#prefetch-template,CDS Clients MU cds-hooks_2.0,53,https://cds-hooks.hl7.org/2.0/#prefetch-template,"If the CDS Client has no data to populate a template prefetch key, the prefetch template key MUST have a value of null.",SHALL,Client,true,,,"","" cds-hooks_2.0,63,https://cds-hooks.hl7.org/2.0/#fhir-resource-access,"[When executing a CDS request on behalf of a user,] the data to which the CDS Service is given access by the CDS Client MUST be limited to the same restrictions and authorizations afforded the current user.",SHALL,Client,true,,,"","" cds-hooks_2.0,64,https://cds-hooks.hl7.org/2.0/#fhir-resource-access,"[When executing a CDS request on behalf of a user,] the access token SHALL be scoped to: The CDS Service being invoked [and] the current user",SHALL,Client,true,,,"","" -cds-hooks_2.0,65,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"If the CDS Client chooses not to pass along an access token, the fhirAuthorization parameter [SHALL be] … omitted.",SHALL,Client,true,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" -cds-hooks_2.0,66,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] access_token field [SHALL be populated with] the [Oauth 2.0](https://oauth.net/2/) access token [as a] string data type",SHALL,Client,true,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" -cds-hooks_2.0,67,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] token_type field [SHALL be populated with the] fixed value: 'Bearer'",SHALL,Client,true,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" -cds-hooks_2.0,68,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] expires_in field [SHALL be populated with the] the lifetime in seconds of the access token [as an] integer data type",SHALL,Client,true,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" -cds-hooks_2.0,69,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] scope field [SHALL be populated with the] the scopes the access token grants the CDS Service [as a] string data type",SHALL,Client,true,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" -cds-hooks_2.0,70,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] subject field [SHALL be populated with] the [Oauth 2.0](https://oauth.net/2/) client identifier of the CDS Service, as registered with the CDS Client's authorization server [as a] string data type",SHALL,Client,true,,,"1.2.1.07, 1.2.2.07, 1.2.3.07, 1.2.4.07, 1.2.5.07, 1.2.6.07","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_optional_fields, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_optional_fields" +cds-hooks_2.0,65,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"If the CDS Client chooses not to pass along an access token, the fhirAuthorization parameter [SHALL be] … omitted.",SHALL,Client,true,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" +cds-hooks_2.0,66,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] access_token field [SHALL be populated with] the [Oauth 2.0](https://oauth.net/2/) access token [as a] string data type",SHALL,Client,true,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" +cds-hooks_2.0,67,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] token_type field [SHALL be populated with the] fixed value: 'Bearer'",SHALL,Client,true,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" +cds-hooks_2.0,68,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] expires_in field [SHALL be populated with the] the lifetime in seconds of the access token [as an] integer data type",SHALL,Client,true,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" +cds-hooks_2.0,69,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] scope field [SHALL be populated with the] the scopes the access token grants the CDS Service [as a] string data type",SHALL,Client,true,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" +cds-hooks_2.0,70,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter, the] subject field [SHALL be populated with] the [Oauth 2.0](https://oauth.net/2/) client identifier of the CDS Service, as registered with the CDS Client's authorization server [as a] string data type",SHALL,Client,true,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_optional_fields, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_optional_fields" cds-hooks_2.0,71,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter and] the access token is restricted to a specific patient, [the] patient field SHOULD be populated to identify the FHIR id of that patient [as a] string data type",SHOULD,Client,true,,,"","" cds-hooks_2.0,72,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,The `expires_in` value is established by the authorization server and SHOULD BE very short lived,SHOULD,Client,false,,,"","" cds-hooks_2.0,73,https://cds-hooks.hl7.org/2.0/#passing-the-access-token-to-the-cds-service,CDS Clients SHOULD revoke an issued access token upon the completion of the CDS Hooks request/response to limit the validity period of the token.,SHOULD,Client,true,,,"","" @@ -327,32 +327,32 @@ cds-hooks_2.0,170,https://cds-hooks.hl7.org/2.0/#trusting-cds-services,"Each CDS cds-hooks_2.0,171,https://cds-hooks.hl7.org/2.0/#trusting-cds-services,The CDS Service can be registered with the CDS Client's authorization server,MAY,Client,false,,,"","" cds-hooks_2.0,172,https://cds-hooks.hl7.org/2.0/#trusting-cds-services,Every interaction between a CDS Client and a CDS Service is initiated by the CDS Client sending a service request to a CDS Service endpoint protected using the [Transport Layer Security protocol] (https://tools.ietf.org/html/rfc5246),SHALL,Client,false,,,"","" cds-hooks_2.0,173,https://cds-hooks.hl7.org/2.0/#trusting-cds-services,CDS Client SHALL deny access to a requested resource if it is outside the user's authorized scope,SHALL,Client,false,,,"","" -cds-hooks_2.0,174,https://cds-hooks.hl7.org/2.0/#trusting-cds-services,"If a CDS Client is satisfying prefetch requests from a CDS Service or sends a non-null fhirAuthorization object to a CDS Service so that it can call the FHIR server, the CDS Service MUST be pre-registered with the authorization server protecting access to the FHIR server",SHALL,Client,true,,,"1.1.01, 1.1.02, 2.1","crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_registration_verification, crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_service_registration_attestation, crd_client-crd_client_fhir_api-Group01" +cds-hooks_2.0,174,https://cds-hooks.hl7.org/2.0/#trusting-cds-services,"If a CDS Client is satisfying prefetch requests from a CDS Service or sends a non-null fhirAuthorization object to a CDS Service so that it can call the FHIR server, the CDS Service MUST be pre-registered with the authorization server protecting access to the FHIR server",SHALL,Client,true,,,"1.1.01, 1.1.02, 2.1","crd_client-crd_v201_client_hook_invocation-crd_v201_client_registration-crd_v201_client_registration_verification, crd_client-crd_v201_client_hook_invocation-crd_v201_client_registration-crd_v201_client_service_registration_attestation, crd_client-crd_v201_client_fhir_api-Group01" cds-hooks_2.0,178,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"Each time a CDS Client transmits a request to a CDS Service which requires authentication, the request MUST include an Authorization header presenting the JWT as a “Bearer” token: -Authorization: Bearer {{JWT}}",SHALL,Client,true,,,"1.2.1.02, 1.2.2.02, 1.2.3.02, 1.2.4.02, 1.2.5.02, 1.2.6.02","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_decode_auth_token, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_decode_auth_token, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_decode_auth_token, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_decode_auth_token, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_decode_auth_token, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_decode_auth_token" +Authorization: Bearer {{JWT}}",SHALL,Client,true,,,"1.2.1.2.01, 1.2.2.2.01, 1.2.3.2.01, 1.2.4.2.01, 1.2.5.2.01, 1.2.6.2.01","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_decode_auth_token, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_decode_auth_token, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_decode_auth_token, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_decode_auth_token, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_decode_auth_token, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_decode_auth_token" cds-hooks_2.0,179,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,mutual TLS MAY be used alongside JSON web tokens to establish trust of the CDS Client by the CDS Service,MAY,"Client,Service",false,,,"","" -cds-hooks_2.0,180,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"The CDS Client MUST use its private key to digitally sign the JWT, using the [JSON Web Signatures (rfc7515)](https://tools.ietf.org/html/rfc7515) standard",SHALL,Client,false,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" -cds-hooks_2.0,181,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the alg field is required [and SHALL be a] string data type [containing] the cryptographic algorithm used to sign this JWT.",SHALL,Client,true,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" -cds-hooks_2.0,182,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the kid field is required [and SHALL be a] string data type [containing] the identifier of the key-pair used to sign this JWT.",SHALL,Client,true,,,"1.2.1.04, 1.2.2.04, 1.2.3.04, 1.2.4.04, 1.2.5.04, 1.2.6.04","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_header" -cds-hooks_2.0,183,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the kid field MUST be unique within the CDS Client's JWK Set.",SHALL,Client,true,,,"1.2.1.03, 1.2.2.03, 1.2.3.03, 1.2.4.03, 1.2.5.03, 1.2.6.03","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_retrieve_jwks" -cds-hooks_2.0,184,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the typ field is required [and SHALL be a] string data type and SHALL be 'JWT'",SHALL,Client,true,,,"1.2.1.04, 1.2.2.04, 1.2.3.04, 1.2.4.04, 1.2.5.04, 1.2.6.04","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_header" -cds-hooks_2.0,185,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the jku field is a url data type [containing] the URL to the JWK Set containing the public key(s)",SHALL,Client,true,,,"1.2.1.03, 1.2.2.03, 1.2.3.03, 1.2.4.03, 1.2.5.03, 1.2.6.03","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_retrieve_jwks" +cds-hooks_2.0,180,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"The CDS Client MUST use its private key to digitally sign the JWT, using the [JSON Web Signatures (rfc7515)](https://tools.ietf.org/html/rfc7515) standard",SHALL,Client,false,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" +cds-hooks_2.0,181,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the alg field is required [and SHALL be a] string data type [containing] the cryptographic algorithm used to sign this JWT.",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" +cds-hooks_2.0,182,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the kid field is required [and SHALL be a] string data type [containing] the identifier of the key-pair used to sign this JWT.",SHALL,Client,true,,,"1.2.1.2.03, 1.2.2.2.03, 1.2.3.2.03, 1.2.4.2.03, 1.2.5.2.03, 1.2.6.2.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_header" +cds-hooks_2.0,183,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the kid field MUST be unique within the CDS Client's JWK Set.",SHALL,Client,true,,,"1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_retrieve_jwks" +cds-hooks_2.0,184,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the typ field is required [and SHALL be a] string data type and SHALL be 'JWT'",SHALL,Client,true,,,"1.2.1.2.03, 1.2.2.2.03, 1.2.3.2.03, 1.2.4.2.03, 1.2.5.2.03, 1.2.6.2.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_header" +cds-hooks_2.0,185,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the jku field is a url data type [containing] the URL to the JWK Set containing the public key(s)",SHALL,Client,true,,,"1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_retrieve_jwks" cds-hooks_2.0,186,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT header,] the jku field is optional",MAY,Client,true,,,"","" -cds-hooks_2.0,187,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the iss field is required [and SHALL be a] string data type [containing] the URI of the issuer of the JWT",SHALL,Client,true,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" +cds-hooks_2.0,187,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the iss field is required [and SHALL be a] string data type [containing] the URI of the issuer of the JWT",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" cds-hooks_2.0,188,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"The JWT MAY be self-issued by the CDS Client, or MAY be issued by a third-party identity provider.",MAY,Client,true,,,"","" -cds-hooks_2.0,189,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the aud field is required [and SHALL be a] string data type or an array of strings [per [rfc7519](https://tools.ietf.org/html/rfc7519#section-4.1.3) containing] the CDS Service endpoint that is being called by the CDS Client",SHALL,Client,true,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" -cds-hooks_2.0,190,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the exp field is required [and SHALL be a] number data type [containing the] expiration time integer for this authentication JWT, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC).",SHALL,Client,true,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" -cds-hooks_2.0,191,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the iat field is required [and SHALL be a] number data type [containing] the time at which this JWT was issued, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC)",SHALL,Client,true,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" -cds-hooks_2.0,192,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the jti field is required [and SHALL be a] string data type [containing] a nonce string value that uniquely identifies this authentication JWT (used to protect against replay attacks)",SHALL,Client,true,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" +cds-hooks_2.0,189,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the aud field is required [and SHALL be a] string data type or an array of strings [per [rfc7519](https://tools.ietf.org/html/rfc7519#section-4.1.3) containing] the CDS Service endpoint that is being called by the CDS Client",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" +cds-hooks_2.0,190,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the exp field is required [and SHALL be a] number data type [containing the] expiration time integer for this authentication JWT, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC).",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" +cds-hooks_2.0,191,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the iat field is required [and SHALL be a] number data type [containing] the time at which this JWT was issued, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC)",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" +cds-hooks_2.0,192,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the jti field is required [and SHALL be a] string data type [containing] a nonce string value that uniquely identifies this authentication JWT (used to protect against replay attacks)",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" cds-hooks_2.0,193,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the tenant field is optional [SHALL be a] string data type [containing] an opaque string identifying the healthcare organization that is invoking the CDS Hooks request",MAY,Client,true,,,"","" cds-hooks_2.0,194,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"[When sending a JWT payload,] the tenant field is optional",MAY,Client,true,,,"","" -cds-hooks_2.0,196,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"For CDS Hooks, [the aud] value MUST be the URL of the CDS Service endpoint being invoked",SHALL,Client,false,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" -cds-hooks_2.0,197,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"The CDS Client MUST make its public key, expressed as a JSON Web Key (JWK), available in a JWK Set, as defined by [rfc7517](https://tools.ietf.org/html/rfc7517)",SHALL,Client,false,,,"1.1.01, 1.2.1.03, 1.2.2.03, 1.2.3.03, 1.2.4.03, 1.2.5.03, 1.2.6.03","crd_client-crd_client_hook_invocation-crd_client_registration-crd_client_registration_verification, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_retrieve_jwks" +cds-hooks_2.0,196,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"For CDS Hooks, [the aud] value MUST be the URL of the CDS Service endpoint being invoked",SHALL,Client,false,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" +cds-hooks_2.0,197,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"The CDS Client MUST make its public key, expressed as a JSON Web Key (JWK), available in a JWK Set, as defined by [rfc7517](https://tools.ietf.org/html/rfc7517)",SHALL,Client,false,,,"1.1.01, 1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_registration-crd_v201_client_registration_verification, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_retrieve_jwks" cds-hooks_2.0,198,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"The CDS Client MAY make its JWK Set available via a URL identified by the jku header field, as defined by [rfc7515 4.1.2](https://tools.ietf.org/html/rfc7515#section-4.1.2)",MAY,Client,false,,,"","" -cds-hooks_2.0,199,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"If the jku header field is ommitted, the CDS Client and CDS Service SHALL communicate the JWK Set out-of-band.",SHALL,"Client,Service",true,,,"1.2.1.03, 1.2.2.03, 1.2.3.03, 1.2.4.03, 1.2.5.03, 1.2.6.03","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_retrieve_jwks, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_retrieve_jwks" +cds-hooks_2.0,199,https://cds-hooks.hl7.org/2.0/#trusting-cds-clients,"If the jku header field is ommitted, the CDS Client and CDS Service SHALL communicate the JWK Set out-of-band.",SHALL,"Client,Service",true,,,"1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_retrieve_jwks, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_retrieve_jwks" cds-hooks_2.0,200,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,[JSON Web Algorithms (rfc7518)](https://tools.ietf.org/html/rfc7518) defines several cryptographic algorithms for use in signing JWTs and should be referenced by CDS Hooks implementers.,SHOULD,"Client,Service",false,,,"","" -cds-hooks_2.0,202,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,"JWTs SHALL NOT be signed [by Clients] using the none algorithm, referred to in rfc7518 as unsecured JSON Web Signatures, as the lack of a cryptographic signature does not provide any integrity protection.",SHALL NOT,Client,false,,,"1.2.1.04, 1.2.2.04, 1.2.3.04, 1.2.4.04, 1.2.5.04, 1.2.6.04","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_header, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_header" -cds-hooks_2.0,203,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,JWTs SHALL NOT be signed using any symmetric algorithm as these algorithms require the CDS Client and CDS Service to share a private key in order to verify the signature,SHALL NOT,"Client,Service",false,,,"1.2.1.05, 1.2.2.05, 1.2.3.05, 1.2.4.05, 1.2.5.05, 1.2.6.05","crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_token_payload, crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_token_payload" +cds-hooks_2.0,202,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,"JWTs SHALL NOT be signed [by Clients] using the none algorithm, referred to in rfc7518 as unsecured JSON Web Signatures, as the lack of a cryptographic signature does not provide any integrity protection.",SHALL NOT,Client,false,,,"1.2.1.2.03, 1.2.2.2.03, 1.2.3.2.03, 1.2.4.2.03, 1.2.5.2.03, 1.2.6.2.03","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_header, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_header" +cds-hooks_2.0,203,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,JWTs SHALL NOT be signed using any symmetric algorithm as these algorithms require the CDS Client and CDS Service to share a private key in order to verify the signature,SHALL NOT,"Client,Service",false,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group02-crd_v201_token_payload, crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group02-crd_v201_token_payload" cds-hooks_2.0,204,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,"When choosing an algorithm to sign their JWTs, CDS Clients SHOULD consider not only the algorithms (and key sizes) that are recommended within the security industry, but also how well those algorithms are supported in the various programming languages and libraries that may be used by CDS Services.",SHOULD,Client,false,,,"","" cds-hooks_2.0,205,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,"At publication time of this specification, both ES384 and RS384 are RECOMMENDED for their regard within the larger security industry, strength, and support across popular programming languages and libraries.",SHOULD,"Client,Service",false,,,"","" cds-hooks_2.0,206,https://cds-hooks.hl7.org/2.0/#jwt-signing-algorithm,"Stronger and better algorithms [than ES384 and RS384] are continually being introduced due to new threats, weaknesses, and increases in computing power [and] CDS Clients SHOULD continually re-evaluate their choice of an algorithm based upon these ever changing conditions.",SHOULD,"Client,Service",false,,,"","" @@ -360,74 +360,74 @@ cds-hooks_2.0,208,https://cds-hooks.hl7.org/2.0/#cross-origin-resource-sharing,C cds-hooks_2.0,209,https://cds-hooks.hl7.org/2.0/#update-stale-guidance,"In the case that CDS Hooks cards are persisted, clients should take care to ensure that stale guidance does not negatively impact patient care.",SHOULD,Client,true,,,"","" cds-hooks_2.0,214,https://cds-hooks.hl7.org/2.0/#extensions,The value of an extension element MUST be a pre-coordinated JSON object,SHALL,"Client,Service",false,,,"","" cds-hooks_2.0,215,https://cds-hooks.hl7.org/2.0/#extensions,"Extension structures SHOULD use a strategy for naming that ensures global uniqueness, such as reverse-domain-name notation",SHOULD,"Client,Service",false,,,"","" -cds-hooks-library_1.0.1,17,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,18,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,19,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,"[When invoking the appointment-book hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html), [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html), [Patient](https://www.hl7.org/fhir/patient.html), or [RelatedPerson](https://www.hl7.org/fhir/relatedperson.html).",SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,21,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,22,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,23,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of Patient appointment(s) is/are for,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,25,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `encounterId`[is] OPTIONAL,MAY,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,26,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,true,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,27,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of Encounter where booking was initiated,SHALL,Client,true,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,29,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `appointments`[is] REQUIRED,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,30,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `appointments`[is populated it SHALL be an ] *object*,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,31,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `appointments`[is populated it SHALL be a] FHIR Bundle of Appointments in 'proposed' state,SHALL,Client,false,,,1.2.1.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_appointment_book-crd_hook_request_valid_context -cds-hooks-library_1.0.1,33,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,34,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,35,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,37,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,38,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,39,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the Patient the Encounter is for,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,41,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook the context field] `encounterId`[is] REQUIRED,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,42,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,43,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the Encounter being started,SHALL,Client,false,,,1.2.2.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_start-crd_hook_request_valid_context -cds-hooks-library_1.0.1,45,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-discharge hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,46,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,47,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,49,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,50,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,51,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the [patient] being discharged,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,53,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook the context field] `encounterId`[is] REQUIRED,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,54,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-discharge hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,55,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the Encounter being ended,SHALL,Client,false,,,1.2.3.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_encounter_discharge-crd_hook_request_valid_context -cds-hooks-library_1.0.1,57,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,58,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,59,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the current patient in context,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,61,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `dispatchedOrders`[is] REQUIRED,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,62,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `dispatchedOrders`[is populated it SHALL be an ] *array*,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,63,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `dispatchedOrders`[is populated it SHALL be a c]ollection of the FHIR local references for the Request resource(s) for which fulfillment is sought,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,65,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `performer`[is] REQUIRED,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,66,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `performer`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,67,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,"[When invoking the order-dispatch hook if context field] `performer`[is populated it SHALL be t]he FHIR local reference for the Practitioner, PractitionerRole, Organization, CareTeam, etc. who is being asked to execute the order",SHALL,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,69,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `fulfillmentTasks`[is] Optional,MAY,Client,false,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,70,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `fulfillmentTasks`[is populated it SHALL be an] *array*,SHALL,Client,true,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,71,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `fulfillmentTasks`[is populated it SHALL be a c]ollection of the Task instances (as objects) that provides a full description of the fulfillment request - including the timing and any constraints on fulfillment.,SHALL,Client,true,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,72,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `fulfillmentTasks`[is populated] each [task] will be for a separate order and SHALL reference one of the dispatched-orders.,SHALL,Client,true,,,1.2.5.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_dispatch-crd_hook_request_valid_context -cds-hooks-library_1.0.1,74,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,75,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,76,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,78,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,79,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,80,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the current patient in context,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,82,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `encounterId`[is] OPTIONAL,MAY,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,83,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,true,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,84,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the current encounter in context,SHALL,Client,true,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,86,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `selections`[is] Optional,MAY,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,87,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `selections`[is populated it SHALL be an] *array*,SHALL,Client,true,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context +cds-hooks-library_1.0.1,17,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,18,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,19,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,"[When invoking the appointment-book hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html), [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html), [Patient](https://www.hl7.org/fhir/patient.html), or [RelatedPerson](https://www.hl7.org/fhir/relatedperson.html).",SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,21,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,22,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,23,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of Patient appointment(s) is/are for,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,25,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `encounterId`[is] OPTIONAL,MAY,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,26,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,true,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,27,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of Encounter where booking was initiated,SHALL,Client,true,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,29,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook the context field] `appointments`[is] REQUIRED,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,30,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `appointments`[is populated it SHALL be an ] *object*,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,31,https://cds-hooks.hl7.org/hooks/STU1/appointment-book.html#context,[When invoking the appointment-book hook if context field] `appointments`[is populated it SHALL be a] FHIR Bundle of Appointments in 'proposed' state,SHALL,Client,false,,,1.2.1.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_appointment_book-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,33,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,34,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,35,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,37,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,38,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,39,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the Patient the Encounter is for,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,41,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook the context field] `encounterId`[is] REQUIRED,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,42,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,43,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-start hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the Encounter being started,SHALL,Client,false,,,1.2.2.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_start-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,45,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-discharge hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,46,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,47,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,49,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,50,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,51,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the [patient] being discharged,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,53,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook the context field] `encounterId`[is] REQUIRED,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,54,https://cds-hooks.hl7.org/hooks/STU1/encounter-start.html#context,[When invoking the encounter-discharge hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,55,https://cds-hooks.hl7.org/hooks/STU1/encounter-discharge.html#context,[When invoking the encounter-discharge hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the Encounter being ended,SHALL,Client,false,,,1.2.3.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_encounter_discharge-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,57,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,58,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,59,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the current patient in context,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,61,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `dispatchedOrders`[is] REQUIRED,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,62,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `dispatchedOrders`[is populated it SHALL be an ] *array*,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,63,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `dispatchedOrders`[is populated it SHALL be a c]ollection of the FHIR local references for the Request resource(s) for which fulfillment is sought,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,65,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `performer`[is] REQUIRED,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,66,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `performer`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,67,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,"[When invoking the order-dispatch hook if context field] `performer`[is populated it SHALL be t]he FHIR local reference for the Practitioner, PractitionerRole, Organization, CareTeam, etc. who is being asked to execute the order",SHALL,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,69,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook the context field] `fulfillmentTasks`[is] Optional,MAY,Client,false,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,70,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `fulfillmentTasks`[is populated it SHALL be an] *array*,SHALL,Client,true,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,71,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `fulfillmentTasks`[is populated it SHALL be a c]ollection of the Task instances (as objects) that provides a full description of the fulfillment request - including the timing and any constraints on fulfillment.,SHALL,Client,true,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,72,https://cds-hooks.hl7.org/hooks/STU1/order-dispatch.html#context,[When invoking the order-dispatch hook if context field] `fulfillmentTasks`[is populated] each [task] will be for a separate order and SHALL reference one of the dispatched-orders.,SHALL,Client,true,,,1.2.5.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_dispatch-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,74,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,75,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,76,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,78,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,79,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,80,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the current patient in context,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,82,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `encounterId`[is] OPTIONAL,MAY,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,83,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,true,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,84,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the current encounter in context,SHALL,Client,true,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,86,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `selections`[is] Optional,MAY,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,87,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `selections`[is populated it SHALL be an] *array*,SHALL,Client,true,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context cds-hooks-library_1.0.1,88,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,"[When invoking the order-select hook if context field] `selections`[is populated it SHALL be t]he FHIR id of the newly selected order(s) … [that] -references FHIR resources in the `draftOrders` Bundle.",SHALL,Client,true,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,90,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `draftOrders`[is] REQUIRED,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,91,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `draftOrders`[is populated it SHALL be an ] *object*,SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,92,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,"[When invoking the order-select hook if context field] `draftOrders`[is populated it SHALL be a] Bundle of FHIR request resources with a draft status, representing orders that aren't yet signed from the current ordering session.",SHALL,Client,false,,,1.2.4.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_select-crd_hook_request_valid_context -cds-hooks-library_1.0.1,1,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,2,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,3,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,5,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,6,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,7,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the current patient in context,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,9,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `encounterId`[is] OPTIONAL,MAY,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,10,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,true,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,11,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the current encounter in context,SHALL,Client,true,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,13,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `draftOrders`[is] REQUIRED,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,14,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `draftOrders`[is populated it SHALL be an ] *object*,SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context -cds-hooks-library_1.0.1,15,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,"[When invoking the order-sign hook if context field] `draftOrders`[is populated it SHALL be a] Bundle of FHIR request resources with a draft status, representing orders that aren't yet signed from the current ordering session.",SHALL,Client,false,,,1.2.6.08,crd_client-crd_client_hook_invocation-crd_client_hooks-crd_client_order_sign-crd_hook_request_valid_context +references FHIR resources in the `draftOrders` Bundle.",SHALL,Client,true,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,90,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook the context field] `draftOrders`[is] REQUIRED,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,91,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,[When invoking the order-select hook if context field] `draftOrders`[is populated it SHALL be an ] *object*,SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,92,https://cds-hooks.hl7.org/hooks/STU1/order-select.html#context,"[When invoking the order-select hook if context field] `draftOrders`[is populated it SHALL be a] Bundle of FHIR request resources with a draft status, representing orders that aren't yet signed from the current ordering session.",SHALL,Client,false,,,1.2.4.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_select-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,1,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `userId`[is] REQUIRED,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,2,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `userId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,3,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `userId`[is populated it SHALL be t]he id of the current user … of type [Practitioner](https://www.hl7.org/fhir/practitioner.html) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,5,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `patientId`[is] REQUIRED,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,6,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `patientId`[is populated it SHALL be a ] *string*,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,7,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `patientId`[is populated it SHALL be t]he FHIR `Patient.id` of the current patient in context,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,9,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `encounterId`[is] OPTIONAL,MAY,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,10,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `encounterId`[is populated it SHALL be a ] *string*,SHALL,Client,true,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,11,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `encounterId`[is populated it SHALL be t]he FHIR `Encounter.id` of the current encounter in context,SHALL,Client,true,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,13,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook the context field] `draftOrders`[is] REQUIRED,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,14,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,[When invoking the order-sign hook if context field] `draftOrders`[is populated it SHALL be an ] *object*,SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context +cds-hooks-library_1.0.1,15,https://cds-hooks.hl7.org/hooks/STU1/order-sign.html#context,"[When invoking the order-sign hook if context field] `draftOrders`[is populated it SHALL be a] Bundle of FHIR request resources with a draft status, representing orders that aren't yet signed from the current ordering session.",SHALL,Client,false,,,1.2.6.3.03,crd_client-crd_v201_client_hook_invocation-crd_v201_client_hooks-crd_v201_client_order_sign-Group03-crd_v201_hook_request_valid_context diff --git a/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv b/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv new file mode 100644 index 00000000..6301677f --- /dev/null +++ b/lib/davinci_crd_test_kit/requirements/generated/crd_client_v221_requirements_coverage.csv @@ -0,0 +1,1430 @@ +Req Set,ID,URL,Requirement,Conformance,Actors,Conditionality,Not Tested Reason,Not Tested Details,Da Vinci CRD Client v2.2.1 Test Suite Short ID(s),Da Vinci CRD Client v2.2.1 Test Suite Full ID(s) +hl7.fhir.us.davinci-crd_2.2.1,billopt-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-1,"CRD clients **SHALL** use the billing-options extension to convey likely billing codes if they are known, but are not required to know billing codes (e.g. if ordering and performing systems will differ).",SHALL,CRD Client,true,,,"1.2.1.3.01, 1.2.2.3.01, 1.2.3.3.01, 1.2.4.3.01, 1.2.5.3.01, 1.2.6.3.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance" +hl7.fhir.us.davinci-crd_2.2.1,conf-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-1,CRD clients **SHALL** support at least one of the three specified versions of US Core.,SHALL,CRD Client,false,,,2,crd_client_v221-crd_v221_client_fhir_api +hl7.fhir.us.davinci-crd_2.2.1,conf-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-3,"If the CRD client maintains a mustSupport data element and surfaces it to users, then it **SHALL** be exposed in their FHIR interface when the data exists and privacy constraints permit.",SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-6,CRD clients **SHALL** make the mustSupport data available to the appropriate user (clinical or administrative) or leverage the data within their workflow as necessary to follow the intention of the provided decision support.,SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-10,CRD clients **SHALL NOT** depend on or set expectations for CRD servers to communicate data elements not marked as mandatory or mustSupport in the CRD specification.,SHALL NOT,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-11,"implementations **MAY**, by mutual agreement, pre-adopt the use of those additional CI-build profiles and/or mustSupport data elements and not be considered in violation of #1 or #3 above.",MAY,"CRD Client,CRD Server",true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-12,"Where cardinality and other constraints present in profiles allow data elements to be omitted, CRD compliant systems **SHALL NOT** treat the omission of those elements as an error.",SHALL NOT,"CRD Client,CRD Server",true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-13,CRD clients and services and **SHALL** use standard CRD data elements (i.e. elements found within CRD-defined or inherited profiles and marked as mandatory or mustSupport) to communicate needed data where the elements are intended to convey such information.,SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-3-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-3,The requestedVersion extension **SHALL** be present if the service indicates it supports multiple versions for that hook,SHALL,CRD Client,true,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_requested_version" +hl7.fhir.us.davinci-crd_2.2.1,dev-3-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-3,The requestedVersion extension ... **MAY** be present always.,MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-11,CRD Clients **SHOULD** expose configuration options through a configuration screen to allow users and/or system administrators to control the types of information returned.,SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-12,CRD Clients **SHALL** convey configuration options when invoking the hook using the davinci-crd.configuration extension. It will be a single object whose properties will be drawn from the code values from configuration options and whose values will be of the type defined for that option.,SHALL,CRD Client,false,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_requested_version" +hl7.fhir.us.davinci-crd_2.2.1,dev-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-13,"CRD Clients **SHOULD** provide an ability to leverage the dynamic configuration capabilities of payer services based on provider role, individual provider, and/or hook invocation location as best meets the needs of their users.",SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-16,CRD Clients **MAY** send configuration information that CRD Servers do not support.,MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-21,"For the purposes of this implementation guide, the inclusion of the `id` element in 'created' resources and references in created and updated resources within multi-action suggestions **SHALL** be handled as per FHIR's [transaction processing rules](http://hl7.org/fhir/R4/http.html#trules).",SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-22,"Specifically, this means that if a FHIR Reference points to the resource type and `id` of a resource of another 'create' Action in the same Suggestion, then the reference to that resource **SHALL** be updated by the CRD client to point to the `id` assigned by the client when performing the 'create'.",SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-23,CRD Clients **SHALL** perform 'creates' in an order that ensures that referenced resources are created prior to referencing resources.,SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-26,CRD clients **SHALL** only invoke hooks on payer services where the patient record indicates active coverage with the payer associated with the service and where there is no recorded indication the patient intends to bypass insurance coverage (i.e. the service or product is not flagged as 'patient-pay').,SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-27,"CRD clients **MAY** limit hook invocation to only those payers that are believed to potentially have relevant information related to the current action - for example, clinical guidance, contraindication detection, etc.",MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-28,"To avoid confusion for providers, where a patient has multiple active coverages that could be relevant to the current order/appointment/etc., CRD clients **SHALL** select from those coverages which is most likely to be primary and only solicit coverage information for that one payer.",SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-29-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-29,This primary coverage **SHALL** be the only one included in the prefetch content as part of the CRD request,SHALL,CRD Client,false,,,"1.2.1.3.04, 1.2.1.3.05, 1.2.2.3.04, 1.2.2.3.05, 1.2.3.3.04, 1.2.3.3.05, 1.2.4.3.04, 1.2.4.3.05, 1.2.5.3.04, 1.2.5.3.05, 1.2.6.3.04, 1.2.6.3.05","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_coverage_verification" +hl7.fhir.us.davinci-crd_2.2.1,dev-29-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-29,[O]ther [non-primary] coverages **MAY** be exposed over the CRD client's FHIR API.,MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-30,"If they invoke CRD on other payers, CRD clients **SHALL** ensure that response types that return coverage information are disabled for those 'likely secondary' payers.",SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-31,"In situations where a CRD client determines that there are different primary coverages for different items in the same order action, they **MAY** choose to send separate CRD calls (each with its own access token) for the collection of services pertinent to that Coverage.",MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-32,"Where the patient has multiple active coverages that the CRD client deems appropriate to call the respective CRD servers for, the CRD client **SHALL** invoke all CRD server calls in parallel and display results simultaneously to ensure timely response to user action.",SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-1,"CRD servers and CRD clients **MAY** mutually agree to support additional hooks, additional card patterns, additional resources, additional extensions, etc. not found in this specification.",MAY,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-3,"If a CRD client does not receive a response within the 5 or 10-second window, it **MAY** either abandon the call or process the response asynchronously.",MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-6,CRD clients **SHALL** provide a mechanism for providers to bypass a CRD process that is taking longer than the aforementioned time limit to ensure users are not blocked from proceeding with their business flow.,SHALL,CRD Client,false,,,1.4.02,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_long_running_hook-crd_v221_client_skip_long_running_attestation_test +hl7.fhir.us.davinci-crd_2.2.1,found-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-7,"Where a CRD client opts to not block users from proceeding for responses that come back in a period of time longer than the target time window in this guide (i.e., 5s or 10s), the client **SHOULD** ensure that users are made aware of the information when it is available.",SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-8,"For responses that come back in a time period that exceeds the time maximm duration specifd in this guide, CRD clients **MAY** ignore the resulting cards and/or system actions.",MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-12,"Where the selected code is not already a billing code and CRD clients are able to automatically determine what the corresponding billing code is, they **SHOULD** send a Coding with the billing code alongside the clinical code to reduce the risk of the receiving payer making a different translation.",SHOULD,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-16,"When the connection between a particular client and server has evolved to an automated configuration approach, CRD Clients **SHOULD** perform the discovery process on the CRD server at least once per day to detect any changes to supported hooks, prefetch requirements, and/or configuration options.",SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-17,"If a CRD client encounters an error when invoking a hook, they **SHOULD** re-run the discovery process before failing.",SHOULD,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-18,CRD clients and servers **MAY** leverage the [payer registry](http://hl7.org/fhir/us/davinci-pdex-plan-net) developed by PDex (which will eventually fold into the [national directory under FAST](https://confluence.hl7.org/display/FAST/National+Healthcare+Directory)) as a means of determining which endpoints exist for which payers as candidates for configuration.,MAY,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-19,"Once plans are in the national directory, CRD clients **SHOULD** include that plan identifier to uniquely identify a plan.",SHOULD,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-20,"When a CRD client invokes a CRD server via CDS Hooks, it **SHALL** provide an access token that allows the CRD server to retrieve additional patient information.",SHALL,CRD Client,false,,,"1.2.1.3.06, 1.2.2.3.06, 1.2.3.3.06, 1.2.4.3.06, 1.2.5.3.06, 1.2.6.3.06","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_data_fetch_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_data_fetch_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_data_fetch_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_data_fetch_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_data_fetch_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_data_fetch_verification" +hl7.fhir.us.davinci-crd_2.2.1,found-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-21,The CRD client **SHALL** limit the scopes provided in their access token as narrowly as feasible to reflect the data requirements identified by the CRD server as necessary to perform their decision support.,SHALL,CRD Client,false,,,"1.2.1.3.07, 1.2.2.3.07, 1.2.3.3.07, 1.2.4.3.07, 1.2.5.3.07, 1.2.6.3.07","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_granted_scopes, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_granted_scopes, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_granted_scopes, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_granted_scopes, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_granted_scopes, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_granted_scopes" +hl7.fhir.us.davinci-crd_2.2.1,found-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-22,Such access tokens **SHOULD** have an expiration time of no longer than 30 seconds which should be sufficient for even 'parallel' decision support with something like 'Order Select' where a user continues to work while the decision support call is processing.,SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-23,CRD Clients **SHALL** be able to parse and execute prefetches that use the simple FHIRPath approach and not fail if that syntax is present.,SHALL,CRD Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +hl7.fhir.us.davinci-crd_2.2.1,found-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-24,"For this release of the IG, conformant CRD clients and servers **SHALL** support the CDS Hooks prefetch capability.",SHALL,"CRD Client,CRD Server",false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +hl7.fhir.us.davinci-crd_2.2.1,found-25-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-25,Clients **SHALL** be able to supply the information listed in the bullets above via prefetch for the request resources they support when data exists using the search parameters and FHIRPath expressions covered in the [standard prefetch](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#standard-prefetch) section below. This includes the ability to fetch subsets of the specified queries.,SHALL,CRD Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04, 1.3.05","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook-crd_v221_client_prefetch_complete_and_subset" +hl7.fhir.us.davinci-crd_2.2.1,found-25-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-25,Clients **SHALL** be able to supply ... subsets of the specified [prefetch] queries.,SHALL,CRD Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04, 1.3.05","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook-crd_v221_client_prefetch_complete_and_subset" +hl7.fhir.us.davinci-crd_2.2.1,found-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-30,CRD client implementations **SHOULD NOT** depend on standardized prefetch key names or a specific ordering of search filters.,SHOULD NOT,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-31,CRD clients **SHALL** inspect the CDS Hooks discovery endpoint to determine exact prefetch key names and queries.,SHALL,CRD Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +hl7.fhir.us.davinci-crd_2.2.1,found-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-33,CRD clients and servers **SHALL** ignore unexpected elements when processing instances.,SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-35-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-35,"In the specific case of order-based hooks, ""what if"" **SHOULD** use the Order Sign hook",SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-35-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-35,"In the specific case of order-based hooks, ""what if"" ... **SHALL** pass the [unsolicited-determ](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html#expansion) configuration option with a value of 'false' to prevent the return of an unsolicited determination",SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-35-C,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-35,"In the specific case of order-based hooks, ""what if"" ... **MAY** use configuration options to prevent the return of other irrelevant types of cards (e.g., duplicate therapy).",MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-36-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-36,"When CRD clients pass resources to a CRD server as part of context, the resources **SHALL** have an 'id'",SHALL,CRD Client,false,,,"1.2.1.3.01, 1.2.2.3.01, 1.2.3.3.01, 1.2.4.3.01, 1.2.5.3.01, 1.2.6.3.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance" +hl7.fhir.us.davinci-crd_2.2.1,found-36-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-36,"When CRD clients pass resources to a CRD server as part of context, the ... 'id' [of each resource] **SHALL** be usable as a target for references [(in resource ids and Reference elements)] in resources manipulated by CDS Hooks actions and/or by SMART apps.",SHALL,CRD Client,false,,,"2.1.2.01, 2.2.2.01, 2.3.2.01","crd_client_v221-crd_v221_client_fhir_api-us_core_v311_fhir_api-crd_v221_us_core_311_client_update_verification-crd_v221_client_coverage_info_update, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-crd_v221_us_core_610_client_update_verification-crd_v221_client_coverage_info_update, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-crd_v221_us_core_700_client_update_verification-crd_v221_client_coverage_info_update" +hl7.fhir.us.davinci-crd_2.2.1,found-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-37,"Therefore, in addition to any logging performed for security purposes, both CRD clients and CRD servers **SHALL** retain logs of all CRD-related hook invocations and their responses for access in the event of a dispute.",SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-39,CRD clients **SHOULD** ensure that multiple cards with the same advice are handled in a way that will not create a burden on the user.,SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-40,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-40,Conformant systems **SHOULD** omit non-significant whitespace in transmitted instances for performance reasons.,SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-1,CRD Clients conforming to this implementation guide **SHALL** be able to determine the correct payer CRD server to use for each request.,SHALL,CRD Client,false,,,"1.2.1.3.05, 1.2.2.3.05, 1.2.3.3.05, 1.2.4.3.05, 1.2.5.3.05, 1.2.6.3.05","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_coverage_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_coverage_verification" +hl7.fhir.us.davinci-crd_2.2.1,hook-2-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-2,CRD Clients conforming to this implementation guide **SHALL** support at least one of the hooks,SHALL,CRD Client,false,,,"1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign" +hl7.fhir.us.davinci-crd_2.2.1,hook-2-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-2,"CRD Clients conforming to this implementation guide **SHALL** support ... (for order-centric hooks), at least one of the order resource types listed below",SHALL,CRD Client,false,,,"1.2.4, 1.2.5, 1.2.6","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign" +hl7.fhir.us.davinci-crd_2.2.1,hook-2-C,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-2,CRD Clients conforming to this implementation guide … **SHOULD** support all [order resource types listed below] that apply to the context of their system [for order centric hooks].,SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-3,"For systems that support ordering products or services covered by one of the CRD-supported request types, such clients **SHALL** support the order-sign hook for the order types they support.",SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-5,CRD Clients and CRD Servers **MAY** choose to support additional hooks available in the registry on the [CDS Hooks continuous integration build](https://build.fhir.org/ig/HL7/cds-hooks-library) or custom hooks defined elsewhere.,MAY,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-6,"When supporting hooks not covered by this guide, systems **SHOULD** adhere to the general conformance expectations defined in this specification for those additional hooks.",SHOULD,"CRD Client,CRD Server",true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-7,CRD clients **SHALL** allow hook invocation to occur transparently as part of user workflow.,SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-8,"CRD clients **SHALL NOT** require transcription of order, appointment, or other data into a separate interface distinct from regular provider workflow unless performing ""what if"" situations.",SHALL NOT,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-11,The CRD Client **MAY** display to the user that the Coverage Requirements Discovery Service is unavailable.,MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-12,"If additional information (e.g. number to call) is available, it **MAY** also be included in the message to the user.",MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-15,A CRD client **MAY** opt to re-invoke a CRD hook either due to manual user intervention or automatically in the background if there is a reason to believe that a substantive change in the patient's record and/or coverage might produce a different CRD response.,MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-17,"These hooks **MAY** return cards or system actions, but are not expected to, and CRD clients are free to ignore any cards or actions returned.",MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-18,CRD clients **SHOULD** use the [configuration options](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#new-hook-configuration-mechanism) to instruct CRD servers to not even try to return responses if the client does not intend to display/process them.,SHOULD,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-20,"The body of hook invocations **SHALL** conform to the [CRD CDSHooks Request logical model. Additionally, profiles are provided in a table for the hook sections below.",SHALL,CRD Client,false,,,"1.2.1.3.01, 1.2.2.3.01, 1.2.3.3.01, 1.2.4.3.01, 1.2.5.3.01, 1.2.6.3.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance" +hl7.fhir.us.davinci-crd_2.2.1,hook-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-21,CRD clients **SHALL** ensure that data included in the hook invocation complies with the listed profiles.,SHALL,CRD Client,false,,,"1.2.1.3.01, 1.2.1.3.03, 1.2.2.3.01, 1.2.2.3.03, 1.2.3.3.01, 1.2.3.3.03, 1.2.4.3.01, 1.2.4.3.03, 1.2.5.3.01, 1.2.5.3.03, 1.2.6.3.01, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,hook-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-24,The 'context' field in invocations of the appointment-book hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDAppointmentBookContext.html),SHALL,CRD Client,true,,,1.2.1.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,hook-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-26,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the appointment-book hook.",SHALL,"CRD Client,CRD Server",false,,,1.2.1.4.03,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group04-crd_v221_client_hook_response_support_coverage_information +hl7.fhir.us.davinci-crd_2.2.1,hook-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-27,The 'context' field in invocations of the encounter-start hook **SHALL** conform to the logical model specified [here](http://hl7.org/fhir/tools/1.1.2/StructureDefinition-CDSHookEncounterStartContext.html),SHALL,CRD Client,true,,,1.2.3.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,hook-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-29,The 'context' field in invocations of the encounter-discharge hook **SHALL** conform to the logical model specified [here](http://hl7.org/fhir/tools/1.1.2/StructureDefinition-CDSHookEncounterDischargeContext.html),SHALL,CRD Client,true,,,1.2.2.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,hook-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-31,The 'context' field in invocations of the order-dispatch hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDOrderDispatchContext.html),SHALL,CRD Client,true,,,1.2.5.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,hook-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-33,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-dispatch hook.",SHALL,"CRD Client,CRD Server",false,,,1.2.5.4.03,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group04-crd_v221_client_hook_response_support_coverage_information +hl7.fhir.us.davinci-crd_2.2.1,hook-35,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-35,The 'context' field in invocations of the order-select hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDOrderSelectContext.html),SHALL,CRD Client,true,,,1.2.4.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,hook-36,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-36,"Where CRD Clients have an appropriate workflow and data capture mechanism, the order-select hook **MAY** be used in scenarios that do not involve creating a true order.",MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-37,The 'context' field in invocations of the order-sign hook **SHALL** conform to the logical model specified [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDOrderSignContext.html),SHALL,CRD Client,true,,,1.2.6.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,hook-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-39,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-select hook.",SHALL,"CRD Client,CRD Server",false,,,1.2.6.4.03,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group04-crd_v221_client_hook_response_support_coverage_information +hl7.fhir.us.davinci-crd_2.2.1,impl-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-1,Clients that suppress 'default presumption' coverage-information of messages **SHALL** mitigate the potential for misinterpretation in the event CRD is unavailable.,SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,impl-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-3,"Even if implemented using multiple components, there is still a requirement that the exchanges between the provider HIT (including any ePA coordinators) and the payer HIT (including any ePA coordinators) **SHALL** replicate all of the defined exchanges between provider and payer.",SHALL,"CRD Client,CRD Server",false,,,suite,crd_client_v221 +hl7.fhir.us.davinci-crd_2.2.1,impl-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-4,"In situations where CRD clients are aware of the likely billing codes at the time of ordering, they **MAY** send these codes as additional CodeableConcept.coding repetitions to assist in server processing.",MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,metric-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/metrics.html#ci-c-metric-1,"Each of these IGs recommends a set of metrics that **SHOULD** or **MAY** be collected by their respective implementations to facilitate the evaluation of adoption, functionality, processes, and improved outcomes.",SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,ops-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/operational.html#ci-c-ops-1,"CRD clients and servers **SHOULD** support encounter-start and order-select, both to allow payer caching and to allow payers to return useful responses when possible (e.g. coverage expired, service not covered) with the limited information available in those hooks.",SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,prof-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-no-order.html#ci-c-prof-1,CRD Clients **SHALL** use either this Appointment without Order profile and/or the [with-order](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-with-order.html) to provide `appointments` context objects to CRD Servers when invoking the [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book) hook as well as to [resolve other references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to Appointment resources.,SHALL,CRD Client,false,,,1.2.1.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,prof-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-with-order.html#ci-c-prof-2,CRD Clients **SHALL** use either this Appointment with Order and/or the [no-order](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-appointment-no-order.html) to provide `appointments` context objects to CRD Servers when invoking the [appointment-book](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#appointment-book) hook as well as to [resolve other references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to Appointment resources.,SHALL,CRD Client,false,,,1.2.1.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance +hl7.fhir.us.davinci-crd_2.2.1,prof-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-communicationrequest.html#ci-c-prof-3,CRD Clients SHALL use the CRD CommunicationRequest profile to resolve references to CommunicationRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.01, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.01, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-coverage.html#ci-c-prof-4,CRD Clients **SHALL** use the CRD Coverage profile to [resolve references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to insurance Coverage resources passed to CRD Servers.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-device.html#ci-c-prof-5,CRD Clients **SHALL** use the CRD Device profile to [resolve references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to Device resources passed to CRD Servers.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-devicerequest.html#ci-c-prof-6,CRD Clients SHALL use the CRD DeviceRequest profile to resolve references to DeviceRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.01, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.01, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-encounter.html#ci-c-prof-7,"CRD Clients SHALL use the CRD Encounter profile to resolve references to Encounter resources passed to CRD Servers, including encounterId context references.",SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-location.html#ci-c-prof-8,CRD Clients **SHALL** use the CRD Location profile to [resolve references](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#additional-data-retrieval) to insurance Location resources passed to CRD Servers.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-medicationrequest.html#ci-c-prof-9,CRD Clients SHALL use the CRD MedicationRequest profile to resolve references to MedicationRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.01, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.01, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-nutritionorder.html#ci-c-prof-10,CRD Clients SHALL use CRD NutritionOrder profile to resolve references to NutritionOrder resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.01, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.01, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-servicerequest.html#ci-c-prof-11,CRD Clients SHALL use the CRD ServiceRequest profile to resolve references to ServiceRequest resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.01, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.01, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-visionprescription.html#ci-c-prof-12,CRD Clients SHALL use the CRD VisionPrescription profile to resolve references to VisionPrescription resources passed to CRD Servers (e.g. selections context references) and to populate draftOrders context objects.,SHALL,CRD Client,false,,,"1.2.1.3.03, 1.2.2.3.03, 1.2.3.3.03, 1.2.4.3.01, 1.2.4.3.03, 1.2.5.3.03, 1.2.6.3.01, 1.2.6.3.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_profiles, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_profiles" +hl7.fhir.us.davinci-crd_2.2.1,prof-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-location.html#ci-c-prof-13,"If a Location is a fine-grained location such as a bed or room, the address **SHALL** be propagated from the higher-level location it is part of.",SHALL,CRD Client,true,,,1.3.02,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook-crd_v221_client_location_address_propagation +hl7.fhir.us.davinci-crd_2.2.1,prof-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-profile-medicationrequest.html#ci-c-prof-14,"While the codes for the medication are expected to be drawn from RxNorm, EHRs **MAY** send additional coding repetions to communicate other code systems (e.g. HCPCS J codes).",MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-14,Conformant CRD clients and services **SHALL** support the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#coverage-information-response-type) response type.,SHALL,"CRD Client,CRD Server",false,,,1.3.01,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook-crd_v221_client_card_must_support_coverage_information +hl7.fhir.us.davinci-crd_2.2.1,resp-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-15,Conformant CRD clients and services **SHOULD** support the additional (non-coverage information) types defined by this guide.,SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-31,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-31,"If a CRD client submits a claim related to an order for which it has received a coverage-information extension for the coverage type associated with the claim, that claim **SHALL** include the `coverage-assertion-id` in the form of a FHIR ServiceRequest or other Request resource with an embedded coverage-information extension as an attachment to the X12 837 submission and, if applicable, the satisfied-pa-id in the X12 837 REF-Prior Authorization segment.",SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-34,Systems **MAY** make CRD calls to servers related to orders even if there is already a coverage assertion recorded on the order.,MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-40,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-40,"When a *coverage-information* response type indicates that additional clinical or patient documentation is needed and the CRD client supports DTR, CRD clients **SHALL** ensure that clinical users have an opportunity to launch their DTR solution as part of the current workflow.",SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-41,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-41,CRD clients **SHOULD** allow clinical users to have an opportunity to launch their DTR solution but **SHOULD** make it clear that the information to be captured is non-clinical.,SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-46,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-46,"If a system action containing a coverage-information extension is returned, the CRD client **SHALL** retain that coverage-information extension and expose it as part of the Request resource in all subsequent communications with that payer, including communications made using DTR and PAS.",SHALL,CRD Client,true,,,"2.1.2.01, 2.2.2.01, 2.3.2.01","crd_client_v221-crd_v221_client_fhir_api-us_core_v311_fhir_api-crd_v221_us_core_311_client_update_verification-crd_v221_client_coverage_info_update, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-crd_v221_us_core_610_client_update_verification-crd_v221_client_coverage_info_update, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-crd_v221_us_core_700_client_update_verification-crd_v221_client_coverage_info_update" +hl7.fhir.us.davinci-crd_2.2.1,resp-48,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-48,"CRD clients and servers **SHALL** support the new CDS Hooks system action functionality to cause annotations to automatically be stored on the relevant request, appointment, etc. without any user intervention.",SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-49,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-49,"In this case, the discrete information propagated into the order extension **SHALL** be available to the user for viewing. However, this might be managed with icons, flyovers, or alternate mechanisms than traditional CDS Hooks card rendering.",SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-50,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-50,"CRD clients **MAY** be configured to not execute system actions under some circumstances, for example if the order has been cancelled or abandoned.",MAY,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-61,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-61,CRD clients supporting the Request Form Completion response type **SHALL** support both the card and systemAction approach.,SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-64,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-64,CRD clients **SHOULD** retain a copy of all completed forms for future reference.,SHOULD,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-67,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-67,CRD clients supporting the Update Coverage Records response type **SHALL** support both the card and system action approach.,SHALL,CRD Client,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-68,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-68,"If receiving a system action, a CRD client **MAY** opt to place the updated record in a holding area for human review rather than directly modifying their source of truth.",MAY,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-1,Implementers SHALL adhere to inherited security and privacy rules,SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-2,"As per the CDS Hooks specification, communications between CRD clients and CRD servers **SHALL** use TLS.",SHALL,"CRD Client,CRD Server",false,,,"1.2.1.3.08, 1.2.2.3.08, 1.2.3.3.08, 1.2.4.3.08, 1.2.5.3.08, 1.2.6.3.08","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_secured_transport" +hl7.fhir.us.davinci-crd_2.2.1,sec-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-3,CRD servers and CRD clients **SHOULD** enforce a minimum version and other TLS configuration requirements based on [HRex rules](http://hl7.org/fhir/us/davinci-hrex/1.2.0/security.html#exchange-security) for PHI exchange.,SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-4,CRD clients that support the Launch SMART Application Response Type **SHALL** support running applications that adhere to the SMART on FHIR [confidential app](https://hl7.org/fhir/smart-app-launch/STU2.2/app-launch.html#support-for-public-and-confidential-apps) profile.,SHALL,CRD Client,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-7,CRD clients **SHALL** ensure that the resource identifiers exposed over the CRD interface are distinct from and have no determinable relationship with any business identifiers associated with those records.,SHALL,CRD Client,false,,,"","" +cds-hooks_3.0.0-ballot,1,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,All data exchanged through production RESTful APIs MUST be sent and received as JSON (JavaScript Object Notation) structures.,SHALL,"Client,Service",,,,suite,crd_client_v221 +cds-hooks_3.0.0-ballot,2,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,All data exchanged through production RESTful APIs MUST be ... transmitted over HTTPS,SHALL,"Client,Service",,,,"1.2.1.3.08, 1.2.2.3.08, 1.2.3.3.08, 1.2.4.3.08, 1.2.5.3.08, 1.2.6.3.08","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_secured_transport" +cds-hooks_3.0.0-ballot,221,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,JSON comments and trailing commas SHOULD NOT be transmitted as they are not part of the JSON specification.,SHOULD NOT,"Client,Service",,,,"","" +cds-hooks_3.0.0-ballot,3,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"JSON elements SHALL NOT be null … [or] empty, unless otherwise specified (e.g. to indicate no guidance with an empty array of cards in the CDS Hooks response).",SHALL NOT,"Client,Service",,,,"1.2.1.3.01, 1.2.1.4.01, 1.2.2.3.01, 1.2.2.4.01, 1.2.3.3.01, 1.2.3.4.01, 1.2.4.3.01, 1.2.4.4.01, 1.2.5.3.01, 1.2.5.4.01, 1.2.6.3.01, 1.2.6.4.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group04-crd_v221_inferno_response_validation" +cds-hooks_3.0.0-ballot,222,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"If a JSON attribute is defined as OPTIONAL, and does not have a value, implementers MUST omit it.",SHALL,"Client,Service",,,,"1.2.1.3.01, 1.2.1.4.01, 1.2.2.3.01, 1.2.2.4.01, 1.2.3.3.01, 1.2.3.4.01, 1.2.4.3.01, 1.2.4.4.01, 1.2.5.3.01, 1.2.5.4.01, 1.2.6.3.01, 1.2.6.4.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group04-crd_v221_inferno_response_validation" +cds-hooks_3.0.0-ballot,223,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"Unless otherwise specified, JSON attribute values SHALL NOT be null or empty, so null, """", [], or {} are prohibited",SHALL NOT,"Client,Service",,,,"1.2.1.3.01, 1.2.1.4.01, 1.2.2.3.01, 1.2.2.4.01, 1.2.3.3.01, 1.2.3.4.01, 1.2.4.3.01, 1.2.4.4.01, 1.2.5.3.01, 1.2.5.4.01, 1.2.6.3.01, 1.2.6.4.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group04-crd_v221_inferno_response_validation" +cds-hooks_3.0.0-ballot,224,https://cds-hooks.hl7.org/2026Jan/en/index.html#use-of-json,"If a JSON attribute is defined with as OPTIONAL, and does not have a value, implementers SHALL omit it.",SHALL,"Client,Service",,,,"1.2.1.3.01, 1.2.1.4.01, 1.2.2.3.01, 1.2.2.4.01, 1.2.3.3.01, 1.2.3.4.01, 1.2.4.3.01, 1.2.4.4.01, 1.2.5.3.01, 1.2.5.4.01, 1.2.6.3.01, 1.2.6.4.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group04-crd_v221_inferno_response_validation, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_conformance, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group04-crd_v221_inferno_response_validation" +cds-hooks_3.0.0-ballot,225,https://cds-hooks.hl7.org/2026Jan/en/index.html#capability-documentation,[C]lients SHALL indicate whether they support the actionSelectionBehavior feature,SHALL,Client,,,,"","" +cds-hooks_3.0.0-ballot,226,https://cds-hooks.hl7.org/2026Jan/en/index.html#capability-documentation,[C[lients … SHOULD document any other feature support necessary to ensure safe operation of CDS Services.,SHOULD,Client,,,,"","" +cds-hooks_3.0.0-ballot,15,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,A CDS Client SHALL call a CDS Service by POSTing a JSON document to the service,SHALL,Client,,,,suite,crd_client_v221 +cds-hooks_3.0.0-ballot,17,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"CDS Clients may add additional requirements for the triggering of a hook, based upon the user, workflow, CDS Service or other reasons (e.g. if the service is provided by a payer, the patient has active coverage with that payer).",MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,21,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: fhirAuthorization +- optionality: OPTIONAL +- type: object +- description: A structure holding an OAuth 2.0 bearer access token granting the CDS Service access to FHIR resources, along with supplemental information relating to the token.",MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,23,https://cds-hooks.hl7.org/2026Jan/en/index.html#http-request-1,"The [service invocation] request SHALL include a JSON POST body with the following input fields [including]: +- field: prefetch +- optionality: OPTIONAL +- type: object +- description: The FHIR data that was prefetched by the CDS Client",MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,25,https://cds-hooks.hl7.org/2026Jan/en/index.html#hookinstance,the hookInstance is globally unique,SHALL,Client,,,,1.3.04,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook-crd_v221_client_hook_instances_unique +cds-hooks_3.0.0-ballot,26,https://cds-hooks.hl7.org/2026Jan/en/index.html#hookinstance,the hookInstance ... should contain enough entropy to be un-guessable.,SHOULD,Client,,,,"","" +cds-hooks_3.0.0-ballot,30,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"The [prefetched] FHIR resources are passed as key-value pairs, with each key matching a key described in the discovery response, and each value being a FHIR resource. Note that in the case of searches, this resource may be a searchset Bundle.",SHALL,Client,true,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,32,https://cds-hooks.hl7.org/2.0/#providing-fhir-resources-to-a-cds-service,"Some CDS Clients MAY pass prefetched data, along with a bearer token for the CDS Service to use if additional resources are required.",MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,35,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"To allow for prefetch templates that are dependent on the workflow context, prefetch templates may include references to context using prefetch tokens.",MAY,"Client,Service",false,,,"","" +cds-hooks_3.0.0-ballot,37,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"CDS Client MAY choose to honor zero, some, or all of the desired prefetch templates",MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,38,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,A CDS Client MAY ... choose the most appropriate source for … [its prefetch] data,MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,39,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"[To avoid a network call,] the CDS Client MAY ... [use] prefetched data already in memory",MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,40,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"[To minimize the number of calls,] the CDS Client MAY compute an efficient set of prefetch templates from multiple CDS Services",MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,41,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,The CDS Client MAY satisfy some of the desired prefetched templates via some internal service or even its own FHIR server.,MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,42,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"[When providing prefetched data, t]he CDS Client SHALL only provide access to resources that are within the user's authorized scope.",SHALL,Client,false,,,"","" +cds-hooks_3.0.0-ballot,231,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"As part of preparing the request, a CDS Client processes each prefetch template it intends to satisfy by replacing the prefetch tokens in the prefetch template to construct a relative FHIR request URL.",SHALL,Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,43,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,The relative URL [constructed when a CDS client processes prefetch templates] may be appended to the base URL for the CDS Client's FHIR server and directly invoked,MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,44,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,CDS Clients may use internal infrastructure to satisfy the [prefetch] request in the same way that invoking against the FHIR server would.,MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,45,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,the prefetched data given to the CDS Service MUST be equivalent to the data the CDS Service would receive if it were making its own call to the CDS Client's FHIR server using the parameterized prefetch template.,SHALL,Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,46,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,Prefetch data for other services registered to the same hook MUST NOT be provided [to a CDS service that has not requested or is not authorized to receive it],SHALL NOT,Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,47,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,[CDS] services SHALL only receive the data they requested in their prefetch.,SHALL,Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,232,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,The resulting response [of the prefetch query] is passed along to the CDS Service using the prefetch parameter,SHALL,Client,false,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,48,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,CDS Client MAY paginate prefetch results,MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,50,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"If the CDS Client encounters errors prefetching the requested data, OperationOutcome(s) SHOULD be used to communicate those errors to prevent the CDS Service from incurring an unneeded follow-up query.",SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,51,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,CDS Clients MUST omit the prefetch key if relevant details cannot be provided (e.g. intermittent connectivity issues),SHALL,Client,false,,,"","" +cds-hooks_3.0.0-ballot,53,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-template,"If the CDS Client has no data to populate a template prefetch key, the prefetch template key MUST have a value of null. In case the prefetch url is a single-resource request, the search result may be null, otherwise it is a search and could be a bundle with zero entries.",SHALL,Client,true,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,233,https://cds-hooks.hl7.org/2026Jan/en/index.html#prefetch-tokens-containing-simpler-fhirpath,"[When evaluating prefetch tokens] CDS Clients can support a limited, targeted subset of FHIRPath aligned with [x-fhir-query](https://hl7.org/fhir/r5/fhir-xquery.html)...: +- the 'context' object, which corresponds to the context element passed in the CDS Hooks call +- variables that correspond to the names of prior prefetch templates +- simple chaining through element paths +- the following FHIRPath functions: ofType(), resolve(), today() +- the '+' and '-' math options",MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,235,https://cds-hooks.hl7.org/2026Jan/en/index.html#simple-fhirpath-for-relative-dates,"[When evaluating prefetch tokens] CDS Clients SHOULD support: +- the [FHIRPath `today()`](https://hl7.org/fhirpath/N1/index.html#current-date-and-time-functions) function +- [addition](https://hl7.org/fhirpath/N1/index.html#addition-2) and [subtraction](https://hl7.org/fhirpath/N1/index.html#subtraction-2) of quantity unit [days](https://hl7.org/fhirpath/N1/index.html#datetime-arithmetic),",SHOULD,Client,,,,"","" +cds-hooks_3.0.0-ballot,237,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] CDS Clients SHOULD support paths to References,SHOULD,Client,,,,"","" +cds-hooks_3.0.0-ballot,238,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] CDS Clients … MAY support paths to any element within a FHIR resource in context.,MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,239,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] FHIRPath collections of simple data types are represented as comma-delimited strings,SHALL,Client,true,,,1.3.03,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook-crd_v221_client_fhir_path_collection_as_comma_delimited_string +cds-hooks_3.0.0-ballot,240,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens] other prefetch parameters can be referenced in token expressions as FHIRPath variables by placing '%' in front of the prefetch parameter name.,SHALL,Client,,,,"1.2.1.3.04, 1.2.2.3.04, 1.2.3.3.04, 1.2.4.3.04, 1.2.5.3.04, 1.2.6.3.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_prefetch_complete, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete" +cds-hooks_3.0.0-ballot,242,https://cds-hooks.hl7.org/2026Jan/en/index.html#simpler-fhirpath-support-for-querystring-syntax,[When evaluating prefetch tokens a] prefetch token ... Contain[ing] multiple path selectors delimited with pipes [SHALL be interpretted as a union of the individual parts],SHALL,Client,,,,1.3.03,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook-crd_v221_client_fhir_path_collection_as_comma_delimited_string +cds-hooks_3.0.0-ballot,63,https://cds-hooks.hl7.org/2026Jan/en/index.html#fhir-resource-access,"[When executing a CDS request on behalf of a user,] the data to which the CDS Service is given access by the CDS Client MUST be limited to the same restrictions and authorizations afforded the current user.",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,64,https://cds-hooks.hl7.org/2026Jan/en/index.html#fhir-resource-access,"[When executing a CDS request on behalf of a user,] the access token SHALL be scoped to: The CDS Service being invoked [and] the current user",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,71,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,"[When sending a fhirAuthorization request parameter and] the access token is restricted to a specific patient, [the] patient field SHOULD be populated to identify the FHIR id of that patient [as a] string data type",SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,72,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,The `expires_in` value is established by the authorization server and SHOULD BE very short lived,SHOULD,Client,false,,,"","" +cds-hooks_3.0.0-ballot,73,https://cds-hooks.hl7.org/2026Jan/en/index.html#passing-the-access-token-to-the-cds-service,CDS Clients SHOULD revoke an issued access token upon the completion of the CDS Hooks request/response to limit the validity period of the token.,SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,79,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When receiving a card object] the uuid field SHALL be included in any subsequent calls to the CDS service's feedback endpoint.,SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,82,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,[When sending a card object] the uuid field MAY be used for auditing and logging cards,MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,86,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"For non-urgent cards, the CDS Client MAY hide [the information from the detail field] until the user clicks a link like ""view more details.",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,89,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When sending a card object,] the CDS Client MAY use [the indicator] field to help make UI display decisions such as sort order or coloring.",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,91,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] the source field [/ source object] should be the primary source of guidance for the decision support the card represents.",SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,97,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] CDS Clients that do not understand the value [in the selectionBehavior field] MUST treat the card as an error.",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,101,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] if override reasons are present … the CDS Client SHOULD present these reasons to the clinician when they dismiss a card.",SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,102,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-attributes,"[When receiving a card object,] if override reasons are present … a CDS Client MAY augment the override reasons presented to the user with its own reasons.",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,114,https://cds-hooks.hl7.org/2026Jan/en/index.html#source,"[When receiving a Source object,] the CDS Client may ignore or scale the image during display as appropriate for user experience.",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,125,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"Within a suggestion, all actions … [SHALL use] AND [logic], such that a user selecting a suggestion selects all of the actions within it [unless a different behavior is indicated by the `actionSelectionBehavior` field].",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,126,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,"[When receiving a Suggestion object,] When a suggestion contains multiple actions, the actions SHOULD be processed as per FHIR's rules for processing [transactions](https://hl7.org/fhir/http.html#trules) with the CDS Client's fhirServer as the base url for the inferred full URL of the transaction bundle entries. (Specifically, deletes happen first, then creates, then updates).",SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,247,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion,[When receiving a Suggestion object Clients MAY not support the `actionSelectionBehavior` field],MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,129,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When receiveing an Action object,] the description field MAY be presented to the end-user",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,248,https://cds-hooks.hl7.org/2026Jan/en/index.html#action,"[When receiveing an Action object, t]he CDS Client may reject conflicting changes, for example, due to [concurrency](https://www.hl7.org/fhir/http.html#concurrency).",MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,137,https://cds-hooks.hl7.org/2026Jan/en/index.html#reasons-for-rejecting-a-card,CDS Clients MAY incorporate [the card.overrideReason.display] into their user interface,MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,143,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,"[When receiving a Link object and the link.type field is smart,] CDS Client should ensure the SMART app launch URL is populated with the appropriate SMART launch parameters.",SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,251,https://cds-hooks.hl7.org/2026Jan/en/index.html#link,[When receiving a Link object] CDS Clients SHOULD support passing appCOntext from the CDS Service to a launched SMART app.,SHOULD,Client,,,,"","" +cds-hooks_3.0.0-ballot,255,https://cds-hooks.hl7.org/2026Jan/en/index.html#system-action,[When receiving a systemAction] actions aren't displayed to users in cards,SHOULD NOT,Client,,,,"","" +cds-hooks_3.0.0-ballot,256,https://cds-hooks.hl7.org/2026Jan/en/index.html#system-action,[When receiving a systemAction] actions … can be automatically applied without requiring user intervention … and the CDS Client is expected to process them.,SHOULD,Client,,,,"","" +cds-hooks_3.0.0-ballot,149,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,a CDS Client SHOULD be capable of sending feedback [to send suggestion analytics to the CDS service],SHOULD,Client,false,,,"","" +cds-hooks_3.0.0-ballot,150,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,CDS Clients should report ... end-user interactions as feedback.,SHOULD,Client,false,,,"","" +cds-hooks_3.0.0-ballot,151,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,A CDS Client provides feedback by POSTing a JSON document,SHALL,Client,false,,,"","" +cds-hooks_3.0.0-ballot,152,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"The [service's] feedback endpoint can ([SHALL]) be constructed from the CDS Service endpoint and a path segment of ""feedback"" as {baseUrl}/cds-services/{service.id}/feedback",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,153,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"The feedback endpoint [for submission] can ([SHALL]) be constructed from the CDS Service endpoint and a path segment of ""feedback"" as {baseUrl}/cds-services/{service.id}/feedback",SHALL,Client,false,,,"","" +cds-hooks_3.0.0-ballot,154,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,The request to the feedback endpoint SHALL be an object containing an array [of [Feedback](https://cds-hooks.hl7.org/2.0/#feedback) objects],SHALL,Client,false,,,"","" +cds-hooks_3.0.0-ballot,155,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the card field is required [and SHALL be a] string data type [containing] the card.uuid from the CDS Hooks response",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,156,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the outcome field is required [and SHALL be a] string data type [with a value of either] accepted or overridden",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,158,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the acceptedSuggestions field is an array of json objects identifying one or more of the user's AcceptedSuggestions [and is r]equired [when feedback.outcome is accepted]",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,159,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the overrideReason field is a overrideReason object",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,160,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the overrideReason field is optional",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,161,https://cds-hooks.hl7.org/2026Jan/en/index.html#feedback,"[When sending a feedback object,] the outcomeTimestamp field is required [and SHALL be a] string data type [using the] [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) representation of the date and time in Coordinated Universal Time (UTC) when action was taken on the card, as profiled in [section 5.6 of RFC3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6)",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,162,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion-accepted,"[When sending an AcceptedSuggestion object], the id field is required [and SHALL be a] string data type [containing] card.suggestion.uuid from the CDS Hooks response",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,163,https://cds-hooks.hl7.org/2026Jan/en/index.html#suggestion-accepted,"If either the card or the suggestion has no uuid, the CDS Client does not send a [feedback] notification",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,164,https://cds-hooks.hl7.org/2026Jan/en/index.html#card-ignored,If the end-user doesn't interact with the CDS Service's card at all … the CDS Client [SHALL NOT] inform the CDS Service of the rejected guidance,SHALL NOT,Client,true,,,"","" +cds-hooks_3.0.0-ballot,257,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridden-guidance,A CDS Client may enable the end user to override guidance without providing an explicit reason for doing so. The CDS Client can inform the service when a card was dismissed by specifying an outcome of overridden without providing an overrideReason.,MAY,Client,,,,"","" +cds-hooks_3.0.0-ballot,165,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridereason,"[When sending a overrideReason object,] the reason field is required if user selected an override reason from the list of reasons provided in the Card [and SHALL be a] coding object",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,166,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridereason,"[When sending a overrideReason object,] the userComment field is a string data type",SHALL,Client,true,,,"","" +cds-hooks_3.0.0-ballot,167,https://cds-hooks.hl7.org/2026Jan/en/index.html#overridereason,"[When sending a overrideReason object,] the userComment field is optional [and contains a] further explain[ation of] why the card was rejected with free text.",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,168,https://cds-hooks.hl7.org/2026Jan/en/index.html#security-and-safety,"All data exchanged through the RESTful APIs MUST be transmitted over channels secured using the Hypertext Transfer Protocol (HTTP) over Transport Layer Security (TLS), also known as HTTPS and defined in [RFC2818](https://tools.ietf.org/html/rfc2818)",SHALL,"Client,Service",false,,,"1.2.1.3.08, 1.2.2.3.08, 1.2.3.3.08, 1.2.4.3.08, 1.2.5.3.08, 1.2.6.3.08","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_secured_transport" +cds-hooks_3.0.0-ballot,169,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,"Each CDS Client vendor/provider SHOULD maintain an ""allow list"" (and/or ""deny list"") of the CDS Services it has vetted",SHOULD,Client,false,,,"","" +cds-hooks_3.0.0-ballot,170,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,"Each CDS Client vendor/provider SHOULD maintain an ""allow list"" (and/or ""deny list"") of ... the Card links that have been deemed safe to display from within the CDS Client context",SHOULD,Client,false,,,"","" +cds-hooks_3.0.0-ballot,171,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,The CDS Service can be registered with the CDS Client's authorization server,MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,172,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,Every interaction between a CDS Client and a CDS Service is initiated by the CDS Client sending a service request to a CDS Service endpoint protected using the [Transport Layer Security protocol] (https://tools.ietf.org/html/rfc5246),SHALL,Client,false,,,"1.2.1.3.08, 1.2.2.3.08, 1.2.3.3.08, 1.2.4.3.08, 1.2.5.3.08, 1.2.6.3.08","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_secured_transport, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_secured_transport" +cds-hooks_3.0.0-ballot,173,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,CDS Client SHALL deny access to a requested resource if it is outside the user's authorized scope,SHALL,Client,false,,,"","" +cds-hooks_3.0.0-ballot,174,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-services,"If a CDS Client is satisfying prefetch requests from a CDS Service or sends a non-null fhirAuthorization object to a CDS Service so that it can call the FHIR server, the CDS Service MUST be pre-registered with the authorization server protecting access to the FHIR server",SHALL,Client,true,,,1.1.02,crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_registration-crd_v221_client_service_registration_attestation +cds-hooks_3.0.0-ballot,178,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"Each time a CDS Client transmits a request to a CDS Service which requires authentication, the request MUST include an Authorization header presenting the JWT as a “Bearer” token: +Authorization: Bearer {{JWT}}",SHALL,Client,true,,,"1.2.1.2.01, 1.2.2.2.01, 1.2.3.2.01, 1.2.4.2.01, 1.2.5.2.01, 1.2.6.2.01","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_decode_auth_token, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_decode_auth_token, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_decode_auth_token, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_decode_auth_token, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_decode_auth_token, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_decode_auth_token" +cds-hooks_3.0.0-ballot,179,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,mutual TLS MAY be used alongside JSON web tokens to establish trust of the CDS Client by the CDS Service,MAY,"Client,Service",false,,,"","" +cds-hooks_3.0.0-ballot,180,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The CDS Client MUST use its private key to digitally sign the JWT, using the [JSON Web Signatures (rfc7515)](https://tools.ietf.org/html/rfc7515) standard",SHALL,Client,false,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,181,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the alg field is required [and SHALL be a] string data type [containing] the cryptographic algorithm used to sign this JWT.",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,182,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the kid field is required [and SHALL be a] string data type [containing] the identifier of the key-pair used to sign this JWT.",SHALL,Client,true,,,"1.2.1.2.03, 1.2.2.2.03, 1.2.3.2.03, 1.2.4.2.03, 1.2.5.2.03, 1.2.6.2.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_header" +cds-hooks_3.0.0-ballot,183,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the kid field MUST be unique within the CDS Client's JWK Set.",SHALL,Client,true,,,"1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_retrieve_jwks" +cds-hooks_3.0.0-ballot,184,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the typ field is required [and SHALL be a] string data type and SHALL be 'JWT'",SHALL,Client,true,,,"1.2.1.2.03, 1.2.2.2.03, 1.2.3.2.03, 1.2.4.2.03, 1.2.5.2.03, 1.2.6.2.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_header" +cds-hooks_3.0.0-ballot,185,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the jku field is a url data type [containing] the URL to the JWK Set containing the public key(s)",SHALL,Client,true,,,"1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_retrieve_jwks" +cds-hooks_3.0.0-ballot,186,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT header,] the jku field is optional",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,187,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the iss field is required [and SHALL be a] string data type [containing] the URI of the issuer of the JWT",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,188,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The JWT MAY be self-issued by the CDS Client, or MAY be issued by a third-party identity provider.",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,189,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the aud field is required [and SHALL be a] string data type or an array of strings [per [rfc7519](https://tools.ietf.org/html/rfc7519#section-4.1.3) containing] the CDS Service endpoint that is being called by the CDS Client",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,190,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the exp field is required [and SHALL be a] number data type [containing the] expiration time integer for this authentication JWT, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC).",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,191,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the iat field is required [and SHALL be a] number data type [containing] the time at which this JWT was issued, expressed in seconds since the ""Epoch"" (1970-01-01T00:00:00Z UTC)",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,192,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the jti field is required [and SHALL be a] string data type [containing] a nonce string value that uniquely identifies this authentication JWT (used to protect against replay attacks)",SHALL,Client,true,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,193,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the tenant field is optional [SHALL be a] string data type [containing] an opaque string identifying the healthcare organization that is invoking the CDS Hooks request",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,194,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"[When sending a JWT payload,] the tenant field is optional",MAY,Client,true,,,"","" +cds-hooks_3.0.0-ballot,196,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"For CDS Hooks, [the aud] value MUST be the URL of the CDS Service endpoint being invoked",SHALL,Client,false,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,197,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The CDS Client MUST make its public key, expressed as a JSON Web Key (JWK), available in a JWK Set, as defined by [rfc7517](https://tools.ietf.org/html/rfc7517)",SHALL,Client,false,,,"1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_retrieve_jwks" +cds-hooks_3.0.0-ballot,198,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"The CDS Client MAY make its JWK Set available via a URL identified by the jku header field, as defined by [rfc7515 4.1.2](https://tools.ietf.org/html/rfc7515#section-4.1.2)",MAY,Client,false,,,"","" +cds-hooks_3.0.0-ballot,199,https://cds-hooks.hl7.org/2026Jan/en/index.html#trusting-cds-clients,"If the jku header field is ommitted, the CDS Client and CDS Service SHALL communicate the JWK Set out-of-band.",SHALL,"Client,Service",true,,,"1.1.01, 1.2.1.2.02, 1.2.2.2.02, 1.2.3.2.02, 1.2.4.2.02, 1.2.5.2.02, 1.2.6.2.02","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_registration-crd_v221_client_registration_verification, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_retrieve_jwks, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_retrieve_jwks" +cds-hooks_3.0.0-ballot,200,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,[JSON Web Algorithms (rfc7518)](https://tools.ietf.org/html/rfc7518) defines several cryptographic algorithms for use in signing JWTs and should be referenced by CDS Hooks implementers.,SHOULD,"Client,Service",false,,,"","" +cds-hooks_3.0.0-ballot,202,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"JWTs SHALL NOT be signed [by Clients] using the none algorithm, referred to in rfc7518 as unsecured JSON Web Signatures, as the lack of a cryptographic signature does not provide any integrity protection.",SHALL NOT,Client,false,,,"1.2.1.2.03, 1.2.2.2.03, 1.2.3.2.03, 1.2.4.2.03, 1.2.5.2.03, 1.2.6.2.03","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_header, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_header" +cds-hooks_3.0.0-ballot,203,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,JWTs SHALL NOT be signed using any symmetric algorithm as these algorithms require the CDS Client and CDS Service to share a private key in order to verify the signature,SHALL NOT,"Client,Service",false,,,"1.2.1.2.04, 1.2.2.2.04, 1.2.3.2.04, 1.2.4.2.04, 1.2.5.2.04, 1.2.6.2.04","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group02-crd_v221_token_payload, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group02-crd_v221_token_payload" +cds-hooks_3.0.0-ballot,204,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"When choosing an algorithm to sign their JWTs, CDS Clients SHOULD consider not only the algorithms (and key sizes) that are recommended within the security industry, but also how well those algorithms are supported in the various programming languages and libraries that may be used by CDS Services.",SHOULD,Client,false,,,"","" +cds-hooks_3.0.0-ballot,205,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"At publication time of this specification, both ES384 and RS384 are RECOMMENDED for their regard within the larger security industry, strength, and support across popular programming languages and libraries.",SHOULD,"Client,Service",false,,,"","" +cds-hooks_3.0.0-ballot,206,https://cds-hooks.hl7.org/2026Jan/en/index.html#jwt-signing-algorithm,"Stronger and better algorithms [than ES384 and RS384] are continually being introduced due to new threats, weaknesses, and increases in computing power [and] CDS Clients SHOULD continually re-evaluate their choice of an algorithm based upon these ever changing conditions.",SHOULD,"Client,Service",false,,,"","" +cds-hooks_3.0.0-ballot,208,https://cds-hooks.hl7.org/2026Jan/en/index.html#cross-origin-resource-sharing,CDS Services and browser-based CDS Clients will require CORS support. [Cross-origin resource sharing (CORS)](https://www.w3.org/TR/cors/) is a [World Wide Web Consortium (W3C)](https://www.w3.org/Consortium/) standard mechanism that uses additional HTTP headers to enable a web browser to gain permission to access resources from an Internet domain different from that which the browser is currently accessing.,SHALL,"Client,Service",true,,,suite,crd_client_v221 +cds-hooks_3.0.0-ballot,209,https://cds-hooks.hl7.org/2026Jan/en/index.html#update-stale-guidance,"In the case that CDS Hooks cards are persisted, clients should take care to ensure that stale guidance does not negatively impact patient care.",SHOULD,Client,true,,,"","" +cds-hooks_3.0.0-ballot,214,https://cds-hooks.hl7.org/2026Jan/en/index.html#extensions,The value of an extension element MUST be a pre-coordinated JSON object,SHALL,"Client,Service",false,,,"1.2.1.3.02, 1.2.2.3.02, 1.2.3.3.02, 1.2.4.3.02, 1.2.5.3.02, 1.2.6.3.02","crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_start-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_encounter_discharge-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_select-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_dispatch-Group03-crd_v221_hook_request_requested_version, crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks-crd_v221_client_order_sign-Group03-crd_v221_hook_request_requested_version" +cds-hooks_3.0.0-ballot,215,https://cds-hooks.hl7.org/2026Jan/en/index.html#extensions,"Extension structures SHOULD use a strategy for naming that ensures global uniqueness, such as reverse-domain-name notation",SHOULD,"Client,Service",false,,,"","" +hl7.fhir.us.core_6.1.0,1,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-only-support,"To support a US Core Profile, a server: **SHALL** Be able to populate all profile data elements that are mandatory and/or flagged as Must Support as defined by that profile’s StructureDefinition.",SHALL,Server,false,,,"2.2.1.06, 2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_capability_statement-us_core_instantiate, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,2,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-only-support,"To support a US Core Profile, a server: **SHOULD** declare support for a US Core Profile by including its official URL in the server’s `CapabilityStatement.rest.resource.supportedProfile` element.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,3,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Servers may deploy and support one or more US Core Profiles to represent clinical information,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,4,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: “Quick Start” defined for each Profile,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,5,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Clinical Notes](https://hl7.org/fhir/us/core/clinical-notes.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,6,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Medication List](https://hl7.org/fhir/us/core/medication-list.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,7,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Basic Provenance](https://hl7.org/fhir/us/core/basic-provenance.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,8,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Screening and Assessments](https://hl7.org/fhir/us/core/screening-and-assessments.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,9,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Servers implementing ... [clinical information representation] can claim conformance to the US Core Profile content structure ... by implementing all or parts of the US Core CapabilityStatement into their capabilities.,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,10,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,Servers implementing ... [interactions] can claim conformance to the ... RESTful interactions defined by implementing all or parts of the US Core CapabilityStatement into their capabilities,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,11,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,A server that certifies to the [21st Century Cures Act for accessing patient data](https://www.federalregister.gov/d/2020-07419/p-1177) must implement all components in the USCDI [[USCDI link](https://www.healthit.gov/isp/united-states-core-data-interoperability-uscdi)],SHALL,Server,true,Not Tested,This requirement is specific to testing for the 21st Century Cures Act and is not relevant to the IG tests,NA,NA +hl7.fhir.us.core_6.1.0,12,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#profile-support--interaction-support,A server that certifies to the [21st Century Cures Act for accessing patient data](https://www.federalregister.gov/d/2020-07419/p-1177) must implement all components in the ... the US Core CapabilityStatement [[Definition](https://hl7.org/fhir/us/core/CapabilityStatement-us-core-server.html)] .,SHALL,Server,true,Not Tested,This requirement is specific to testing for the 21st Century Cures Act and is not relevant to the IG tests,NA,NA +hl7.fhir.us.core_6.1.0,13,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL** Be able to populate all profile data elements that are mandatory and/or flagged as Must Support as defined by that profile’s StructureDefinition.",SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,14,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL** declare conformance with the US [Core Server Capability Statement](https://hl7.org/fhir/us/core/CapabilityStatement-us-core-server.html) by including its official URL in the server’s `CapabilityStatement.instantiates` element: `http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server`",SHALL,Server,false,,,2.2.1.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_capability_statement-us_core_instantiate +hl7.fhir.us.core_6.1.0,15,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL** specify the full capability details from the US Core CapabilityStatement it claims to implement.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,16,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL**… Declare support for the US Core Profile by including its official URL in the server’s CapabilityStatement.rest.resource.supportedProfile element.",SHALL,Server,false,,,2.2.1.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_capability_statement-us_core_profile_support +hl7.fhir.us.core_6.1.0,17,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL**… Declare support for the US Core Profile’s FHIR RESTful transactions.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,18,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#required-bindings-for-coded-elements,[Required binding](http://hl7.org/fhir/R4/terminologies.html#required) to a ValueSet definition means that one of the codes from the specified ValueSet **SHALL** be used.,SHALL,Server,false,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,19,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#required-bindings-for-coded-elements,"For `CodeableConcept`, which permits multiple codings and a text element, this [[Required binding](http://hl7.org/fhir/R4/terminologies.html#required) to a ValueSet definition] rule applies to at least one of the codings",SHALL,Server,true,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,20,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#required-bindings-for-coded-elements,"For a [[required binding](http://hl7.org/fhir/R4/terminologies.html#required) to a ValueSet definition], a `CodeableConcept`which permits multiple codings and a text element … [using] only text is not valid.",SHALL NOT,Server,false,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,21,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#required-bindings-for-coded-elements,[When populating a coded element with a [required binding](http://hl7.org/fhir/R4/terminologies.html#required] to a ValueSet definition] US Core Responders **SHALL** provide a code exclusively from [the required binding] ValueSet,SHALL,Server,true,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,23,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#extensible-binding-for-coded-elements,[Extensible binding] (http://hl7.org/fhir/R4/terminologies.html#extensible) means that one of the codes from the specified ValueSet **SHALL** be used if an applicable concept is present.,SHALL,Server,true,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,24,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#extensible-binding-for-coded-elements,"[When using an [extensible Binding] (http://hl7.org/fhir/R4/terminologies.html#extensible)] If no suitable code exists in the [extensible] ValueSet, alternate code(s) may be provided.",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,26,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#extensible-binding-for-coded-elements,"For `CodeableConcept` [with an [extensible binding] (http://hl7.org/fhir/R4/terminologies.html#extensible) … If only text is available, then just text may be used.",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,27,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#extensible-binding-for-coded-elements,"When claiming conformance to ... [to a US Core profile extensible binding rule, a] US Core Responders Shall provide: +A code from … [the] valueset 'DataElement.code.code' if the concept exists in the valueset [for a DataElement.code that has an extensible binding] +Or an alternative code if the concept does not exist in the valueset [for a DataElement.code that has an extensible binding] +Or text in ... `[DataElement.code.text]’ if only text is available [for a DataElement.code that has an extensible binding]",SHALL,Server,true,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,28.A,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#extensible-binding-for-coded-elements,US Core guidance provides ... flexibility for situations where implementers cannot fully comply with the FHIR guidance [to extensible bindings]. This flexibility is sometimes necessary and expected for legacy and text-only data [which MAY ignore normal extensible binding rules].,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,28.B,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#extensible-binding-for-coded-elements,"[F]or newly recorded, non-legacy data, a system **SHOULD** adhere to the extensible binding rules.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,29,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#translations,Alternate codes may be provided in addition to the standard codes defined in required or extensible ValueSets. These alternate codes are called “translations”.,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,30,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#translations,[The translations] may be equivalent to or narrower in meaning than the standard concept code.,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,33,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#modifier-elements,"Not all modifier elements are Mandatory or Must Support, and there is no requirement for supporting them",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,34,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#modifier-elements,"Servers **MAY** communicate a system-wide profile in their CapabilityStatement to identify which additional elements, including modifier elements, they support",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,38,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#modifier-elements,Implementers SHOULD review the “Key Elements Tab” on the US Core profile pages.,SHOULD,"Client,Server",false,,,"","" +hl7.fhir.us.core_6.1.0,39,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"If the source system does not have data for an element with a minimum cardinality = 0 (including elements labeled Must Support), the data element **SHALL** be omitted from the resource.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,40,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"If the data element is a Mandatory element (in other words, where the minimum cardinality is > 0), it **SHALL** be present even if the source system does not have data.",SHALL,Server,true,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,41,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"For [mandatory] non-coded data elements [where data is not available], use the [DataAbsentReason Extension](http://hl7.org/fhir/R4/extension-data-absent-reason.html) in the data type ... [with] the code `unknown` - The value is expected to exist but is not known.",SHALL,Server,true,,,2.2.51,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_311_data_absent_reason +hl7.fhir.us.core_6.1.0,42,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements … [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes) If the source system has text but no coded data, only the text element is used.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,43,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes): +For Coding datatypes, the text-only data is represented as a display element",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,44,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes): … If there is neither text nor coded data ... [then] use the appropriate “unknown” concept code from the ValueSet if available.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,45,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes): … If there is neither text nor coded data ... [then] if the ValueSet does not have the appropriate “unknown” concept code, use unknown from the [DataAbsentReason Code System](http://hl7.org/fhir/R4/codesystem-data-absent-reason.html).",SHALL,Server,true,,,2.2.51,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_311_data_absent_reason +hl7.fhir.us.core_6.1.0,46,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,[In situations where data is not available] for [mandatory] coded data elements… [with] *required* binding strength (CodeableConcept or code datatypes): use the appropriate “unknown” concept code from the ValueSet if available,SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,47,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *required* binding strength (CodeableConcept or code datatypes): If the ValueSet does not have the appropriate “unknown” concept code, you must use a concept from the ValueSet. Otherwise, the instance will not be conformant",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,48,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[If the source system does not have data for a Mandatory element for a coded data element with *required* binding strength] If any of these status codes is missing [meaning it lacks an ""unknown"" or otherwise appropriate concept code from the ValueSet, a] 404 HTTP error code and an OperationOutcome **SHALL** be returned in response to a read transaction on the resource.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,49,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[If the source system does not have data for a Mandatory element for a coded data element with *required* binding strength, and the ValueSet does not have the appropriate ""unknown"" concept code, then] if returning a response to a search, the problematic resource **SHALL** be excluded from the search set",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,50,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data,"[If the source system does not have data for a Mandatory element for a coded data element with *required* binding strength, and the ValueSet does not have the appropriate ""unknown"" concept code, then] if returning a response to a search, … a *warning* OperationOutcome **SHOULD** be included indicating that other search results were found but could not be compliantly expressed and have been suppressed.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,51,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#fhir-restful-search-api-requirements,The [FHIR RESTful Search API](http://hl7.org/fhir/R4/http.html#search) requires that servers that support search **SHALL** support the HTTP `POST`-based search.,SHALL,Server,false,,,"2.2.3.01, 2.2.3.02, 2.2.3.03, 2.2.3.06, 2.2.3.07, 2.2.4.01, 2.2.5.01, 2.2.6.01, 2.2.7.01, 2.2.7.02, 2.2.8.01, 2.2.8.02, 2.2.9.01, 2.2.10.01, 2.2.11.01, 2.2.11.02, 2.2.11.05, 2.2.11.06, 2.2.12.01, 2.2.12.02, 2.2.12.05, 2.2.12.06, 2.2.13.01, 2.2.13.02, 2.2.13.03, 2.2.13.06, 2.2.13.07, 2.2.14.01, 2.2.14.02, 2.2.14.07, 2.2.15.01, 2.2.16.01, 2.2.17.01, 2.2.18.01, 2.2.18.03, 2.2.19.01, 2.2.19.04, 2.2.19.05, 2.2.20.01, 2.2.20.04, 2.2.20.05, 2.2.21.01, 2.2.21.04, 2.2.21.05, 2.2.22.01, 2.2.22.04, 2.2.22.05, 2.2.23.01, 2.2.23.04, 2.2.23.05, 2.2.24.01, 2.2.24.04, 2.2.24.05, 2.2.25.01, 2.2.25.04, 2.2.25.05, 2.2.26.01, 2.2.26.04, 2.2.26.05, 2.2.27.01, 2.2.27.04, 2.2.27.05, 2.2.28.01, 2.2.28.04, 2.2.28.05, 2.2.29.01, 2.2.29.04, 2.2.29.05, 2.2.30.01, 2.2.31.01, 2.2.31.04, 2.2.31.05, 2.2.32.01, 2.2.32.04, 2.2.32.05, 2.2.33.01, 2.2.33.04, 2.2.33.05, 2.2.34.01, 2.2.34.04, 2.2.34.05, 2.2.35.01, 2.2.35.04, 2.2.35.05, 2.2.36.01, 2.2.36.04, 2.2.36.05, 2.2.37.01, 2.2.37.04, 2.2.37.05, 2.2.38.01, 2.2.38.04, 2.2.38.05, 2.2.39.01, 2.2.39.04, 2.2.39.05, 2.2.40.01, 2.2.40.04, 2.2.41.01, 2.2.41.02, 2.2.42.01, 2.2.42.02, 2.2.42.03, 2.2.42.05, 2.2.42.07, 2.2.43.02, 2.2.43.03, 2.2.44.03, 2.2.44.04, 2.2.45.02, 2.2.45.03, 2.2.47.03, 2.2.48.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen__id_search_test" +hl7.fhir.us.core_6.1.0,52,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#fhir-restful-search-api-requirements,"For all the supported search interactions in this guide, servers **SHALL** also support the `GET`-based search.",SHALL,Server,false,,,"2.2.3.01, 2.2.3.02, 2.2.3.03, 2.2.3.06, 2.2.3.07, 2.2.4.01, 2.2.5.01, 2.2.6.01, 2.2.7.01, 2.2.7.02, 2.2.8.01, 2.2.8.02, 2.2.9.01, 2.2.10.01, 2.2.11.01, 2.2.11.02, 2.2.11.05, 2.2.11.06, 2.2.12.01, 2.2.12.02, 2.2.12.05, 2.2.12.06, 2.2.13.01, 2.2.13.02, 2.2.13.03, 2.2.13.06, 2.2.13.07, 2.2.14.01, 2.2.14.02, 2.2.14.07, 2.2.15.01, 2.2.16.01, 2.2.17.01, 2.2.18.01, 2.2.18.03, 2.2.19.01, 2.2.19.04, 2.2.19.05, 2.2.20.01, 2.2.20.04, 2.2.20.05, 2.2.21.01, 2.2.21.04, 2.2.21.05, 2.2.22.01, 2.2.22.04, 2.2.22.05, 2.2.23.01, 2.2.23.04, 2.2.23.05, 2.2.24.01, 2.2.24.04, 2.2.24.05, 2.2.25.01, 2.2.25.04, 2.2.25.05, 2.2.26.01, 2.2.26.04, 2.2.26.05, 2.2.27.01, 2.2.27.04, 2.2.27.05, 2.2.28.01, 2.2.28.04, 2.2.28.05, 2.2.29.01, 2.2.29.04, 2.2.29.05, 2.2.30.01, 2.2.31.01, 2.2.31.04, 2.2.31.05, 2.2.32.01, 2.2.32.04, 2.2.32.05, 2.2.33.01, 2.2.33.04, 2.2.33.05, 2.2.34.01, 2.2.34.04, 2.2.34.05, 2.2.35.01, 2.2.35.04, 2.2.35.05, 2.2.36.01, 2.2.36.04, 2.2.36.05, 2.2.37.01, 2.2.37.04, 2.2.37.05, 2.2.38.01, 2.2.38.04, 2.2.38.05, 2.2.39.01, 2.2.39.04, 2.2.39.05, 2.2.40.01, 2.2.40.04, 2.2.41.01, 2.2.41.02, 2.2.42.01, 2.2.42.02, 2.2.42.03, 2.2.42.05, 2.2.42.07, 2.2.43.02, 2.2.43.03, 2.2.44.03, 2.2.44.04, 2.2.45.02, 2.2.45.03, 2.2.47.03, 2.2.48.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen__id_search_test" +hl7.fhir.us.core_6.1.0,55,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `token` type searchparameter [(how to search by token)](http://hl7.org/fhir/R4/search.html#token) The server **SHALL** support both [system and code values],SHALL,Server,false,,,"2.2.3.01, 2.2.3.02, 2.2.3.03, 2.2.3.06, 2.2.3.07, 2.2.4.01, 2.2.5.01, 2.2.6.01, 2.2.7.01, 2.2.7.02, 2.2.8.01, 2.2.8.02, 2.2.9.01, 2.2.10.01, 2.2.11.01, 2.2.11.02, 2.2.11.05, 2.2.11.06, 2.2.12.01, 2.2.12.02, 2.2.12.05, 2.2.12.06, 2.2.13.01, 2.2.13.02, 2.2.13.03, 2.2.13.06, 2.2.13.07, 2.2.14.01, 2.2.14.02, 2.2.14.07, 2.2.15.01, 2.2.16.01, 2.2.17.01, 2.2.18.01, 2.2.18.03, 2.2.19.01, 2.2.19.04, 2.2.19.05, 2.2.20.01, 2.2.20.04, 2.2.20.05, 2.2.21.01, 2.2.21.04, 2.2.21.05, 2.2.22.01, 2.2.22.04, 2.2.22.05, 2.2.23.01, 2.2.23.04, 2.2.23.05, 2.2.24.01, 2.2.24.04, 2.2.24.05, 2.2.25.01, 2.2.25.04, 2.2.25.05, 2.2.26.01, 2.2.26.04, 2.2.26.05, 2.2.27.01, 2.2.27.04, 2.2.27.05, 2.2.28.01, 2.2.28.04, 2.2.28.05, 2.2.29.01, 2.2.29.04, 2.2.29.05, 2.2.30.01, 2.2.31.01, 2.2.31.04, 2.2.31.05, 2.2.32.01, 2.2.32.04, 2.2.32.05, 2.2.33.01, 2.2.33.04, 2.2.33.05, 2.2.34.01, 2.2.34.04, 2.2.34.05, 2.2.35.01, 2.2.35.04, 2.2.35.05, 2.2.36.01, 2.2.36.04, 2.2.36.05, 2.2.37.01, 2.2.37.04, 2.2.37.05, 2.2.38.01, 2.2.38.04, 2.2.38.05, 2.2.39.01, 2.2.39.04, 2.2.39.05, 2.2.40.01, 2.2.40.04, 2.2.41.01, 2.2.41.02, 2.2.42.01, 2.2.42.02, 2.2.42.03, 2.2.42.05, 2.2.42.07, 2.2.43.02, 2.2.43.03, 2.2.44.03, 2.2.44.04, 2.2.45.02, 2.2.45.03, 2.2.47.03, 2.2.48.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen__id_search_test" +hl7.fhir.us.core_6.1.0,58,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `reference` type searchparameter [(how to search by reference)](http://hl7.org/fhir/R4/search.html#reference) The server **SHALL** support both [id and Type values],SHALL,Server,false,,,"2.2.3.01, 2.2.3.02, 2.2.3.03, 2.2.3.06, 2.2.3.07, 2.2.4.01, 2.2.5.01, 2.2.6.01, 2.2.7.01, 2.2.7.02, 2.2.8.01, 2.2.8.02, 2.2.9.01, 2.2.10.01, 2.2.11.01, 2.2.11.02, 2.2.11.05, 2.2.11.06, 2.2.12.01, 2.2.12.02, 2.2.12.05, 2.2.12.06, 2.2.13.01, 2.2.13.02, 2.2.13.03, 2.2.13.06, 2.2.13.07, 2.2.14.01, 2.2.14.02, 2.2.14.07, 2.2.15.01, 2.2.16.01, 2.2.17.01, 2.2.18.01, 2.2.18.03, 2.2.19.01, 2.2.19.04, 2.2.19.05, 2.2.20.01, 2.2.20.04, 2.2.20.05, 2.2.21.01, 2.2.21.04, 2.2.21.05, 2.2.22.01, 2.2.22.04, 2.2.22.05, 2.2.23.01, 2.2.23.04, 2.2.23.05, 2.2.24.01, 2.2.24.04, 2.2.24.05, 2.2.25.01, 2.2.25.04, 2.2.25.05, 2.2.26.01, 2.2.26.04, 2.2.26.05, 2.2.27.01, 2.2.27.04, 2.2.27.05, 2.2.28.01, 2.2.28.04, 2.2.28.05, 2.2.29.01, 2.2.29.04, 2.2.29.05, 2.2.30.01, 2.2.31.01, 2.2.31.04, 2.2.31.05, 2.2.32.01, 2.2.32.04, 2.2.32.05, 2.2.33.01, 2.2.33.04, 2.2.33.05, 2.2.34.01, 2.2.34.04, 2.2.34.05, 2.2.35.01, 2.2.35.04, 2.2.35.05, 2.2.36.01, 2.2.36.04, 2.2.36.05, 2.2.37.01, 2.2.37.04, 2.2.37.05, 2.2.38.01, 2.2.38.04, 2.2.38.05, 2.2.39.01, 2.2.39.04, 2.2.39.05, 2.2.40.01, 2.2.40.04, 2.2.41.01, 2.2.41.02, 2.2.42.01, 2.2.42.02, 2.2.42.03, 2.2.42.05, 2.2.42.07, 2.2.43.02, 2.2.43.03, 2.2.44.03, 2.2.44.04, 2.2.45.02, 2.2.45.03, 2.2.47.03, 2.2.48.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen__id_search_test" +hl7.fhir.us.core_6.1.0,61,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `date` type searchparameter [(how to search by date)](http://hl7.org/fhir/R4/search.html#date) The server **SHALL** support values precise to the day for elements of datatype `date`,SHALL,Server,false,,,"2.2.3.01, 2.2.3.02, 2.2.3.03, 2.2.3.06, 2.2.3.07, 2.2.4.01, 2.2.5.01, 2.2.6.01, 2.2.7.01, 2.2.7.02, 2.2.8.01, 2.2.8.02, 2.2.9.01, 2.2.10.01, 2.2.11.01, 2.2.11.02, 2.2.11.05, 2.2.11.06, 2.2.12.01, 2.2.12.02, 2.2.12.05, 2.2.12.06, 2.2.13.01, 2.2.13.02, 2.2.13.03, 2.2.13.06, 2.2.13.07, 2.2.14.01, 2.2.14.02, 2.2.14.07, 2.2.15.01, 2.2.16.01, 2.2.17.01, 2.2.18.01, 2.2.18.03, 2.2.19.01, 2.2.19.04, 2.2.19.05, 2.2.20.01, 2.2.20.04, 2.2.20.05, 2.2.21.01, 2.2.21.04, 2.2.21.05, 2.2.22.01, 2.2.22.04, 2.2.22.05, 2.2.23.01, 2.2.23.04, 2.2.23.05, 2.2.24.01, 2.2.24.04, 2.2.24.05, 2.2.25.01, 2.2.25.04, 2.2.25.05, 2.2.26.01, 2.2.26.04, 2.2.26.05, 2.2.27.01, 2.2.27.04, 2.2.27.05, 2.2.28.01, 2.2.28.04, 2.2.28.05, 2.2.29.01, 2.2.29.04, 2.2.29.05, 2.2.30.01, 2.2.31.01, 2.2.31.04, 2.2.31.05, 2.2.32.01, 2.2.32.04, 2.2.32.05, 2.2.33.01, 2.2.33.04, 2.2.33.05, 2.2.34.01, 2.2.34.04, 2.2.34.05, 2.2.35.01, 2.2.35.04, 2.2.35.05, 2.2.36.01, 2.2.36.04, 2.2.36.05, 2.2.37.01, 2.2.37.04, 2.2.37.05, 2.2.38.01, 2.2.38.04, 2.2.38.05, 2.2.39.01, 2.2.39.04, 2.2.39.05, 2.2.40.01, 2.2.40.04, 2.2.41.01, 2.2.41.02, 2.2.42.01, 2.2.42.02, 2.2.42.03, 2.2.42.05, 2.2.42.07, 2.2.43.02, 2.2.43.03, 2.2.44.03, 2.2.44.04, 2.2.45.02, 2.2.45.03, 2.2.47.03, 2.2.48.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen__id_search_test" +hl7.fhir.us.core_6.1.0,62,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `date` type searchparameter [(how to search by date)](http://hl7.org/fhir/R4/search.html#date) The server **SHALL** support values precise … to the second + time offset for elements of `datatype` dateTime,SHALL,Server,false,,,"2.2.3.01, 2.2.3.02, 2.2.3.03, 2.2.3.06, 2.2.3.07, 2.2.4.01, 2.2.5.01, 2.2.6.01, 2.2.7.01, 2.2.7.02, 2.2.8.01, 2.2.8.02, 2.2.9.01, 2.2.10.01, 2.2.11.01, 2.2.11.02, 2.2.11.05, 2.2.11.06, 2.2.12.01, 2.2.12.02, 2.2.12.05, 2.2.12.06, 2.2.13.01, 2.2.13.02, 2.2.13.03, 2.2.13.06, 2.2.13.07, 2.2.14.01, 2.2.14.02, 2.2.14.07, 2.2.15.01, 2.2.16.01, 2.2.17.01, 2.2.18.01, 2.2.18.03, 2.2.19.01, 2.2.19.04, 2.2.19.05, 2.2.20.01, 2.2.20.04, 2.2.20.05, 2.2.21.01, 2.2.21.04, 2.2.21.05, 2.2.22.01, 2.2.22.04, 2.2.22.05, 2.2.23.01, 2.2.23.04, 2.2.23.05, 2.2.24.01, 2.2.24.04, 2.2.24.05, 2.2.25.01, 2.2.25.04, 2.2.25.05, 2.2.26.01, 2.2.26.04, 2.2.26.05, 2.2.27.01, 2.2.27.04, 2.2.27.05, 2.2.28.01, 2.2.28.04, 2.2.28.05, 2.2.29.01, 2.2.29.04, 2.2.29.05, 2.2.30.01, 2.2.31.01, 2.2.31.04, 2.2.31.05, 2.2.32.01, 2.2.32.04, 2.2.32.05, 2.2.33.01, 2.2.33.04, 2.2.33.05, 2.2.34.01, 2.2.34.04, 2.2.34.05, 2.2.35.01, 2.2.35.04, 2.2.35.05, 2.2.36.01, 2.2.36.04, 2.2.36.05, 2.2.37.01, 2.2.37.04, 2.2.37.05, 2.2.38.01, 2.2.38.04, 2.2.38.05, 2.2.39.01, 2.2.39.04, 2.2.39.05, 2.2.40.01, 2.2.40.04, 2.2.41.01, 2.2.41.02, 2.2.42.01, 2.2.42.02, 2.2.42.03, 2.2.42.05, 2.2.42.07, 2.2.43.02, 2.2.43.03, 2.2.44.03, 2.2.44.04, 2.2.45.02, 2.2.45.03, 2.2.47.03, 2.2.48.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen__id_search_test" +hl7.fhir.us.core_6.1.0,63,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,Servers are strongly encouraged to support a query for resources without requiring a status parameter.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,64,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"If business requirements prohibit [querying a resource without a status parameter], they **SHALL** follow the guidelines here.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,65,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, an implementation’s business rules may override the FHIR RESTful search expectations and require a status parameter to be provided",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,66,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows: + +**SHALL** return an HTTP 400 status",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,67,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows: + +**SHALL** return an [OperationOutcome](http://hl7.org/fhir/R4/operationoutcome.html) specifying that status(es) must be present.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,68,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows: + +**SHALL** support search with status if status required",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,69,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided, they] **SHALL** NOT restrict search results ( i.e., apply ‘hidden’ filters) when a client includes status parameters in the query.",SHALL NOT,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,70,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided,] if a system doesn’t support a specific status code value that is queried, it **SHOULD** return an HTTP 200 status with a search bundle.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,71,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided,] if a system doesn’t support a specific status code value that is queried [and returns a search bundle],... [t]he search bundle **SHOULD** contain resources matching the search criteria",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,72,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided,] if a system doesn’t support a specific status code value that is queried [and returns a search bundle],... [t]he search bundle **SHOULD** contain ... an OperationOutcome warning the client which status code value is not supported.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,73,https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows:... + +**SHALL** document this behavior in its CapabilityStatement for the “search-type” interaction in `CapabilityStatement.rest.resource.interaction.documentation.`",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,74,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support-elements,"When an element is Mandatory, the data is expected always to be present.",SHALL,Server,false,,,"2.2.3.11, 2.2.4.05, 2.2.5.07, 2.2.6.06, 2.2.7.13, 2.2.8.13, 2.2.9.04, 2.2.10.06, 2.2.11.09, 2.2.12.09, 2.2.13.10, 2.2.14.12, 2.2.15.07, 2.2.16.06, 2.2.17.06, 2.2.18.07, 2.2.18.08, 2.2.19.08, 2.2.20.08, 2.2.21.08, 2.2.22.08, 2.2.23.08, 2.2.24.08, 2.2.25.08, 2.2.26.08, 2.2.27.08, 2.2.28.08, 2.2.29.08, 2.2.30.08, 2.2.31.08, 2.2.32.08, 2.2.33.08, 2.2.34.08, 2.2.35.08, 2.2.36.08, 2.2.37.08, 2.2.38.08, 2.2.39.08, 2.2.40.07, 2.2.41.08, 2.2.42.10, 2.2.43.04, 2.2.44.05, 2.2.45.04, 2.2.46.02, 2.2.47.07, 2.2.48.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_validation_test" +hl7.fhir.us.core_6.1.0,75,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support-elements,"For querying and reading US Core Profiles, Must Support on any profile data element **SHALL** be interpreted as follows…: + +US Core Responders **SHALL** be capable of populating all data elements as part of the query results specified by the [US Core Server Capability Statement](https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html).",SHALL,Server,true,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,78,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support-elements,"For querying and reading US Core Profiles, Must Support on any profile data element **SHALL** be interpreted as follows…: + +When information on a particular data element is not present, and the reason for absence is unknown, US Core Responders **SHALL NOT** include the data elements in the resource instance returned as part of the query results.",SHALL NOT,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,80,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support-elements,"For querying and reading US Core Profiles, Must Support on any profile data element **SHALL** be interpreted as follows…: + +In cases where information on a specific data element is missing, and the US Core Responder knows the precise reason for the absence of data (other than suppressed data), US Core Responders **SHOULD** send the reason for the missing information.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,81,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support-elements,"[When sending reason for missing information, follow] the same methdology outlined in the [Missing Data](https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#missing-data) section but using the appropriate reason code instead of unknown [reason code].",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,82.A,https://hl7.org/fhir/us/core/STU6.1/must-support.html#uscdi-requirements,"[T]he following US Core Profiles do not represent USCDI data classes, and their Mandatory and Must Support elements are not USCDI [v3] Requirements [for US Core Requestors and Responders seeking ONC certification in the ONC IT Health Certification program under US Core 6.1]: US Core Location Profile",MAY,"Server,Client",true,,,"","" +hl7.fhir.us.core_6.1.0,82.B,https://hl7.org/fhir/us/core/STU6.1/must-support.html#uscdi-requirements,"[T]he following US Core Profiles do not represent USCDI data classes, and their Mandatory and Must Support elements are not USCDI [v3] Requirements [for US Core Requestors and Responders seeking ONC certification in the ONC IT Health Certification program under US Core 6.1]: US Core Organization Profile",MAY,"Server,Client",true,,,"","" +hl7.fhir.us.core_6.1.0,82.C,https://hl7.org/fhir/us/core/STU6.1/must-support.html#uscdi-requirements,"[T]he following US Core Profiles do not represent USCDI data classes, and their Mandatory and Must Support elements are not USCDI [v3] Requirements [for US Core Requestors and Responders seeking ONC certification in the ONC IT Health Certification program under US Core 6.1]: US Core Practioner Profile",MAY,"Server,Client",true,,,"","" +hl7.fhir.us.core_6.1.0,82.D,https://hl7.org/fhir/us/core/STU6.1/must-support.html#uscdi-requirements,"[T]he following US Core Profiles do not represent USCDI data classes, and their Mandatory and Must Support elements are not USCDI [v3] Requirements [for US Core Requestors and Responders seeking ONC certification in the ONC IT Health Certification program under US Core 6.1]: US Core PractionerRole Profile",MAY,"Server,Client",true,,,"","" +hl7.fhir.us.core_6.1.0,84,https://hl7.org/fhir/us/core/STU6.1/must-support.html#additional-uscdi-requirements,Implementors [US Core Responders] seeking ONC certification [in the ONC IT Health Certification program] **SHALL** interpret Additional USCDI Requirements as Must Support elements as documented above,SHALL,Server,true,Not Tested,This requirement is specific to certification testing and is not relevant to the IG tests,NA,NA +hl7.fhir.us.core_6.1.0,86,https://hl7.org/fhir/us/core/STU6.1/must-support.html#additional-uscdi-requirements,Implementors [US Core Responders] [not] seeking ONC certification [in the ONC IT Health Certification program] **SHALL** interpret Additional USCDI Requirements as … optional.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,87,https://hl7.org/fhir/us/core/STU6.1/must-support.html#defined-pattern-elements,"If an element is marked as Must Support and defined by a pattern [as described by [ElementDefinition.pattern](http://hl7.org/fhir/R4/elementdefinition-definitions.html#ElementDefinition.pattern_x_)], then the pattern defines the elements and element values that the server **SHALL** be capable of providing.",SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,90,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---primitive-element,"Primitive elements are single elements with a primitive value. If they are marked as Must Support, then the server **SHALL** be capable of providing the element value to meet the Must Support requirement.",SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,91,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---primitive-element,[W]hen claiming conformance [to a profile with a must support primitive element] … US Core responders SHALL be capable of providing the value [of the primitive element],SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,93,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,"For any complex element marked as Must Support, the server **SHALL** be capable of providing at least one of the sub-element values.",SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,94,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,"If any sub-element is marked as Must Support [for a complex element], it must also meet the Must Support requirements and satisfy the Must Support requirements for the parent element.",SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,95,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,"[I]f any sub-element is marked as Must Support [for a complex element] and the parent element is not, there is no expectation that you must support the parent.",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,96,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,"[I]f any sub-element is marked as Must Support [for a complex element] and the parent element is not… [and] the parent element is represented in the structure, you must support the sub-element (s) marked as Must Support.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,97,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,[When claiming conformance to a must support complex element with no must support sub-elements US Core Responders SHALL be capable of providing a value in the sub-element],SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,99,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,When claiming conformance [to a must support complex element with one or more must support sub-elements] … US Core Responders SHALL be capable of providing a value in [each must support sub-element],SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,101,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,"Systems [US Core Responders] can support the other elements [of a complex element, not labeled as a Must Support], but this is not a requirement of US Core",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,103,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---complex-elements,"The U.S. Core Data for Interoperability (USCDI) may require additional elements, [which is a requirement for certification in the ONC IT Health Certification program, but not a requirement of US Core conformance for US Core Responders]",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,105,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---resource-references,"In certain profiles, only specific resource references are labeled as Must Support. + +... + +- US Core Responders **SHALL** be capable of providing [such an element] with a valid reference to [all listed Must Support profile(s).]",SHALL,Server,false,,,"2.2.4.07, 2.2.5.09, 2.2.6.08, 2.2.7.15, 2.2.8.15, 2.2.9.06, 2.2.10.08, 2.2.11.11, 2.2.12.11, 2.2.13.12, 2.2.14.14, 2.2.15.09, 2.2.16.08, 2.2.17.08, 2.2.18.10, 2.2.19.10, 2.2.20.10, 2.2.21.10, 2.2.22.10, 2.2.23.10, 2.2.24.10, 2.2.25.10, 2.2.26.10, 2.2.27.10, 2.2.28.10, 2.2.29.10, 2.2.30.10, 2.2.31.10, 2.2.32.10, 2.2.33.10, 2.2.34.10, 2.2.35.10, 2.2.36.10, 2.2.37.10, 2.2.38.10, 2.2.39.10, 2.2.40.09, 2.2.41.10, 2.2.42.12, 2.2.45.06, 2.2.46.04, 2.2.47.09, 2.2.48.06","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_reference_resolution_test" +hl7.fhir.us.core_6.1.0,107,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---resource-references,"Systems [US Core Responders] can support other [resource] references [other than those labeled as Must Support], but this is not a requirement of US Core",MAY,Server,,,,"","" +hl7.fhir.us.core_6.1.0,109,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---resource-references,"In specific profiles, only a single resource reference is present on an element labeled Must Support. + +... + +- US Core Responders **SHALL** be capable of providing [such an element] with a valid reference to [the Must Support Profile.]",SHALL,Server,false,,,"2.2.4.07, 2.2.5.09, 2.2.6.08, 2.2.7.15, 2.2.8.15, 2.2.9.06, 2.2.10.08, 2.2.11.11, 2.2.12.11, 2.2.13.12, 2.2.14.14, 2.2.15.09, 2.2.16.08, 2.2.17.08, 2.2.18.10, 2.2.19.10, 2.2.20.10, 2.2.21.10, 2.2.22.10, 2.2.23.10, 2.2.24.10, 2.2.25.10, 2.2.26.10, 2.2.27.10, 2.2.28.10, 2.2.29.10, 2.2.30.10, 2.2.31.10, 2.2.32.10, 2.2.33.10, 2.2.34.10, 2.2.35.10, 2.2.36.10, 2.2.37.10, 2.2.38.10, 2.2.39.10, 2.2.40.09, 2.2.41.10, 2.2.42.12, 2.2.45.06, 2.2.46.04, 2.2.47.09, 2.2.48.06","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_reference_resolution_test" +hl7.fhir.us.core_6.1.0,111,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---choice-of-data-types,"Some elements allow different data types (e.g., Observation.effective[x]) for their content. Only specific data type choice elements are labeled Must Support in these situations. + +… When claiming conformance to [such a] profile: + +- US Core Responders **SHALL** be capable of populating [the Must Support data type choice]",SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,114,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---choice-of-data-types,"Some elements allow different data types (e.g., Observation.effective[x]) for their content. Only specific data type choice elements are labeled Must Support in these situations. + +… + +[US Core Responders] **MAY** support populating ... other [data type] choice elements (such as Observation.effectivePeriod), but this is not a requirement of US Core.",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,115,https://hl7.org/fhir/us/core/STU6.1/must-support.html#must-support---choice-of-profile-elements,"There are several instances in this Guide where there is a choice of supporting one or another profile element to meet the Must Support requirement. In such cases, the server **SHALL** support at least one element.",SHALL,Server,false,,,"2.2.3.12, 2.2.4.06, 2.2.5.08, 2.2.6.07, 2.2.7.14, 2.2.8.14, 2.2.9.05, 2.2.10.07, 2.2.11.10, 2.2.12.10, 2.2.13.11, 2.2.14.13, 2.2.15.08, 2.2.16.07, 2.2.17.07, 2.2.18.09, 2.2.19.09, 2.2.20.09, 2.2.21.09, 2.2.22.09, 2.2.23.09, 2.2.24.09, 2.2.25.09, 2.2.26.09, 2.2.27.09, 2.2.28.09, 2.2.29.09, 2.2.30.09, 2.2.31.09, 2.2.32.09, 2.2.33.09, 2.2.34.09, 2.2.35.09, 2.2.36.09, 2.2.37.09, 2.2.38.09, 2.2.39.09, 2.2.40.08, 2.2.41.09, 2.2.42.11, 2.2.43.05, 2.2.44.06, 2.2.45.05, 2.2.46.03, 2.2.47.08, 2.2.48.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_respiratory_rate-us_core_v610_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_simple_observation-us_core_v610_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_heart_rate-us_core_v610_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_temperature-us_core_v610_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_weight_for_height-us_core_v610_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pulse_oximetry-us_core_v610_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_smokingstatus-us_core_v610_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference-us_core_v610_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_height-us_core_v610_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_bmi-us_core_v610_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_blood_pressure-us_core_v610_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_pediatric_bmi_for_age-us_core_v610_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_head_circumference_percentile-us_core_v610_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_body_weight-us_core_v610_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner-us_core_v610_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_practitioner_role-us_core_v610_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_provenance-us_core_v610_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_specimen-us_core_v610_specimen_must_support_test" +hl7.fhir.us.core_6.1.0,174,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#referencing-us-core-profiles,"Therefore, a [reference](http://hl7.org/fhir/R4/references.html) to a US Core resource SHOULD include a logical id (Reference.reference), not an identifier (Reference.identifier).",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,175,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#referencing-us-core-profiles,"For all references, US Core Responders SHOULD return resources that conform to a US Core profile if a US Core profile exists for the resource type.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,176,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#contained-resources,"When responding to a query, servers SHOULD not use inline [contained](http://hl7.org/fhir/R4/references.html#contained) resources to represent the returned data.",SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,177,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#contained-resources,"[I]f referencing a contained resource in a US Core Profile, the contained resource SHOULD be a US Core Profile if a US Core Profile exists for the resource type.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,178,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#suppressed-data,[M]asking data [where a specific piece of data is hidden for security and privacy reasons] SHOULD be handled based on implemented policies.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,179,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#suppressed-data,"[When masking data] elements with a minimum cardinality = 0 (including elements labeled Must Support) [for security and privacy reasons], the element SHOULD be omitted from the resource.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,180,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#suppressed-data,"[When masking] Mandatory elements (in other words, where the minimum cardinality is > 0) [for security and privacy reasons, use the code “unknown” following the guidance on Missing Data in the Conformance Sections.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,181,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#snomed-ct-united-states-edition,"[When using SNOMED codes in US Core Profiles I]mplementers MAY use the default system URI [of [SNOMED CT](http://snomed.info/sct)], which refers to an unspecified edition/version [of SNOMED]",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,182,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#snomed-ct-united-states-edition,"[To enable] terminology servers to be able to validate US Edition-only codes [of [SNOMED CT](http://snomed.info/sct)], implementers SHOULD provide the accompanying system URI to describe … the edition",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,182.A,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#snomed-ct-united-states-edition,"[To enable] terminology servers to be able to validate US Edition-only codes [of [SNOMED CT](http://snomed.info/sct)], implementers SHOULD provide the accompanying system URI to describe … the version",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,183,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [then] systems should also use UCUM for the optional valueRange and valueRatio datatypes (which are complex datatypes with Quantity elements)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,184,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [when] UCUM code [is] provided [it SHOULD be indicated in the Quantity.unit and Quantity.code elements with Quantity.system = ""http://unitsofmeasure.org""]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,185,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [then] if UCUM units are unavailable, represent units in the unit element",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,186,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [when] +no units [are available systems SHOULD NOT supply the unit field]",SHOULD NOT,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,187,"https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-deleted-information, https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-entered-in-error-information",A FHIR Server SHOULD not delete records.,SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,188,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-deleted-information,A FHIR server SHOULD update the appropriate resource status to entered-in-error or inactive [when requested to delete records],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,189,"https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-deleted-information, https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-entered-in-error-information","If a system supports the deletion of records, they SHOULD refer to the [Deletion Safety Checks](http://hl7.org/fhir/R4/safety.html#conformance) in the FHIR specification.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,190,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-entered-in-error-information,A FHIR Server SHOULD allow these resources [those entered in error] to be searchable by client applications.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,191,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-entered-in-error-information,"If the FHIR server has updated the resource status to entered-in-error: +For patient facing applications, A FHIR Server SHOULD remove the resource’s contents, leaving only an id and status. Note that this typically will not conform to the US Core or FHIR StructureDefinitions.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,192,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#representing-entered-in-error-information,"If the FHIR server has updated the resource status to entered-in-error: +... +For provider-facing applications, the content may be supplied with content and additional detail (such as the reason for the status change) that the patient viewing system would typically not have access to.",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,193,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#language-support,the data provider SHOULD do their best to translate (safely) to the requested language [when accessing records in a native or requested language],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,195,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#language-support,[When clients request a resource in a specific language] servers SHOULD make reasonable efforts to translate what can be safely translated.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,196,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#language-support,"[When clients request a resource in a specific language] servers SHOULD populate the Resource’s language element with a code based on the underlying language of record, not the requested language.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,197,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#language-support,"[When clients request a resource in a specific language] Servers SHOULD … [use] the [Human Language](http://hl7.org/fhir/R4/extension-language.html) Extension when the language of a display, etc, is known to differ from the stated (or inferred) language.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,198,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#language-support,[When clients request a resource in a specific language] [servers SHOULD use] the [Translation](http://hl7.org/fhir/R4/extension-translation.html) Extension when the server provides additional translations by its own choice or in response to a different Accept-Language than what the resource is stored in.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,199,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#language-support,"[When clients request a resource in a specific language] servers SHOULD make it known what languages are supported in their CapabilityStatement(s) using this extension: +http://hl7.org/fhir/5.0/StructureDefinition/extension-CapablilityStatement.acceptLanguage [[definition](https://hl7.org/fhir/R5/capabilitystatement-definitions.html#CapabilityStatement.acceptLanguage)]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,203,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#compartment-based-search,"US Core servers [MAY support compartment based searchs, but] are not required to support patient [compartment](http://hl7.org/fhir/R4/compartmentdefinition.html) based searches.",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,204,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#across-platform-searches,"US Core servers [MAY resolve absolute URLs, but] are not required to resolve absolute URLs external to their environment.",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,205,https://hl7.org/fhir/us/core/STU6.1/general-guidance.html#limiting-the-number-of-search-results,Servers can [MAY] choose to return the results in a series of pages to manage the number of search results returned.,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,206,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Consultation Note (11488-4)](https://loinc.org/11488-4.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,207,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Discharge Summary (18842-5)](https://loinc.org/18842-5.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,208,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[History & Physical Note (34117-2)](https://loinc.org/34117-2.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,209,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Procedures Note (28570-0)](https://loinc.org/28570-0.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,210,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Progress Note (11506-3)](https://loinc.org/11506-3.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,211,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Imaging Narrative (18748-4)](https://loinc.org/18748-4.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,212,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Laboratory Report Narrative (11502-2)](https://loinc.org/11502-2.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,213,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Pathology Report Narrative (11526-1)](https://loinc.org/11526-1.html)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,214,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … DiagnosticReport categories: +[Cardiology (LP29708-2)](https://loinc.org/LP29708-2)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,215,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … DiagnosticReport categories: +[Pathology (LP7839-6)](https://loinc.org/LP7839-6)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,216,"https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … DiagnosticReport categories: +[Radiology (LP29684-5)](https://loinc.org/LP29684-5)",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,217,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes,"systems are encouraged to support other common notes types, such as: +[Referral Note (57133-1)](https://loinc.org/57133-1.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,218,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes,"systems are encouraged to support other common notes types, such as: +[Surgical Operation Note (11504-8)](https://loinc.org/11504-8.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,219,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#clinical-notes,"systems are encouraged to support other common notes types, such as: +[Nurse Note (34746-8)](https://loinc.org/34746-8.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,220,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#fhir-resources-to-exchange-clinical-notes,"To enable consistent access to scanned DiagnosticReport clinical reports, the FHIR Server SHALL expose these overlapping scanned or narrative-only reports through both DiagnosticReport and DocumentReference by representing the same attachment URL [as] DocumentReference.content.attachment.url [and] +DiagnosticReport.presentedForm.url",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,221,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#fhir-resources-to-exchange-clinical-notes,"when DiagnosticReport.presentedForm.url references a Scan (PDF), that Attachment SHALL also be accessible through DocumentReference.content.attachment.url",SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,222,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,Systems [servers] may extend their capabilities [around types of clinical notes] to the complete US Core DocumentReference Type Value Set. This requirement is necessary because some systems scan lab reports and don’t store them in the DiagnosticReport resource.,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,223,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,This guide requires [server] systems to implement the [US Core DocumentReference Profile](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html),SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,224,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,This guide requires [server] systems to implement the [US Core DiagnosticReport Profile for Report and Note exchange](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-note.html),SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,225,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,Systems [servers] may support other [DiagnosticReport] categories as well.,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,227,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Imaging Narrative,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,228,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Laboratory Report Narrative,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,229,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Pathology Report Narrative,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,230,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Procedure Note,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,231,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,Servers that support DiagnosticReport will include the clinical note narrative content in DiagnosticReport.presentedForm,SHALL,Server,false,,,2.2.49,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_6.1.0,233,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,FHIR server claiming support to this guide SHOULD support the $expand operation [[operation link](http://hl7.org/fhir/R4/valueset-operation-expand.html) to provide information to clients requesting information on the note and report types the server supports],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,234,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.category&contextDirection=outgoing for DiagnosticReport report category discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,235,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.category&contextDirection=incoming for DiagnosticReport report category discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,236,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.code&contextDirection=outgoing for DiagnosticReport report type discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,237,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.code&contextDirection=incoming for DiagnosticReport report type discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,238,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.category&contextDirection=outgoing for DocumentReference note category discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,239,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.category&contextDirection=incoming for DocumentReference note category discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,240,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.type&contextDirection=outgoing for DocumentReference note type discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,241,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.type&contextDirection=incoming for DocumentReference note type discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,242,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.presentedForm.contentType&contextDirection=outgoing for DiagnosticReport report content type discovery [for read operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,243,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.presentedForm.contentType&contextDirection=incoming for DiagnosticReport report content type discovery [for write operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,244,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.content.attachment.contentType&contextDirection=outgoing for DocumentReference note content type discovery [for read operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,245,https://hl7.org/fhir/us/core/STU6.1/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.content.attachment.contentType&contextDirection=incoming for DocumentReference note content type discovery [for write operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,246,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#background-on-the-fhir-medications-resources,"[The [MedicationAdministration](http://hl7.org/fhir/R4/medicationadministration.html) and [MedicationStatement](http://hl7.org/fhir/R4/medicationstatement.html)] medication resources are not profiled by US Core, and systems that support US Core are permitted to use them",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,247,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#options-for-representing-medication,"When using a code [to represent a medication][, the code SHALL follow the [extensible](http://hl7.org/fhir/R4/terminologies.html#extensible) binding rules to [Medication Clinical Drug (RxNorm)](https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1010.4/expansion) - i.e., unless RxNorm does not cover the concept, the RxNorm code SHALL be used.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,248,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#options-for-representing-medication,USCDI recommends the [National Drug Codes (NDC)](https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory) as an optional medication terminology. They can be supplied as an additional coding element [when representing a medication],MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,249,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#options-for-representing-medication,"When referencing the Medication resource, the resource may be included in the returned bundle, as an external resource, or as a [contained](http://hl7.org/fhir/R4/references.html#contained) resource if it can’t stand alone. … The server application MAY choose any combination of these methods",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,250,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#options-for-representing-medication,"if an external reference to Medication is used, the server SHALL support the [_include](http://hl7.org/fhir/R4/search.html#include) parameter for searching this element",SHALL,Server,true,,,"2.2.17.01, 2.2.18.01, 2.2.18.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_patient_intent_status_search_test" +hl7.fhir.us.core_6.1.0,252,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +Shall be all that is required +-See the General Guidance section for additional rules and expectations for [Servers Requiring Status](https://hl7.org/fhir/us/core/STU6.1/general-requirements.html#search-for-servers-requiring-status).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,253,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +SHALL include all MedicationRequest resources with an intent = “order” representing authorized medication orders directly derived from the system’s orders.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,254,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +SHALL include all prescribed and “self-prescribed” MedicationRequest resources with an intent = “plan” representing reported medications",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,256,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[when communicating reported medications] ... prescribed and “self-prescribed” MedicationRequest resources with an intent = “plan” ... [servers] +SHALL use the reported[x] element to indicate that the MedicationRequest record was captured as a secondary “reported” record rather than an original primary source-of-truth record.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,257,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[when communicating reported medications] ... prescribed and “self-prescribed” MedicationRequest resources with an intent = “plan” [servers] ... may also indicate the source of the report.",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,258,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[when communicating reported medications] ... “self-prescribed” MedicationRequest resources with an intent = “plan” [servers] ... + SHOULD use the requester element to indicate the Patient or RelatedPerson as the prescriber.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,259,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +The encounter element SHOULD be supported [by the server].",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,260,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[Servers supporting the encounter element when] Searching by [encounter] context (i.e., for a given inpatient encounter) will return all medications ordered during that encounter, including medications administered in hospital and prescribed or discharge medications intended to be taken at home.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,263,https://hl7.org/fhir/us/core/STU6.1/medication-list.html#de-duplication-of-data,"To provide a list of a patient’s medications, it may be necessary to “de-duplicate” them. The de-duplication activity MAY be supplied by the server",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,266,https://hl7.org/fhir/us/core/STU6.1/basic-provenance.html#hie-transformation,The HIE must maintain the original data source.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,267,https://hl7.org/fhir/us/core/STU6.1/basic-provenance.html#hie-transformation,"An agent.type=”assembler”, agent.type=”transmitter”, or other agents from [Provenance Agent Type](https://hl7.org/fhir/us/core/STU6.1/ValueSet-us-core-provenance-participant-type.html) value set MAY also be included.",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,268,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#introduction,"implementers [US Core's of framework of Screening and Assessments] SHOULD consider more constrained, domain-specific profiles derived from the US Core Profiles to meet the needs of their respective use cases.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,269,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#clinical-judgments,"Every server that supports the USDCI Data Class “Health Status/Assessments”: + +SHALL support representing clinical judgments using [US Core Condition Problems and Health Concerns Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html) or [US Core Simple Observation Profile](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-simple-observation.html).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,270,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#clinical-judgments,"Every server that supports the USDCI Data Class “Health Status/Assessments”: +... +When a Simple Observation or Problem or Health Concern is recorded based on a structured screening and assessment ..., the US Core Simple Observation Profile [[Profile link](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-simple-observation.html)] SHOULD reference it using the derivedFrom element",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,271,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#clinical-judgments,"Every server that supports the USDCI Data Class “Health Status/Assessments”: +... +When a Simple Observation or Problem or Health Concern is recorded based on a structured screening and assessment ..., the US Core Condition Problems and Health Concerns Profile [[Profile link](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-problems-health-concerns.html) should reference it] using the evidence.detail element",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,272,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#choosing-between-questionnaireresponse-and-observation,"For API developers using US Core, it’s important to understand when to use the QuestionnaireResponse versus Observation to represent structured assessments and surveys. Here are some guidelines to help choose the appropriate profile: +Observations represent specific point-in-time facts that need to be searched, trended, the subject of statistical analysis, and directly referenced in support of other actions ... anything that meets one of the preceding criteria must be surfaced as an Observation.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,273,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#choosing-between-questionnaireresponse-and-observation,"For API developers using US Core, it’s important to understand when to use the QuestionnaireResponse versus Observation to represent structured assessments and surveys. Here are some guidelines to help choose the appropriate profile: +Observations represent specific point-in-time facts that need to be searched, trended, the subject of statistical analysis, and directly referenced in support of other actions ... anything that meets one of the preceding criteria must be surfaced as an Observation.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,274,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#choosing-between-questionnaireresponse-and-observation,"For FHIR implementers, it is important to note that QuestionnaireResponse [which represent the source-of-truth of a completed form, shall] references a specific version of a form, whether it was represented as a FHIR Questionnaire or not. This reference provides the context of exactly what options were available, what logic was used to calculate answers, and what questions were asked.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,276,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: + +US Core Simple Observation Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,277,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: + +US Core Observation Screening Assessment Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,278,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: +US Core Condition Problems and Health Concerns Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,279,https://hl7.org/fhir/us/core/STU6.1/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: + +US Core ServiceRequest Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,282,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#endpoint-discoverability,A server may support Version DSTU2 and Argonaut Data Query,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,283,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#endpoint-discoverability,A server may … FHIR R4 and US Core ver 3.1.1+,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,284,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#endpoint-discoverability,A server may support [both] [(]Version DSTU2 and Argonaut Data Query[) and (] FHIR R4 and US Core ver 3.1.1+[)],MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,285,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#endpoint-discoverability,"A server may make explicit which version of Argo/US Core is on their FHIR endpoint (e.g., “DSTU2” or “R4” path component or separate files based on version).",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,287,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#no-guarantee-that-resource-ids-are-preserved,Servers SHOULD maintain a stable common identifier for a resource across [FHIR] versions.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,288,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r4,"In an upgraded R4 endpoint, any data in FHIR DSTU2 SHOULD be in FHIR R4.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,289,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r5,The FHIR RESTful resource types supported in a DSTU2 implementation SHOULD be supported in a R4 implementation,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,290,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r7,"The FHIR RESTful resource types supported in a DSTU2 implementation SHOULD be supported in a R4 implementation [with the] exception [of] +MedicationStatement may be deprecated, and the data SHOULD be mapped to MedicationRequest.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,291,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r8,"The FHIR RESTful resource types supported in a DSTU2 implementation SHOULD be supported in a R4 implementation [with the] exception [of] +Care teams as represented by CarePlan in DSTU2 SHOULD be replaced by and the data mapped to CareTeam in R4",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,295,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r9,Servers SHOULD make available the same information in DSTU2 and R4 where the more recent standard allows.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,296,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r10,"Servers SHOULD make available the same information in DSTU2 and R4 where the more recent standard allows … [with the] exception [of] +MedicationStatement data [should be] mapped to MedicationRequest",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,297,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r11,"Servers SHOULD make available the same information in DSTU2 and R4 where the more recent standard allows … [with the] exception [of] +care teams, as represented by CarePlan, SHOULD be mapped to CareTeam in R4",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,298,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r12,"Data SHOULD be maintained between [FHIR] versions (i.e., not be degraded).",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,300,https://hl7.org/fhir/us/core/STU6.1/changes-between-versions.html#authorization-across-versions,Separate authorization is required [between different versions of FHIR],SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,302,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[The clinical status of the allergy] SHALL be present if verification status is not “entered-in-error”,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,303,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[The clinical status of the allergy] SHALL NOT be present if verification Status is “entered-in-error”,SHALL NOT,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,305,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,"Profile Specific Implementation Guidance: + +No Known Allergies may be represented using the US Core-AllergyIntolerance profile",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,306,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[When used No Known Allergies is documented the system Shall use an] appropriate negation code in AllergyIntolerence.code,SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,307,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[When used No Known Allergies is documented the system Shall use an] verification status in AllergyIntolerance.verificationStatus,SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,308,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,"If a patient has not been asked about their allergies, this would be represented as: +AllergyIntolerance.code = “1631000175102” (Patient not asked (contextual qualifier) (qualifier value)) +AllergyIntolerance.verificationStatus = “unconfirmed” or empty (in other words, then element omitted)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,309,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,"If a patient has been asked, but has indicated they have no known allergies, this would be represented as: +AllergyIntolerance.code = “716186003” (No known allergy (situation)) +AllergyIntolerance.verificationStatus = “confirmed”",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,310,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-careplan.html#mandatory-and-must-support-data-elements,Considerations for systems aligning with [HL7 Consolidated (C-CDA)](http://www.hl7.org/implement/standards/product_brief.cfm?product_id=492) Care Plan requirements: US Core Goal SHOULD be present in CarePlan.goal,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,311,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-careplan.html#mandatory-and-must-support-data-elements,Considerations for systems aligning with [HL7 Consolidated (C-CDA)] (http://www.hl7.org/implement/standards/product_brief.cfm?product_id=492) Care Plan requirements: ... US Core Condition SHOULD be present in CarePlan.addresses,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,312,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-careplan.html#mandatory-and-must-support-data-elements,Considerations for systems aligning with [HL7 Consolidated (C-CDA)] (http://www.hl7.org/implement/standards/product_brief.cfm?product_id=492) Care Plan requirements: Assessment and Plan MAY be included as narrative in CarePlan.text,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,313,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,"Although both US Core Practitioner Profile and US Core PractitionerRole are Must Support, ... server system[s conforming to the Us Core CareTeam profile are] ... not required to support references to both, but SHALL support at least one of them",SHALL,Server,true,,,2.2.6.08,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_reference_resolution_test +hl7.fhir.us.core_6.1.0,317,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,"[When conforming to the Us Core CareTeam profile] Because the US Core PractitionerRole Profile supplies the provider’s location and contact information and a reference to the Practitioner, server systems [conforming to the Us Core CareTeam profile] SHOULD reference it instead of the US Core Practitioner Profile [when conforming to the Us Core CareTeam profile] .",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,318,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,Servers [conforming to the Us Core CareTeam profile] that support only US Core Practitioner Profile and do not support the US Core PractitionerRole Profile SHALL provide implementation-specific guidance on how to access a provider’s location ... information using only the Practitioner resource.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,319,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,Servers [conforming to the Us Core CareTeam profile] that support only US Core Practitioner Profile and do not support the US Core PractitionerRole Profile SHALL provide implementation-specific guidance on how to access a provider’s ... contact information using only the Practitioner resource.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,320,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements,"For Problems and Health Concerns [records, systems SHOULD] use the [US Core Condition Problems and Health Concerns Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html).",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,323,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",USCDI’s applicable vocabulary standards for Encounter Diagnosis are SNOMED CT and ICD-10-CM. The US Core Condition Codes only supports ICD-9-CM for historical purposes. ICD-10-CM is available and SHOULD be used as the primary code for current encounter diagnoses.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,324,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements,[A US Core Condition Encounter Diagnosis] encounter SHOULD always be referenced in Condition.encounter.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,325,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",A [US Core Condition Encounter Diagnosis] server SHALL support Condition.recordedDate,SHALL,Server,false,,,2.2.7.14,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test +hl7.fhir.us.core_6.1.0,326,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",A server SHALL support at least one of [assertedDate Extension](http://hl7.org/fhir/R4/extension-condition-asserteddate.html) and Condition.onsetDateTime.,SHALL,Server,true,,,2.2.7.14,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_must_support_test +hl7.fhir.us.core_6.1.0,330,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements,"[When a condition has a category code of] Encounter Diagnosis, use [ US Core Condition Encounter Diagnosis Profile](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html).",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,331,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements,"If Condition.category contains a Problem List item category (problem-list-item), Condition.clinicalStatus SHOULD be present.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,335,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,Implementers should refer to the [PHDSC Payer Type Committee User’s Guide](https://www.nahdo.org/sites/default/files/2020-12/SourceofPaymentTypologyUsersGuideVersion9.2December2020.pdf) for the Source of Payment Typology when selecting codes.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,339,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,"If Insurers issue unique member IDs for dependents, then the memberId Coverage.identifier should be used [with the unique dependent ID] instead of Coverage.dependent to uniquely refer to the dependent with respect to their insurance.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,340,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"For non-implantable devices (for example, software or crutches), use the base FHIR Device resource or other use case-specific Device profiles.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,341,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers are encouraged to use the FDA Global UDI Database (GUDID) and associated APIs to parse and validate the [unique device ID] UDI,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,342,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implantable medical devices with UDI information SHALL represent the UDI code in Device.udiCarrier.carrierHRF,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,343,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,UDI-PI elements present [in Device.udiCarrier.carrierHRF] SHALL be represented in the corresponding US Core Implantable Device Profile elements,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,344,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"If UDI is not present and the manufacturer … is available, … [it] SHOULD be included to support historical reports of implantable medical devices [where] manufacturer [is sent in] Device.manufacturer",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,345,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"If UDI is not present and the ... model number information is available, … [it] SHOULD be included to support historical reports of implantable medical devices [where] model [is sent in] Device.model",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,346,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Servers SHOULD support query by Device.type to allow clients to request the patient’s devices by a specific type.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,347,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including: UDI HRF string (udi-carrier)",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,348,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including:UDI Device Identifier (udi-di)",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,349,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including: Manufacturer (manufacturer)",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,350,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including: Model number (model)",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,351,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by lot numbers,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,352,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by serial number,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,353,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by expiration date,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,354,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by manufacture date,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,355,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by distinct identifier,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,356,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements","The diagnostically relevant time (known as the “effective time” and typically the time of specimen collection) … SHALL be present if status [of the diagnostic report] is ‘partial’, ‘preliminary’, ‘final’, ‘amended’, ‘corrected’, or ‘appended’.",SHALL,Server,true,,,2.2.12.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test +hl7.fhir.us.core_6.1.0,357,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-lab.html#mandatory-and-must-support-data-elements,"When the report was released … SHALL be present if status [of the diagnostic report] is ‘partial’, ‘preliminary’, ‘final’, ‘amended’, ‘corrected’, or ‘appended’.",SHALL,Server,true,,,2.2.12.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_validation_test +hl7.fhir.us.core_6.1.0,360,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,"The DiagnosticReport.category binding Must Support, at a minimum, the US Core DiagnosticReport Category Codes of Cardiology, Radiology, and Pathology",SHALL,Server,false,,,2.2.11.10,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_must_support_test +hl7.fhir.us.core_6.1.0,361,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,Other [diagnostic report] categories may be supported [when using US Core DiagnosticReport Profile for Report and Note Exchange],MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,362,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,[L]inkages between specific LOINC codes and the LP-type codes may be used as guidance [for a server's categorization of diagnostic reports],MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,364,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,"For Diagnostic Imaging Reports systems SHOULD support using the subset of LOINC codes defined in CONF-DIR-19 in HL7 Implementation Guide for CDA Release 2: Imaging Integration, Levels 1, 2, and 3, Basic Imaging Reports in CDA and DICOM Diagnostic Imaging Reports (DIR) - Universal Realm, Release 1.0.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,365,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"The DocumentReference.type binding Must Support, at a minimum, the 5 [Common Clinical Notes](https://hl7.org/fhir/us/core/STU6.1/ValueSet-us-core-clinical-note-type.html)",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,366,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,The DocumentReference.type binding may extend to the whole [US Core DocumentReference Type Value Set](https://hl7.org/fhir/us/core/STU6.1/ValueSet-us-core-documentreference-type.html),MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,367,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,[DocumentReference.type may also use] other category schemes such as the LOINC-based [Document Class Value Set](http://hl7.org/fhir/R4/valueset-document-classcodes.html) and [IHE XDSclassCode](https://wiki.ihe.net/index.php/XDS_classCode_Metadata_Coding_System),MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,368,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"Although both [DocumentReference.attachment.url and DocumentReference.attachment.data] are marked as Must Support, the server system is not required to support an address and inline base64 encoded data, but SHALL support at least one of these elements.",SHALL,Server,true,,,2.2.13.11,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_must_support_test +hl7.fhir.us.core_6.1.0,371,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"If the [content.url] endpoint is outside the FHIR base URL, it SHOULD NOT require additional authorization to access.",SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,372,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"If there are multiple DocumentReference.content element repetitions, these SHALL all represent the same document in different formats or attachment metadata",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,373,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,The [documentReference.content] element SHALL NOT contain different versions of the same content.,SHALL NOT,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,374,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,The organization responsible for the DocumentReference SHALL be present either in DocumentReference.custodian or accessible in the Provenance resource targeting the DocumentReference using Provenance.agent.who or Provenance.agent.onBehalfOf,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,375,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,"Although ... marked as Must Support, servers are not required to support both [an Encounter.reasonCode or a reference with Encounter.reasonReference], but they SHALL support at least one of these elements.",SHALL,Server,true,,,2.2.14.13,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test +hl7.fhir.us.core_6.1.0,378,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,"If Encounter.reasonReference references an Observation, it SHOULD conform to a US Core Observation [profile applicable to the observation being made]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,379,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,"Although … marked as Must Support, servers are not required to support both Encounter.location.location and Encounter.serviceProvider, but they SHALL support at least one of these elements.",SHALL,Server,true,,,2.2.14.13,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_must_support_test +hl7.fhir.us.core_6.1.0,383,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-location.html#mandatory-and-must-support-data-elements",If using Encounter.location.location it SHOULD conform to US Core Location.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,387,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-goal.html#mandatory-and-must-support-data-elements,"Although both Goal.startDate and Goal.target.dueDate are marked as Must Support, the server system is not required to support both, but SHALL support at least one of these elements.",SHALL,Server,true,,,2.2.15.08,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_must_support_test +hl7.fhir.us.core_6.1.0,390,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,[Servers shall] use the status code: not-done to represent that an immunization was not given.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,391,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,[For organization participating in the ONC Health IT Certification program] [CVX vaccine codes](https://www2a.cdc.gov/vaccines/iis/iisstandards/ndc_crosswalk.asp) are required,SHALL,Server,true,,,2.2.16.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_validation_test +hl7.fhir.us.core_6.1.0,392,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,[NDC vaccine codes](http://www2a.cdc.gov/vaccines/iis/iisstandards/ndc_crosswalk.asp) SHOULD be supported as a translation [of [CVX Vaccine Codes](https://www2a.cdc.gov/vaccines/iis/iisstandards/ndc_crosswalk.asp)],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,393,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,The preferred code system identifier … is [http://hl7.org/fhir/sid/cvx](http://hl7.org/fhir/sid/cvx) for CVX [vaccine codes],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,394,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,The preferred code system identifier … is [http://hl7.org/fhir/sid/ndc](http://hl7.org/fhir/sid/ndc) for NDC vaccine codes],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,397,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When using a code [to represent a medication for a medication dispense], RXNorm concepts are used.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,398,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When using a code [to represent a medication for a medication dispense], [National Drug Codes (NDC)](https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory) can be supplied as an additional coding element.",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,399,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When referencing a Medication resource in .medicationReference, the resource may be [contained](http://hl7.org/fhir/R4/references.html#contained)",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,400,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When referencing a Medication resource in .medicationReference, the resource may be an external resource",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,401,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","The server systems are not required to support both a [medication] code and a reference [when sending medicationDispense], but SHALL support at least one of these methods",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,402,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","If an external reference to a Medication resource is used, the server SHALL support the [_include](http://hl7.org/fhir/R4/search.html#include) parameter for searching this element.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,405,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"[For organization participating in the ONC Health IT Certification program] each MedicationRequest Must Support the following additional element, ... the reason or indication for the prescription",SHALL,Server,true,,,2.2.18.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test +hl7.fhir.us.core_6.1.0,407,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"When recording “self-prescribed” medication, requester SHOULD be used to indicate the Patient or RelatedPerson as the prescriber",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,408,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"Although [medicationRequest.reportedBoolean and MedicationRequest.reportedReference] are both marked as Must Support, the server system is not required to support both, but SHALL support at least one of these elements",SHALL,Server,true,,,2.2.18.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_must_support_test +hl7.fhir.us.core_6.1.0,416,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"When using MedicationRequest.reasonReference, the referenced Condition or Observation SHOULD be a US Core Profile.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,417,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,Source EHR identifiers SHOULD be included to support deduplication across MedicationRequest resources.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,418,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,Servers SHALL follow the guidance on the Medication List page and return all active medications as MedicationRequest.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,419,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-treatment-intervention-preference.html#mandatory-and-must-support-data-elements",The observations MAY have additional codes that translate or map to the Observation code or category codes [such as] … local system-specific codes [and] …more specific codes,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,420,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-treatment-intervention-preference.html#mandatory-and-must-support-data-elements",[For an Observation a] code system value SHOULD be supplied for each additional code,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,423,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements,Servers SHOULD use the base FHIR [Observation Category Codes] (http://hl7.org/fhir/R4/valueset-observation-category.html) [in Observation.category],SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,424,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements",Systems SHOULD support Observation.effectivePeriod to accurately represent measurements over time,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,425,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements","An Observation.component without a value, SHALL include a reason why the data is absent",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,426,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements",Systems that never provide a component observation without a component value … [MAY choose not] to support Observation.component.dataAbsentReason,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,427,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements","An Observation without a value, SHALL include a reason why the data is absent",SHALL,Server,true,,,2.2.36.08,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_clinical_result-us_core_v610_observation_clinical_result_validation_test +hl7.fhir.us.core_6.1.0,428,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements",[For] an Observation without a value … [Systems MAY choose not to] include a reason why the data is absent … [if] there are component observations or … reporting panel observations using Observation.hasMember,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,429,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements",Systems that never provide an observation without a value ... [MAY choose not] to support Observation.dataAbsentReason,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,432,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-occupation.html#mandatory-and-must-support-data-elements,"[When sending US Core Observation Occupation Profile] for … [a] current job, [servers SHALL] omit observation.effectivePeriod.end to indicate it is ongoing.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,433,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-occupation.html#mandatory-and-must-support-data-elements,"When the industry is known, but the occupation is not, [servers SHALL] use the value “unknown” from the [DataAbsentReason Code System](http://hl7.org/fhir/R4/codesystem-data-absent-reason.html)",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,434,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-occupation.html#mandatory-and-must-support-data-elements,"when the occupation is known but the industry is not, [servers SHALL] omit the industry Observation.component",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,435,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancyintent.html#mandatory-and-must-support-data-elements,"To represent the patient’s pregnancy status, [servers SHALL] use the [US Core Observation Pregnancy Status Profile](https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancystatus.html).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,436,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancystatus.html#mandatory-and-must-support-data-elements,"To represent the patient’s intent to become pregnant, [servers SHALL] use the [US Core Observation Pregnancy Intent Profile](https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancyintent.html).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,437,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements,"[For] multi-question surveys or assessments Observation.code is an overarching assessment or screening code, and the Observation.value element SHOULD be empty",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,438,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements,"A practitioner’s clinical observation or assertion about a patient’s health status, which is not a response to a screening or assessment question,SHOULD use the [US Core Simple Observation Profile](https://hl7.org/fhir/us/core/StructureDefinition-us-core-simple-observation.html) instead [of the US Core Observation Screening Assessment Profile]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,439,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements,the server system ... SHALL support [either] Reference(US Core Observation Profile) or Reference(US Core QuestionnaireResponse Profile) for Observation.derivedFrom,SHALL,Server,true,,,2.2.34.10,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_reference_resolution_test +hl7.fhir.us.core_6.1.0,440,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-sexual-orientation.html#mandatory-and-must-support-data-elements,"Additional codes that translate or map to the Observation code (e.g., local codes) are allowed [when using US Core Observation Sexual Orientation Profile]",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,441,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-simple-observation.html#mandatory-and-must-support-data-elements,Observations formally part of an assessment tool or survey SHOULD use the [US Core Observation Screening Assessment Profile](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-observation-screening-assessment.html).,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,442,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-simple-observation.html#mandatory-and-must-support-data-elements,An assertion or determination derived from screening and assessment tools SHOULD reference them using Observation.derivedFrom,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,443,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-simple-observation.html#mandatory-and-must-support-data-elements,"When using `ServiceRequest.reasonReference’ to reference an Observation, the referenced Observation SHOULD be a US Core Observation",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,447,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements,[US Core Vital Signs] observations MAY have [component](http://hl7.org/fhir/R4/observation.html#gr-comp) observations … [see] FHIR core specification [vital signs table](http://hl7.org/fhir/R4/observation-vitalsigns.html#vitals-table) for examples,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,448,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-pediatric-bmi-for-age.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-pediatric-weight-for-height.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-head-occipital-frontal-circumference-percentile.html#mandatory-and-must-support-data-elements",Information about the growth chart tables used to determine percentiles SHOULD be supplied in Observation.note.text,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,449,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-blood-pressure.html#mandatory-and-must-support-data-elements,"[In the US Core Blood Pressure Profile] because the blood pressure values are communicated in the mandatory systolic and diastolic components[,] the Observation.value[x] element SHOULD be omitted",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,450,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-blood-pressure.html#mandatory-and-must-support-data-elements,"[In the US Core Blood Pressure Profile] because the blood pressure values are communicated in the mandatory systolic and diastolic components[,] an Observation without a systolic or diastolic result value, SHALL include a reason why the data is absent in Observation.component.dataAbsentReason",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,451,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-blood-pressure.html#mandatory-and-must-support-data-elements,"[In the US Core Blood Pressure Profile] because the blood pressure values are communicated in the mandatory systolic and diastolic components[,] All server systems - including those that never provide a component observation without a value - SHALL support Observation.component.dataAbsentReason for the components.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,452,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-pulse-oximetry.html#mandatory-and-must-support-data-elements,Inspired oxygen therapy may be represented with [component](http://hl7.org/fhir/R4/observation.html#gr-comp) observations when measured at the same time as the pulse oximetry measurements [in the US Core Pulse Oximetry profile],MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,453,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-pulse-oximetry.html#mandatory-and-must-support-data-elements,"Many pulse oximetry readings are taken while the patient is breathing room air. The concept of “room air” (unmodified, ambient air) SHOULD be represented as an inhaled oxygen flow rate of 0 liters/min",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,454,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-pulse-oximetry.html#mandatory-and-must-support-data-elements,"A pulse oximetry reading without inspired oxygen component observations may imply that the measurement was performed while the patient was breathing room air or that the inspired oxygen reading was omitted. To remove this uncertainty, the inspired oxygen [component](http://hl7.org/fhir/R4/observation.html#gr-comp) observations SHOULD be used [when using the US Core Pulse Oximetry profile.]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,455,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-organization.html#mandatory-and-must-support-data-elements,Systems SHALL support National Provider Identifier (NPI) for organizations,SHALL,Server,false,,,2.2.43.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_organization-us_core_v610_organization_must_support_test +hl7.fhir.us.core_6.1.0,456,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-organization.html#mandatory-and-must-support-data-elements,Systems … SHOULD the National Association of Insurance Commissioners NAIC Company code (sometimes called “NAIC Number” or “cocode”) for payers.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,457,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-organization.html#mandatory-and-must-support-data-elements,Systems … SHOULD support Clinical Laboratory Improvement Amendments (CLIA) for laboratories,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,466,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,Previous name is represented by setting Patient.name.use to “old” or providing an end date in Patient.name.period or doing both,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,467,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,Previous address is represented by setting Patient.address.use to “old” or providing an end date in Patient.address.period or doing both.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,468,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,Communication.preferred MAY designate a preferred language when multiple languages are represented,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,472,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,The Patient’s Social Security Numbers SHOULD NOT be used as a patient identifier in Patient.identifier.value,SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,473,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-practitioner.html#mandatory-and-must-support-data-elements,Servers that support only the US Core Practitioner Profile and do not support the [US Core PractitionerRole Profile](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-practitionerrole.html) SHALL provide implementation-specific guidance on how to access a provider’s location and contact information using only the Practitioner resource.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,477,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-practitioner.html#mandatory-and-must-support-data-elements,Only professional/work contact information about the practitioner SHOULD be available to the patient,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,479,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,"Procedure codes … [MAY] be taken from SNOMED-CT, CPT, HCPCS II, ICD-10-PCS, CDT, or LOINC [for procedure.code]",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,480,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,[If using LOINC codes in procedure.code] only LOINC concepts that reflect actual procedures SHOULD be used,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,481,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,A procedure including an implantable device SHOULD use Procedure.focalDevice referencing the [US Core Implantable Device Profile](https://hl7.org/fhir/us/core/STU6./StructureDefinition-us-core-implantable-device.html).,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,489,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type AllergyIntolerance,SHALL,Server,false,,,2.2.4.04,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,490,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type CarePlan,SHALL,Server,false,,,2.2.5.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_plan-us_core_v610_care_plan_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,491,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type CareTeam,SHALL,Server,false,,,2.2.6.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_care_team-us_core_v610_care_team_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,492,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Condition,SHALL,Server,false,,,"2.2.7.12, 2.2.8.12","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_encounter_diagnosis-us_core_v610_condition_encounter_diagnosis_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_condition_problems_health_concerns-us_core_v610_condition_problems_health_concerns_provenance_revinclude_search_test" +hl7.fhir.us.core_6.1.0,493,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Coverage,SHALL,Server,false,,,2.2.9.03,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_coverage-us_core_v610_coverage_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,494,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Device,SHALL,Server,false,,,2.2.10.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_device-us_core_v610_device_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,495,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type DiagnosticReport,SHALL,Server,false,,,"2.2.11.08, 2.2.12.08","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_note-us_core_v610_diagnostic_report_note_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_diagnostic_report_lab-us_core_v610_diagnostic_report_lab_provenance_revinclude_search_test" +hl7.fhir.us.core_6.1.0,496,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Document Reference,SHALL,Server,false,,,2.2.13.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_document_reference-us_core_v610_document_reference_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,497,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Encounter,SHALL,Server,false,,,2.2.14.11,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_encounter-us_core_v610_encounter_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,498,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Goal,SHALL,Server,false,,,2.2.15.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_goal-us_core_v610_goal_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,499,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Immunization,SHALL,Server,false,,,2.2.16.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_immunization-us_core_v610_immunization_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,500,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type MedicationDispense,SHALL,Server,false,,,2.2.17.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_dispense-us_core_v610_medication_dispense_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,501,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type MedicationRequest,SHALL,Server,false,,,2.2.18.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_medication_request-us_core_v610_medication_request_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,502,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Observation,SHALL,Server,false,,,"2.2.19.07, 2.2.20.07, 2.2.21.07, 2.2.22.07, 2.2.30.07, 2.2.34.07","crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_lab-us_core_v610_observation_lab_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancystatus-us_core_v610_observation_pregnancystatus_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_pregnancyintent-us_core_v610_observation_pregnancyintent_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_occupation-us_core_v610_observation_occupation_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_sexual_orientation-us_core_v610_observation_sexual_orientation_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_observation_screening_assessment-us_core_v610_observation_screening_assessment_provenance_revinclude_search_test" +hl7.fhir.us.core_6.1.0,503,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Patient,SHALL,Server,false,,,2.2.3.10,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_patient-us_core_v610_patient_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,504,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Procedure,SHALL,Server,false,,,2.2.40.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_procedure-us_core_v610_procedure_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,505,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type QuestionnaireResponse,SHALL,Server,false,,,2.2.41.07,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response-us_core_v610_questionnaire_response_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,506,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type RelatedPerson,SHALL,Server,false,,,2.2.47.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_related_person-us_core_v610_related_person_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,507,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type ServiceRequest,SHALL,Server,false,,,2.2.42.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_service_request-us_core_v610_service_request_provenance_revinclude_search_test +hl7.fhir.us.core_6.1.0,508,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,"If a system receives a provider in Provenance.agent.who as free text, they must capture [the organization] who sent them the information [and upon] request ... SHALL provide this organization as the source",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,509,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,"If a system receives a provider in Provenance.agent.who as free text, … [upon request they] MAY include the free text provider.",MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,510,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,Systems that need to know the activity has occurred SHOULD populate the activity [Provenance.activity],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,511,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-questionnaireresponse.html#mandatory-and-must-support-data-elements,If the QuestionnaireResponse is based on a non-FHIR form [then a] ... FHIR Questionnaire [needs to] represent at least the relevant metadata,SHALL,Server,true,,,2.2.41,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_questionnaire_response +hl7.fhir.us.core_6.1.0,512,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-questionnaireresponse.html#mandatory-and-must-support-data-elements,If the QuestionnaireResponse is based on a non-FHIR form [then a] … FHIR Questionnaire's questions may be omitted,MAY,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,514,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,"The ServiceRequest.category value set … [MAY] be treated as [extensible](http://hl7.org/fhir/R4/terminologies.html#extensible), and other category codes can be used instead [of the US Core ServiceRequest Category Codes]",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,515,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,The ServiceRequest.code value ... SHOULD be constrained to a subset for a particular use case or domain,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,522,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,"When using ServiceRequest.reasonReference, the referenced resources SHOULD be a US Core Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,523,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-specimen.html#mandatory-and-must-support-data-elements,"Since the binding [for Specimen.type] is [extensible](http://hl7.org/fhir/R4/terminologies.html#extensible) when a code is unavailable, just text is allowed.",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,532,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#should_igs,"[Servers] SHOULD Support the ... +[SMART Application Launch Framework Implementation Guide](http://hl7.org/fhir/smart-app-launch/history.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,533,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL support the US Core Patient resource profile,SHALL,Server,false,,,2.2.1.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_capability_statement-us_core_profile_support +hl7.fhir.us.core_6.1.0,534,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL support … at least one additional resource profile [in addition to the US Core Patient resource profile] from the list of US Core Profiles,SHALL,Server,false,,,2.2.1.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_capability_statement-us_core_profile_support +hl7.fhir.us.core_6.1.0,535,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … Implement the RESTful behavior according to the FHIR specification.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,536,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 400) [for] invalid parameters,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,537,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 401/4xx) [for] unauthorized request,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,538,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 403) [for] insufficient scopes,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,539,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 404) [for] unknown resource,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,540,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … support JSON source formats for all US Core interactions.,SHALL,Server,false,,,2.2.1.04,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_capability_statement-us_core_json_support +hl7.fhir.us.core_6.1.0,541,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHOULD … support XML source formats for all US Core interactions.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,542,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,US Core Server SHOULD … identify the US Core profiles supported as part of the FHIR meta.profile attribute for each instance.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,543,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#behavior,"A server SHALL reject any unauthorized requests by returning an HTTP 401 ""Unauthorized"", HTTP 403 ""Forbidden"", or HTTP 404 ""Not Found""",SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,548,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#valueset,[US Core Servers] SHOULD support [$expand](http://hl7.org/fhir/OperationDefinition/ValueSet-expand) operation,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,549,https://hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#valueset,"If a server supports DocumentReference for creating, using, and sharing clinical notes, it SHOULD also support the context and contextdirection parameters of the $expand operation",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,550,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems SHALL establish a risk analysis and management regime that conforms with HIPAA security regulatory requirements,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,552,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,US Federal systems SHOULD conform with the risk management and mitigation requirements defined in NIST 800 series documents.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,554,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,US Federal systems … SHOULD include security category assignment following NIST 800-60 vol. 2 Appendix D.14.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,556,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,The coordination of risk management and the related security and privacy controls … SHOULD be defined in the Business Associate Agreement when available.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,558,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems SHALL reference a single time source to establish a common time base for security auditing and clinical data records among computing systems.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,560,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,The selected time service SHOULD be documented in the Business Associate Agreement when available.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,562,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems SHALL keep audit logs of the various transactions.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,564,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems SHALL use TLS version 1.2 or higher for all transmissions not taking place over a secure network connection.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,566,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,US Federal systems SHOULD conform with FIPS PUB 140-2.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,568,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems SHALL conform to [FHIR Communications Security](http://hl7.org/fhir/R4/security.html#http) requirements.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,570,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,"For Authentication and Authorization, Systems SHALL support any [SMART App Launch version](http://hl7.org/fhir/smart-app-launch/history.html) for client <-> server interactions.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,572,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,"Systems SHALL implement consent requirements per their state, local, and institutional policies.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,574,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,The Business Associate Agreements SHOULD document systems’ mutual consent requirements.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,576,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems SHOULD provide Provenance statements using the [US Core Provenance Profile](https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-provenance.html) resource and associated requirements.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,578,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems MAY implement the [FHIR Digital Signatures](http://hl7.org/fhir/R4/security.html#digital%20signatures),MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,580,https://hl7.org/fhir/us/core/STU6.1/security.html#patient-privacy-and-security,Systems MAY protect the confidentiality of data at rest via encryption and associated access controls.,MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,584,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-questionnaireresponse.html#mandatory-and-must-support-data-elements,If the QuestionnaireResponse is based on a non-FHIR form [then a] ... FHIR Questionnaire [will communicate] the identifier of the non-FHIR form instead of the canonical URI using the US Core Extension Questionnaire URI extension.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_6.1.0,587,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,Each AllergyIntolerance Must Support: a verification status,SHALL,Server,false,,,2.2.4.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test +hl7.fhir.us.core_6.1.0,588,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,Each AllergyIntolerance Must Support: a reaction manifestation,SHALL,Server,false,,,2.2.4.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v610_fhir_api-us_core_v610_allergy_intolerance-us_core_v610_allergy_intolerance_must_support_test +hl7.fhir.us.core_6.1.0,700,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html#notes,"Servers providing access to [medical] data ... [MAY] use [US Core SMART Scopes](https://hl7.org/fhir/us/core/STU6.1/future-of-US-core.html#us-core-smart-scopes) for +[resource level scopes](http://hl7.org/fhir/smart-app-launch/scopes-and-launch-context.html#scopes-for-requesting-clinical-data).",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,701,https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-condition-encounter-diagnosis.html#notes,"Servers providing access to [medical] data ... [MAY] use [US Core SMART Scopes](https://hl7.org/fhir/us/core/STU6.1/future-of-US-core.html#us-core-smart-scopes) for +... [granular scopes] (http://hl7.org/fhir/smart-app-launch/scopes-and-launch-context.html#finer-grained-resource-constraints-using-search-parameters).",MAY,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,702,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-location.html, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-practitionerrole.html#mandatory-and-must-support-data-elements",US Core Location … SHOULD be used as the default profile if referenced by another US Core profile,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_6.1.0,703,"https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-location.html, https://hl7.org/fhir/us/core/STU6.1/StructureDefinition-us-core-practitionerrole.html#mandatory-and-must-support-data-elements",US Core PractionerRole … SHOULD be used as the default profile if referenced by another US Core profile,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,1,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-only-support,"To support a US Core Profile, a server: **SHALL** Be able to populate all profile data elements that are mandatory and/or flagged as Must Support as defined by that profile’s StructureDefinition.",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,2,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-only-support,"To support a US Core Profile, a server: **SHOULD** declare support for a US Core Profile by including its official URL in the server’s `CapabilityStatement.rest.resource.supportedProfile` element.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,3,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Servers may deploy and support one or more US Core Profiles to represent clinical information,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,4,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: “Quick Start” defined for each Profile,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,5,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Clinical Notes](https://hl7.org/fhir/us/core/clinical-notes.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,6,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Medication List](https://hl7.org/fhir/us/core/medication-list.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,7,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Basic Provenance](https://hl7.org/fhir/us/core/basic-provenance.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,8,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Server may deploy and support ... the following US Core interaction: [Screening and Assessments](https://hl7.org/fhir/us/core/screening-and-assessments.html),MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,9,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Servers implementing ... [clinical information representation] can claim conformance to the US Core Profile content structure ... by implementing all or parts of the US Core CapabilityStatement into their capabilities.,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,10,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,Servers implementing ... [interactions] can claim conformance to the ... RESTful interactions defined by implementing all or parts of the US Core CapabilityStatement into their capabilities,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,11,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,A server that certifies to the [21st Century Cures Act for accessing patient data](https://www.federalregister.gov/d/2020-07419/p-1177) must implement all components in the USCDI [[USCDI link](https://www.healthit.gov/isp/united-states-core-data-interoperability-uscdi)],SHALL,Server,true,Not Tested,This requirement is specific to testing for the 21st Century Cures Act and is not relevant to the IG tests,NA,NA +hl7.fhir.us.core_7.0.0,12,https://hl7.org/fhir/us/core/STU7/general-requirements.html#profile-support--interaction-support,A server that certifies to the [21st Century Cures Act for accessing patient data](https://www.federalregister.gov/d/2020-07419/p-1177) must implement all components in the ... the US Core CapabilityStatement [[Definition](https://hl7.org/fhir/us/core/CapabilityStatement-us-core-server.html)] .,SHALL,Server,true,Not Tested,This requirement is specific to testing for the 21st Century Cures Act and is not relevant to the IG tests,NA,NA +hl7.fhir.us.core_7.0.0,13,https://hl7.org/fhir/us/core/STU7/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL** Be able to populate all profile data elements that are mandatory and/or flagged as Must Support as defined by that profile’s StructureDefinition.",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,14,https://hl7.org/fhir/us/core/STU7/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHOULD** declare conformance with the US [Core Server Capability Statement](https://hl7.org/fhir/us/core/CapabilityStatement-us-core-server.html) by including its official URL in the server’s `CapabilityStatement.instantiates` element: `http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server`",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,15,https://hl7.org/fhir/us/core/STU7/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL** specify the full capability details from the US Core CapabilityStatement it claims to implement.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,16,https://hl7.org/fhir/us/core/STU7/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL**… Declare support for the US Core Profile by including its official URL in the server’s CapabilityStatement.rest.resource.supportedProfile element.",SHALL,Server,false,,,2.3.1.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_capability_statement-us_core_profile_support +hl7.fhir.us.core_7.0.0,17,https://hl7.org/fhir/us/core/STU7/general-requirements.html#claiming-conformance-to-a-us-core-profile,"[To claim conformance to a US Core Profile] a conformant server: + +**SHALL**… Declare support for the US Core Profile’s FHIR RESTful transactions.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,18,https://hl7.org/fhir/us/core/STU7/general-requirements.html#required-bindings-for-coded-elements,[Required binding](http://hl7.org/fhir/R4/terminologies.html#required) to a ValueSet definition means that one of the codes from the specified ValueSet **SHALL** be used.,SHALL,Server,false,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,19,https://hl7.org/fhir/us/core/STU7/general-requirements.html#required-bindings-for-coded-elements,"For `CodeableConcept`, which permits multiple codings and a text element, this [[Required binding](http://hl7.org/fhir/R4/terminologies.html#required) to a ValueSet definition] rule applies to at least one of the codings",SHALL,Server,true,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,20,https://hl7.org/fhir/us/core/STU7/general-requirements.html#required-bindings-for-coded-elements,"For a [[required binding](http://hl7.org/fhir/R4/terminologies.html#required) to a ValueSet definition], a `CodeableConcept`which permits multiple codings and a text element … [using] only text is not valid.",SHALL NOT,Server,false,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,21,https://hl7.org/fhir/us/core/STU7/general-requirements.html#required-bindings-for-coded-elements,[When populating a coded element with a [required binding](http://hl7.org/fhir/R4/terminologies.html#required] to a ValueSet definition] US Core Responders **SHALL** provide a code exclusively from [the required binding] ValueSet,SHALL,Server,false,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,23,https://www.hl7.org/fhir/us/core/general-requirements.html#extensible-binding-for-coded-elements,[Extensible binding] (http://hl7.org/fhir/R4/terminologies.html#extensible) means that one of the codes from the specified ValueSet **SHALL** be used if an applicable concept is present.,SHALL,Server,true,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,24,https://hl7.org/fhir/us/core/STU7/general-requirements.html#extensible-binding-for-coded-elements,"[When using an [extensible Binding] (http://hl7.org/fhir/R4/terminologies.html#extensible)] If no suitable code exists in the [extensible] ValueSet, alternate code(s) may be provided.",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,26,https://hl7.org/fhir/us/core/STU7/general-requirements.html#extensible-binding-for-coded-elements,"For `CodeableConcept` [with an [extensible binding] (http://hl7.org/fhir/R4/terminologies.html#extensible) … If only text is available and it has no conceptual overlap with the bound coded values, then just text may be used.",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,27,https://hl7.org/fhir/us/core/STU7/general-requirements.html#extensible-binding-for-coded-elements,"When claiming conformance to ... [to a US Core profile extensible binding rule, a] US Core Responders Shall provide: +A code from … [the] valueset 'DataElement.code.code' if the concept exists in the valueset [for a DataElement.code that has an extensible binding] +Or an alternative code if the concept does not exist in the valueset [for a DataElement.code that has an extensible binding] +Or text in ... `[DataElement.code.text]’ if only text is available [for a DataElement.code that has an extensible binding]",SHALL,Server,true,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,29,https://hl7.org/fhir/us/core/STU7/general-requirements.html#translations,Alternate codes may be provided in addition to the standard codes defined in required or extensible ValueSets. These alternate codes are called “translations”.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,30,https://hl7.org/fhir/us/core/STU7/general-requirements.html#translations,[The translations] may be equivalent to or narrower in meaning than the standard concept code.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,33,https://hl7.org/fhir/us/core/STU7/general-requirements.html#modifier-elements,"Not all modifier elements are Mandatory or Must Support, and there is no requirement for supporting them",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,34,https://hl7.org/fhir/us/core/STU7/general-requirements.html#modifier-elements,"Servers **MAY** communicate a system-wide profile in their CapabilityStatement to identify which additional elements, including modifier elements, they support",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,39,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"If the source system does not have data for an element with a minimum cardinality = 0 (including elements labeled Must Support), the data element **SHALL** be omitted from the resource.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,40,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"If the data element is a Mandatory element (in other words, where the minimum cardinality is > 0), it **SHALL** be present even if the source system does not have data.",SHALL,Server,true,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,41,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"For [mandatory] non-coded data elements [where data is not available], use the [DataAbsentReason Extension](http://hl7.org/fhir/R4/extension-data-absent-reason.html) in the data type ... [with] the code `unknown` - The value is expected to exist but is not known.",SHALL,Server,true,,,2.3.55,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_311_data_absent_reason +hl7.fhir.us.core_7.0.0,42,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements … [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes) If the source system has text but no coded data, only the text element is used.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,43,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes): +For Coding datatypes, the text-only data is represented as a display element",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,44,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes): … If there is neither text nor coded data ... [then] use the appropriate “unknown” concept code from the ValueSet if available.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,45,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *example*, *preferred*, or *extensible* binding strengths (CodeableConcept or Coding datatypes): … If there is neither text nor coded data ... [then] if the ValueSet does not have the appropriate “unknown” concept code, use unknown from the [DataAbsentReason Code System](http://hl7.org/fhir/R4/codesystem-data-absent-reason.html).",SHALL,Server,true,,,2.3.55,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_311_data_absent_reason +hl7.fhir.us.core_7.0.0,46,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,[In situations where data is not available] for [mandatory] coded data elements… [with] *required* binding strength (CodeableConcept or code datatypes): use the appropriate “unknown” concept code from the ValueSet if available,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,47,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[In situations where data is not available] for [mandatory] coded data elements… [with] *required* binding strength (CodeableConcept or code datatypes): If the ValueSet does not have the appropriate “unknown” concept code, you must use a concept from the ValueSet. Otherwise, the instance will not be conformant",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,48,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[If the source system does not have data for a Mandatory element for a coded data element with *required* binding strength] If any of these status codes is missing [meaning it lacks an ""unknown"" or otherwise appropriate concept code from the ValueSet, a] 404 HTTP error code and an OperationOutcome **SHALL** be returned in response to a read transaction on the resource.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,49,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[If the source system does not have data for a Mandatory element for a coded data element with *required* binding strength, and the ValueSet does not have the appropriate ""unknown"" concept code, then] if returning a response to a search, the problematic resource **SHALL** be excluded from the search set",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,50,https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data,"[If the source system does not have data for a Mandatory element for a coded data element with *required* binding strength, and the ValueSet does not have the appropriate ""unknown"" concept code, then] if returning a response to a search, … a *warning* OperationOutcome **SHOULD** be included indicating that other search results were found but could not be compliantly expressed and have been suppressed.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,51,https://hl7.org/fhir/us/core/STU7/general-requirements.html#fhir-restful-search-api-requirements,The [FHIR RESTful Search API](http://hl7.org/fhir/R4/http.html#search) requires that servers that support search **SHALL** support the HTTP `POST`-based search.,SHALL,Server,false,,,"2.3.3.01, 2.3.3.02, 2.3.3.03, 2.3.3.04, 2.3.3.07, 2.3.4.01, 2.3.5.01, 2.3.6.01, 2.3.7.01, 2.3.7.02, 2.3.8.01, 2.3.8.02, 2.3.9.01, 2.3.10.01, 2.3.11.01, 2.3.11.02, 2.3.11.03, 2.3.11.04, 2.3.12.01, 2.3.12.02, 2.3.12.03, 2.3.12.04, 2.3.13.01, 2.3.13.02, 2.3.13.03, 2.3.13.04, 2.3.13.07, 2.3.14.01, 2.3.14.02, 2.3.14.04, 2.3.15.01, 2.3.16.01, 2.3.17.01, 2.3.18.01, 2.3.18.04, 2.3.19.01, 2.3.19.02, 2.3.19.03, 2.3.20.01, 2.3.20.02, 2.3.20.06, 2.3.21.01, 2.3.21.02, 2.3.21.06, 2.3.22.01, 2.3.22.02, 2.3.22.06, 2.3.23.01, 2.3.23.02, 2.3.23.06, 2.3.24.01, 2.3.24.02, 2.3.24.03, 2.3.25.01, 2.3.25.02, 2.3.25.06, 2.3.26.01, 2.3.26.02, 2.3.26.06, 2.3.27.01, 2.3.27.02, 2.3.27.06, 2.3.28.01, 2.3.28.02, 2.3.28.06, 2.3.29.01, 2.3.29.02, 2.3.29.06, 2.3.30.01, 2.3.30.02, 2.3.30.06, 2.3.31.01, 2.3.31.02, 2.3.31.06, 2.3.32.01, 2.3.33.01, 2.3.33.02, 2.3.33.06, 2.3.34.01, 2.3.34.02, 2.3.34.06, 2.3.35.01, 2.3.35.02, 2.3.35.06, 2.3.36.01, 2.3.36.02, 2.3.36.03, 2.3.37.01, 2.3.37.02, 2.3.37.06, 2.3.38.01, 2.3.38.02, 2.3.38.06, 2.3.39.01, 2.3.39.02, 2.3.39.03, 2.3.40.01, 2.3.40.02, 2.3.40.06, 2.3.41.01, 2.3.41.02, 2.3.41.06, 2.3.42.01, 2.3.42.02, 2.3.42.06, 2.3.43.01, 2.3.43.03, 2.3.44.01, 2.3.44.02, 2.3.45.01, 2.3.45.02, 2.3.45.03, 2.3.45.04, 2.3.45.07, 2.3.46.02, 2.3.46.06, 2.3.47.02, 2.3.47.03, 2.3.48.03, 2.3.48.04, 2.3.49.02, 2.3.49.03, 2.3.51.03, 2.3.52.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen__id_search_test" +hl7.fhir.us.core_7.0.0,52,https://hl7.org/fhir/us/core/STU7/general-requirements.html#fhir-restful-search-api-requirements,"For all the supported search interactions in this guide, servers **SHALL** also support the `GET`-based search.",SHALL,Server,false,,,"2.3.3.01, 2.3.3.02, 2.3.3.03, 2.3.3.04, 2.3.3.07, 2.3.4.01, 2.3.5.01, 2.3.6.01, 2.3.7.01, 2.3.7.02, 2.3.8.01, 2.3.8.02, 2.3.9.01, 2.3.10.01, 2.3.11.01, 2.3.11.02, 2.3.11.03, 2.3.11.04, 2.3.12.01, 2.3.12.02, 2.3.12.03, 2.3.12.04, 2.3.13.01, 2.3.13.02, 2.3.13.03, 2.3.13.04, 2.3.13.07, 2.3.14.01, 2.3.14.02, 2.3.14.04, 2.3.15.01, 2.3.16.01, 2.3.17.01, 2.3.18.01, 2.3.18.04, 2.3.19.01, 2.3.19.02, 2.3.19.03, 2.3.20.01, 2.3.20.02, 2.3.20.06, 2.3.21.01, 2.3.21.02, 2.3.21.06, 2.3.22.01, 2.3.22.02, 2.3.22.06, 2.3.23.01, 2.3.23.02, 2.3.23.06, 2.3.24.01, 2.3.24.02, 2.3.24.03, 2.3.25.01, 2.3.25.02, 2.3.25.06, 2.3.26.01, 2.3.26.02, 2.3.26.06, 2.3.27.01, 2.3.27.02, 2.3.27.06, 2.3.28.01, 2.3.28.02, 2.3.28.06, 2.3.29.01, 2.3.29.02, 2.3.29.06, 2.3.30.01, 2.3.30.02, 2.3.30.06, 2.3.31.01, 2.3.31.02, 2.3.31.06, 2.3.32.01, 2.3.33.01, 2.3.33.02, 2.3.33.06, 2.3.34.01, 2.3.34.02, 2.3.34.06, 2.3.35.01, 2.3.35.02, 2.3.35.06, 2.3.36.01, 2.3.36.02, 2.3.36.03, 2.3.37.01, 2.3.37.02, 2.3.37.06, 2.3.38.01, 2.3.38.02, 2.3.38.06, 2.3.39.01, 2.3.39.02, 2.3.39.03, 2.3.40.01, 2.3.40.02, 2.3.40.06, 2.3.41.01, 2.3.41.02, 2.3.41.06, 2.3.42.01, 2.3.42.02, 2.3.42.06, 2.3.43.01, 2.3.43.03, 2.3.44.01, 2.3.44.02, 2.3.45.01, 2.3.45.02, 2.3.45.03, 2.3.45.04, 2.3.45.07, 2.3.46.02, 2.3.46.06, 2.3.47.02, 2.3.47.03, 2.3.48.03, 2.3.48.04, 2.3.49.02, 2.3.49.03, 2.3.51.03, 2.3.52.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen__id_search_test" +hl7.fhir.us.core_7.0.0,55,https://hl7.org/fhir/us/core/STU7/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `token` type searchparameter [(how to search by token)](http://hl7.org/fhir/R4/search.html#token) The server **SHALL** support both [system and code values],SHALL,Server,false,,,"2.3.3.01, 2.3.3.02, 2.3.3.03, 2.3.3.04, 2.3.3.07, 2.3.4.01, 2.3.5.01, 2.3.6.01, 2.3.7.01, 2.3.7.02, 2.3.8.01, 2.3.8.02, 2.3.9.01, 2.3.10.01, 2.3.11.01, 2.3.11.02, 2.3.11.03, 2.3.11.04, 2.3.12.01, 2.3.12.02, 2.3.12.03, 2.3.12.04, 2.3.13.01, 2.3.13.02, 2.3.13.03, 2.3.13.04, 2.3.13.07, 2.3.14.01, 2.3.14.02, 2.3.14.04, 2.3.15.01, 2.3.16.01, 2.3.17.01, 2.3.18.01, 2.3.18.04, 2.3.19.01, 2.3.19.02, 2.3.19.03, 2.3.20.01, 2.3.20.02, 2.3.20.06, 2.3.21.01, 2.3.21.02, 2.3.21.06, 2.3.22.01, 2.3.22.02, 2.3.22.06, 2.3.23.01, 2.3.23.02, 2.3.23.06, 2.3.24.01, 2.3.24.02, 2.3.24.03, 2.3.25.01, 2.3.25.02, 2.3.25.06, 2.3.26.01, 2.3.26.02, 2.3.26.06, 2.3.27.01, 2.3.27.02, 2.3.27.06, 2.3.28.01, 2.3.28.02, 2.3.28.06, 2.3.29.01, 2.3.29.02, 2.3.29.06, 2.3.30.01, 2.3.30.02, 2.3.30.06, 2.3.31.01, 2.3.31.02, 2.3.31.06, 2.3.32.01, 2.3.33.01, 2.3.33.02, 2.3.33.06, 2.3.34.01, 2.3.34.02, 2.3.34.06, 2.3.35.01, 2.3.35.02, 2.3.35.06, 2.3.36.01, 2.3.36.02, 2.3.36.03, 2.3.37.01, 2.3.37.02, 2.3.37.06, 2.3.38.01, 2.3.38.02, 2.3.38.06, 2.3.39.01, 2.3.39.02, 2.3.39.03, 2.3.40.01, 2.3.40.02, 2.3.40.06, 2.3.41.01, 2.3.41.02, 2.3.41.06, 2.3.42.01, 2.3.42.02, 2.3.42.06, 2.3.43.01, 2.3.43.03, 2.3.44.01, 2.3.44.02, 2.3.45.01, 2.3.45.02, 2.3.45.03, 2.3.45.04, 2.3.45.07, 2.3.46.02, 2.3.46.06, 2.3.47.02, 2.3.47.03, 2.3.48.03, 2.3.48.04, 2.3.49.02, 2.3.49.03, 2.3.51.03, 2.3.52.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen__id_search_test" +hl7.fhir.us.core_7.0.0,58,https://hl7.org/fhir/us/core/STU7/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `reference` type searchparameter [(how to search by reference)](http://hl7.org/fhir/R4/search.html#reference) The server **SHALL** support both [id and Type values],SHALL,Server,false,,,"2.3.3.01, 2.3.3.02, 2.3.3.03, 2.3.3.04, 2.3.3.07, 2.3.4.01, 2.3.5.01, 2.3.6.01, 2.3.7.01, 2.3.7.02, 2.3.8.01, 2.3.8.02, 2.3.9.01, 2.3.10.01, 2.3.11.01, 2.3.11.02, 2.3.11.03, 2.3.11.04, 2.3.12.01, 2.3.12.02, 2.3.12.03, 2.3.12.04, 2.3.13.01, 2.3.13.02, 2.3.13.03, 2.3.13.04, 2.3.13.07, 2.3.14.01, 2.3.14.02, 2.3.14.04, 2.3.15.01, 2.3.16.01, 2.3.17.01, 2.3.18.01, 2.3.18.04, 2.3.19.01, 2.3.19.02, 2.3.19.03, 2.3.20.01, 2.3.20.02, 2.3.20.06, 2.3.21.01, 2.3.21.02, 2.3.21.06, 2.3.22.01, 2.3.22.02, 2.3.22.06, 2.3.23.01, 2.3.23.02, 2.3.23.06, 2.3.24.01, 2.3.24.02, 2.3.24.03, 2.3.25.01, 2.3.25.02, 2.3.25.06, 2.3.26.01, 2.3.26.02, 2.3.26.06, 2.3.27.01, 2.3.27.02, 2.3.27.06, 2.3.28.01, 2.3.28.02, 2.3.28.06, 2.3.29.01, 2.3.29.02, 2.3.29.06, 2.3.30.01, 2.3.30.02, 2.3.30.06, 2.3.31.01, 2.3.31.02, 2.3.31.06, 2.3.32.01, 2.3.33.01, 2.3.33.02, 2.3.33.06, 2.3.34.01, 2.3.34.02, 2.3.34.06, 2.3.35.01, 2.3.35.02, 2.3.35.06, 2.3.36.01, 2.3.36.02, 2.3.36.03, 2.3.37.01, 2.3.37.02, 2.3.37.06, 2.3.38.01, 2.3.38.02, 2.3.38.06, 2.3.39.01, 2.3.39.02, 2.3.39.03, 2.3.40.01, 2.3.40.02, 2.3.40.06, 2.3.41.01, 2.3.41.02, 2.3.41.06, 2.3.42.01, 2.3.42.02, 2.3.42.06, 2.3.43.01, 2.3.43.03, 2.3.44.01, 2.3.44.02, 2.3.45.01, 2.3.45.02, 2.3.45.03, 2.3.45.04, 2.3.45.07, 2.3.46.02, 2.3.46.06, 2.3.47.02, 2.3.47.03, 2.3.48.03, 2.3.48.04, 2.3.49.02, 2.3.49.03, 2.3.51.03, 2.3.52.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen__id_search_test" +hl7.fhir.us.core_7.0.0,61,https://hl7.org/fhir/us/core/STU7/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `date` type searchparameter [(how to search by date)](http://hl7.org/fhir/R4/search.html#date) The server **SHALL** support values precise to the day for elements of datatype `date`,SHALL,Server,false,,,"2.3.3.01, 2.3.3.02, 2.3.3.03, 2.3.3.04, 2.3.3.07, 2.3.4.01, 2.3.5.01, 2.3.6.01, 2.3.7.01, 2.3.7.02, 2.3.8.01, 2.3.8.02, 2.3.9.01, 2.3.10.01, 2.3.11.01, 2.3.11.02, 2.3.11.03, 2.3.11.04, 2.3.12.01, 2.3.12.02, 2.3.12.03, 2.3.12.04, 2.3.13.01, 2.3.13.02, 2.3.13.03, 2.3.13.04, 2.3.13.07, 2.3.14.01, 2.3.14.02, 2.3.14.04, 2.3.15.01, 2.3.16.01, 2.3.17.01, 2.3.18.01, 2.3.18.04, 2.3.19.01, 2.3.19.02, 2.3.19.03, 2.3.20.01, 2.3.20.02, 2.3.20.06, 2.3.21.01, 2.3.21.02, 2.3.21.06, 2.3.22.01, 2.3.22.02, 2.3.22.06, 2.3.23.01, 2.3.23.02, 2.3.23.06, 2.3.24.01, 2.3.24.02, 2.3.24.03, 2.3.25.01, 2.3.25.02, 2.3.25.06, 2.3.26.01, 2.3.26.02, 2.3.26.06, 2.3.27.01, 2.3.27.02, 2.3.27.06, 2.3.28.01, 2.3.28.02, 2.3.28.06, 2.3.29.01, 2.3.29.02, 2.3.29.06, 2.3.30.01, 2.3.30.02, 2.3.30.06, 2.3.31.01, 2.3.31.02, 2.3.31.06, 2.3.32.01, 2.3.33.01, 2.3.33.02, 2.3.33.06, 2.3.34.01, 2.3.34.02, 2.3.34.06, 2.3.35.01, 2.3.35.02, 2.3.35.06, 2.3.36.01, 2.3.36.02, 2.3.36.03, 2.3.37.01, 2.3.37.02, 2.3.37.06, 2.3.38.01, 2.3.38.02, 2.3.38.06, 2.3.39.01, 2.3.39.02, 2.3.39.03, 2.3.40.01, 2.3.40.02, 2.3.40.06, 2.3.41.01, 2.3.41.02, 2.3.41.06, 2.3.42.01, 2.3.42.02, 2.3.42.06, 2.3.43.01, 2.3.43.03, 2.3.44.01, 2.3.44.02, 2.3.45.01, 2.3.45.02, 2.3.45.03, 2.3.45.04, 2.3.45.07, 2.3.46.02, 2.3.46.06, 2.3.47.02, 2.3.47.03, 2.3.48.03, 2.3.48.04, 2.3.49.02, 2.3.49.03, 2.3.51.03, 2.3.52.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen__id_search_test" +hl7.fhir.us.core_7.0.0,62,https://hl7.org/fhir/us/core/STU7/general-requirements.html#fhir-restful-search-api-requirements,When searching using the `date` type searchparameter [(how to search by date)](http://hl7.org/fhir/R4/search.html#date) The server **SHALL** support values precise … to the second + time offset for elements of `datatype` dateTime,SHALL,Server,false,,,"2.3.3.01, 2.3.3.02, 2.3.3.03, 2.3.3.04, 2.3.3.07, 2.3.4.01, 2.3.5.01, 2.3.6.01, 2.3.7.01, 2.3.7.02, 2.3.8.01, 2.3.8.02, 2.3.9.01, 2.3.10.01, 2.3.11.01, 2.3.11.02, 2.3.11.03, 2.3.11.04, 2.3.12.01, 2.3.12.02, 2.3.12.03, 2.3.12.04, 2.3.13.01, 2.3.13.02, 2.3.13.03, 2.3.13.04, 2.3.13.07, 2.3.14.01, 2.3.14.02, 2.3.14.04, 2.3.15.01, 2.3.16.01, 2.3.17.01, 2.3.18.01, 2.3.18.04, 2.3.19.01, 2.3.19.02, 2.3.19.03, 2.3.20.01, 2.3.20.02, 2.3.20.06, 2.3.21.01, 2.3.21.02, 2.3.21.06, 2.3.22.01, 2.3.22.02, 2.3.22.06, 2.3.23.01, 2.3.23.02, 2.3.23.06, 2.3.24.01, 2.3.24.02, 2.3.24.03, 2.3.25.01, 2.3.25.02, 2.3.25.06, 2.3.26.01, 2.3.26.02, 2.3.26.06, 2.3.27.01, 2.3.27.02, 2.3.27.06, 2.3.28.01, 2.3.28.02, 2.3.28.06, 2.3.29.01, 2.3.29.02, 2.3.29.06, 2.3.30.01, 2.3.30.02, 2.3.30.06, 2.3.31.01, 2.3.31.02, 2.3.31.06, 2.3.32.01, 2.3.33.01, 2.3.33.02, 2.3.33.06, 2.3.34.01, 2.3.34.02, 2.3.34.06, 2.3.35.01, 2.3.35.02, 2.3.35.06, 2.3.36.01, 2.3.36.02, 2.3.36.03, 2.3.37.01, 2.3.37.02, 2.3.37.06, 2.3.38.01, 2.3.38.02, 2.3.38.06, 2.3.39.01, 2.3.39.02, 2.3.39.03, 2.3.40.01, 2.3.40.02, 2.3.40.06, 2.3.41.01, 2.3.41.02, 2.3.41.06, 2.3.42.01, 2.3.42.02, 2.3.42.06, 2.3.43.01, 2.3.43.03, 2.3.44.01, 2.3.44.02, 2.3.45.01, 2.3.45.02, 2.3.45.03, 2.3.45.04, 2.3.45.07, 2.3.46.02, 2.3.46.06, 2.3.47.02, 2.3.47.03, 2.3.48.03, 2.3.48.04, 2.3.49.02, 2.3.49.03, 2.3.51.03, 2.3.52.03","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_birthdate_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_gender_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_patient_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_type_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_date_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_status_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_patient_date_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_code_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_authored_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_patient_category_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_address_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_identifier_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_name_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_practitioner_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_specialty_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person__id_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen__id_search_test" +hl7.fhir.us.core_7.0.0,63,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,Servers are strongly encouraged to support a query for resources without requiring a status parameter.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,64,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"If business requirements prohibit [querying a resource without a status parameter], they **SHALL** follow the guidelines here.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,65,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, an implementation’s business rules may override the FHIR RESTful search expectations and require a status parameter to be provided",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,66,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows: + +**SHALL** return an HTTP 400 status",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,67,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows: + +**SHALL** return an [OperationOutcome](http://hl7.org/fhir/R4/operationoutcome.html) specifying that status(es) must be present.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,68,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows: + +**SHALL** support search with status if status required",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,69,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided, they] **SHALL** NOT restrict search results ( i.e., apply ‘hidden’ filters) when a client includes status parameters in the query.",SHALL NOT,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,70,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided,] if a system doesn’t support a specific status code value that is queried, it **SHOULD** return an HTTP 200 status with a search bundle.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,71,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided,] if a system doesn’t support a specific status code value that is queried [and returns a search bundle],... [t]he search bundle **SHOULD** contain resources matching the search criteria",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,72,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"[For systems that require a status parameter to be provided,] if a system doesn’t support a specific status code value that is queried [and returns a search bundle],... [t]he search bundle **SHOULD** contain ... an OperationOutcome warning the client which status code value is not supported.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,73,https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status,"For searches where the client does not supply a status parameter, … systems [that require a status parameter to be provided] are allowed to reject such requests as follows:... + +**SHALL** document this behavior in its CapabilityStatement for the “search-type” interaction in `CapabilityStatement.rest.resource.interaction.documentation.`",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,74,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support-elements,"When an element is Mandatory, the data is expected always to be present.",SHALL,Server,false,,,"2.3.3.11, 2.3.4.05, 2.3.5.07, 2.3.6.06, 2.3.7.14, 2.3.8.14, 2.3.9.04, 2.3.10.06, 2.3.11.10, 2.3.12.10, 2.3.13.10, 2.3.14.13, 2.3.15.07, 2.3.16.06, 2.3.17.06, 2.3.18.07, 2.3.18.08, 2.3.19.09, 2.3.20.09, 2.3.21.09, 2.3.22.09, 2.3.23.09, 2.3.24.09, 2.3.25.09, 2.3.26.09, 2.3.27.09, 2.3.28.09, 2.3.29.09, 2.3.30.09, 2.3.31.09, 2.3.32.09, 2.3.33.09, 2.3.34.09, 2.3.35.09, 2.3.36.09, 2.3.37.09, 2.3.38.09, 2.3.39.09, 2.3.40.09, 2.3.41.09, 2.3.42.09, 2.3.43.07, 2.3.44.08, 2.3.45.10, 2.3.46.07, 2.3.47.04, 2.3.48.05, 2.3.49.04, 2.3.50.02, 2.3.51.07, 2.3.52.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_validation_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_validation_test" +hl7.fhir.us.core_7.0.0,75,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support-elements,"For querying and reading US Core Profiles, Must Support on any profile data element **SHALL** be interpreted as follows…: + +US Core Responders **SHALL** be capable of populating all data elements as part of the query results specified by the [US Core Server Capability Statement](https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html).",SHALL,Server,true,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,78,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support-elements,"For querying and reading US Core Profiles, Must Support on any profile data element **SHALL** be interpreted as follows…: + +When information on a particular data element is not present, and the reason for absence is unknown, US Core Responders **SHALL NOT** include the data elements in the resource instance returned as part of the query results.",SHALL NOT,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,80,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support-elements,"For querying and reading US Core Profiles, Must Support on any profile data element **SHALL** be interpreted as follows…: + +In cases where information on a specific data element is missing, and the US Core Responder knows the precise reason for the absence of data (other than suppressed data), US Core Responders **SHOULD** send the reason for the missing information.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,81,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support-elements,"[When sending reason for missing information, follow] the same methdology outlined in the [Missing Data](https://hl7.org/fhir/us/core/STU7/general-requirements.html#missing-data) section but using the appropriate reason code instead of unknown [reason code].",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,84,https://hl7.org/fhir/us/core/STU7/must-support.html#additional-uscdi-requirements,Implementors [US Core Responders] seeking ONC certification [in the ONC IT Health Certification program] **SHALL** interpret Additional USCDI Requirements as Must Support elements as documented above;,SHALL,Server,true,Not Tested,This requirement is specific to certification testing and is not relevant to the IG tests,NA,NA +hl7.fhir.us.core_7.0.0,86,https://hl7.org/fhir/us/core/STU7/must-support.html#additional-uscdi-requirements,Implementors [US Core Responders] [not] seeking ONC certification [in the ONC IT Health Certification program] **SHALL** interpret Additional USCDI Requirements as … optional.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,87,https://hl7.org/fhir/us/core/STU7/must-support.html#defined-pattern-elements,"If an element is marked as Must Support and defined by a pattern [as described by [ElementDefinition.pattern](http://hl7.org/fhir/R4/elementdefinition-definitions.html#ElementDefinition.pattern_x_)], then the pattern defines the elements and element values that the server **SHALL** be capable of providing.",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,90,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---primitive-element,"Primitive elements are single elements with a primitive value. If they are marked as Must Support, then the server **SHALL** be capable of providing the element value to meet the Must Support requirement.",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,91,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---primitive-element,[W]hen claiming conformance [to a profile with a must support primitive element] … US Core responders SHALL be capable of providing the value [of the primitive element],SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,93,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,"For any complex element marked as Must Support, the server **SHALL** be capable of providing at least one of the sub-element values.",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,94,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,"If any sub-element is marked as Must Support [for a complex element], it must also meet the Must Support requirements and satisfy the Must Support requirements for the parent element.",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,95,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,"[I]f any sub-element is marked as Must Support [for a complex element] and the parent element is not, there is no expectation that you must support the parent.",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,96,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,"[I]f any sub-element is marked as Must Support [for a complex element] and the parent element is not… [and] the parent element is represented in the structure, you must support the sub-element (s) marked as Must Support.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,97,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,When claiming conformance [to a must support complex element with no must support sub-elements] … US Core Responders SHALL be capable of providing a value in [the] sub-element,SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,99,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,When claiming conformance [to a must support complex element with one or more must support sub-elements] … US Core Responders SHALL be capable of providing a value in [each must support sub-element],SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,101,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,"Systems [US Core Responders] can support the other elements [of a complex element, not labeled as a Must Support], but this is not a requirement of US Core",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,103,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---complex-elements,"The U.S. Core Data for Interoperability (USCDI) may require additional elements, [which is a requirement for certification in the ONC IT Health Certification program, but not a requirement of US Core conformance for US Core Responders]",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,105,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---resource-references,"In certain profiles, only specific resource references are labeled as Must Support. + +... + +- US Core Responders **SHALL** be capable of providing [such an element] with a valid reference to [all listed Must Support profile(s).]",SHALL,Server,false,,,"2.3.4.07, 2.3.5.09, 2.3.6.08, 2.3.7.16, 2.3.8.16, 2.3.9.06, 2.3.10.08, 2.3.11.12, 2.3.12.12, 2.3.13.12, 2.3.14.15, 2.3.15.09, 2.3.16.08, 2.3.17.08, 2.3.18.10, 2.3.19.11, 2.3.20.11, 2.3.21.11, 2.3.22.11, 2.3.23.11, 2.3.24.11, 2.3.25.11, 2.3.26.11, 2.3.27.11, 2.3.28.11, 2.3.29.11, 2.3.30.11, 2.3.31.11, 2.3.32.11, 2.3.33.11, 2.3.34.11, 2.3.35.11, 2.3.36.11, 2.3.37.11, 2.3.38.11, 2.3.39.11, 2.3.40.11, 2.3.41.11, 2.3.42.11, 2.3.43.09, 2.3.44.10, 2.3.45.12, 2.3.46.09, 2.3.49.06, 2.3.50.04, 2.3.51.09, 2.3.52.06","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_reference_resolution_test" +hl7.fhir.us.core_7.0.0,107,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---resource-references,"Systems [US Core Responders] can support other [resource] references [other than those labeled as Must Support], but this is not a requirement of US Core",MAY,Server,,,,"","" +hl7.fhir.us.core_7.0.0,109,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---resource-references,"In specific profiles, only a single resource reference is present on an element labeled Must Support. + +... + +- US Core Responders **SHALL** be capable of providing [such an element] with a valid reference to [the Must Support Profile.]",SHALL,Server,false,,,"2.3.4.07, 2.3.5.09, 2.3.6.08, 2.3.7.16, 2.3.8.16, 2.3.9.06, 2.3.10.08, 2.3.11.12, 2.3.12.12, 2.3.13.12, 2.3.14.15, 2.3.15.09, 2.3.16.08, 2.3.17.08, 2.3.18.10, 2.3.19.11, 2.3.20.11, 2.3.21.11, 2.3.22.11, 2.3.23.11, 2.3.24.11, 2.3.25.11, 2.3.26.11, 2.3.27.11, 2.3.28.11, 2.3.29.11, 2.3.30.11, 2.3.31.11, 2.3.32.11, 2.3.33.11, 2.3.34.11, 2.3.35.11, 2.3.36.11, 2.3.37.11, 2.3.38.11, 2.3.39.11, 2.3.40.11, 2.3.41.11, 2.3.42.11, 2.3.43.09, 2.3.44.10, 2.3.45.12, 2.3.46.09, 2.3.49.06, 2.3.50.04, 2.3.51.09, 2.3.52.06","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_reference_resolution_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_reference_resolution_test" +hl7.fhir.us.core_7.0.0,111,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---choice-of-data-types,"Some elements allow different data types (e.g., Observation.effective[x]) for their content. Only specific data type choice elements are labeled Must Support in these situations. + +… When claiming conformance to [such a] profile: + +- US Core Responders **SHALL** be capable of populating [the Must Support data type choice]",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,114,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---choice-of-data-types,"Some elements allow different data types (e.g., Observation.effective[x]) for their content. Only specific data type choice elements are labeled Must Support in these situations. + +… + +[US Core Responders] **MAY** support populating ... other [data type] choice elements (such as Observation.effectivePeriod), but this is not a requirement of US Core.",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,115,https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---choice-of-profile-elements,"There are several instances in this Guide where there is a choice of supporting one or another profile element to meet the Must Support requirement. In such cases, the server **SHALL** support at least one element.",SHALL,Server,false,,,"2.3.3.12, 2.3.4.06, 2.3.5.08, 2.3.6.07, 2.3.7.15, 2.3.8.15, 2.3.9.05, 2.3.10.07, 2.3.11.11, 2.3.12.11, 2.3.13.11, 2.3.14.14, 2.3.15.08, 2.3.16.07, 2.3.17.07, 2.3.18.09, 2.3.19.10, 2.3.20.10, 2.3.21.10, 2.3.22.10, 2.3.23.10, 2.3.24.10, 2.3.25.10, 2.3.26.10, 2.3.27.10, 2.3.28.10, 2.3.29.10, 2.3.30.10, 2.3.31.10, 2.3.32.10, 2.3.33.10, 2.3.34.10, 2.3.35.10, 2.3.36.10, 2.3.37.10, 2.3.38.10, 2.3.39.10, 2.3.40.10, 2.3.41.10, 2.3.42.10, 2.3.43.08, 2.3.44.09, 2.3.45.11, 2.3.46.08, 2.3.47.05, 2.3.48.06, 2.3.49.05, 2.3.50.03, 2.3.51.08, 2.3.52.05","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_respiratory_rate-us_core_v700_respiratory_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_simple_observation-us_core_v700_simple_observation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_treatment_intervention_preference-us_core_v700_treatment_intervention_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_experience_preference-us_core_v700_care_experience_preference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_heart_rate-us_core_v700_heart_rate_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_temperature-us_core_v700_body_temperature_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_weight_for_height-us_core_v700_pediatric_weight_for_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pulse_oximetry-us_core_v700_pulse_oximetry_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_smokingstatus-us_core_v700_smokingstatus_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference-us_core_v700_head_circumference_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_height-us_core_v700_body_height_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_bmi-us_core_v700_bmi_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_blood_pressure-us_core_v700_blood_pressure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_pediatric_bmi_for_age-us_core_v700_pediatric_bmi_for_age_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_head_circumference_percentile-us_core_v700_head_circumference_percentile_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_body_weight-us_core_v700_body_weight_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_location-us_core_v700_location_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner-us_core_v700_practitioner_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_practitioner_role-us_core_v700_practitioner_role_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_provenance-us_core_v700_provenance_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_must_support_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_specimen-us_core_v700_specimen_must_support_test" +hl7.fhir.us.core_7.0.0,117,https://hl7.org/fhir/us/core/STU7/scopes.html#capability-sets,"An individual SMART server will publish a granular list of its capabilities, and a set of these capabilities is combined to support a specific use, a Capability Set. See SMART App Launch’s [FHIR OAuth authorization Endpoints and Capabilities](http://hl7.org/fhir/smart-app-launch/STU2/conformance.html#smart-on-fhir-oauth-authorization-endpoints-and-capabilities) for more details. Servers MAY support ... [any] SMART on FHIR Capability Sets and capabilities [(see [FHIR OAuth authorization Endpoints and Capabilities](http://hl7.org/fhir/smart-app-launch/STU2/conformance.html#smart-on-fhir-oauth-authorization-endpoints-and-capabilities))]",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,118,https://hl7.org/fhir/us/core/STU7/scopes.html#capabilities-for-implementations-supporting-user-facing-applications,"At least one of the following SMART on FHIR Capability Sets SHOULD be supported for US Core Servers that support User-Facing Applications ... +[Patient Access Standalone Apps](http://hl7.org/fhir/smart-app-launch/STU2/conformance.html#patient-access-for-standalone-apps) +[Clinician Access for EHR Launch](http://hl7.org/fhir/smart-app-launch/STU2/conformance.html#clinician-access-for-standalone)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,119,https://hl7.org/fhir/us/core/STU7/scopes.html#capabilities-for-implementations-supporting-user-facing-applications,"For certified systems[, those participating in the ONC IT Health Certification program], both SHALL be supported: +[Patient Access Standalone Apps](http://hl7.org/fhir/smart-app-launch/STU2/conformance.html#patient-access-for-standalone-apps) +[Clinician Access for EHR Launch](http://hl7.org/fhir/smart-app-launch/STU2/conformance.html#clinician-access-for-standalone)",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,120,https://hl7.org/fhir/us/core/STU7/scopes.html#capabilities-for-implementations-supporting-backend-services,Implementations [US Core Responders] supporting Backend Services ... SHALL include support for the client-confidential-asymmetric capability.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,121,https://hl7.org/fhir/us/core/STU7/scopes.html#capabilities-for-implementations-supporting-backend-services,Implementations [US Core Responders] supporting Backend Services ... SHALL include support for the ... system/scopes.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,122,https://hl7.org/fhir/us/core/STU7/scopes.html#capabilities-for-implementations-supporting-backend-services,"Implementations [US Core Requestors] supporting Backend Services – for example, to meet US EHR certification requirements [of the ONC IT Health Certification program]- SHALL include support for the client-confidential-asymmetric capability and system/scopes.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,123,https://hl7.org/fhir/us/core/STU7/scopes.html#us-core-servers-shall-support-token-introspection,"US Core Server[s] SHALL support token introspection defined by the SMART App Launch Guide. For more details and additional consideration, see SMART App Launch’s [Token Introspection](http://hl7.org/fhir/smart-app-launch/STU2/token-introspection.html#token-introspection).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,124,https://hl7.org/fhir/us/core/STU7/scopes.html#smart-scopes,Implementations meeting US EHR certification [of the ONC IT Health Certification program] requirements must support all US Core’s required scopes.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,125,https://hl7.org/fhir/us/core/STU7/scopes.html#smart-scopes,Other systems only need to support scopes for the US Core APIs they support [instead of all US Core's required scopes],MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,126,https://hl7.org/fhir/us/core/STU7/scopes.html#smart-scopes,Servers MAY support other scopes in addition to those listed below and in the Quick Start sections.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,128,https://hl7.org/fhir/us/core/STU7/scopes.html#us-core-scopes,"For “User-Facing Applications”, a system’s support for patient-level (patient) or user-level (user) scopes depends on its published list of SMART on FHIR capabilities (see the [capability sets](https://hl7.org/fhir/us/core/STU7/scopes.html#capability-sets) above). For example, if a server lists permission-patient and permission-user in its capabilities, it SHALL support both patient-level and user-level required scopes",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,129,https://hl7.org/fhir/us/core/STU7/scopes.html#us-core-scopes,"For “User-Facing Applications”, a system’s support for patient-level (patient) or user-level (user) scopes depends on its published list of SMART on FHIR capabilities (see the [capability sets](https://hl7.org/fhir/us/core/STU7/scopes.html#capability-sets) above). For example, if a server lists permission-patient and permission-user in its capabilities, it ... SHOULD support both patient-level and user-level recommended best-practice scopes",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,130,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"For “Backend-Services”, System-level scopes (system) describe data that a client system is directly authorized to access. Systems that support system-level (system) scopes SHALL support the required US Core scopes",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,131,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"For “Backend-Services”, System-level scopes (system) describe data that a client system is directly authorized to access. Systems that support system-level (system) scopes SHOULD support the recommended US Core scopes",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,132,"https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#us-core-scopes","The Following Resource Level Scopes SHALL Be Supported +... +[For] AllergyIntolerance [the] /AllergyIntolerance.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,133,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] CarePlan [the] /CarePlan.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,134,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] CareTeam [the] /CareTeam.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,135,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Condition [the] /Condition.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,136,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Coverage [the] /Coverage.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,137,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Device [the] /Device.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,138,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] DiagnosticReport [the] /DiagnosticReport.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,139,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] DocumentReference [the] /DocumentReference.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,140,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Encounter [the] /Encounter.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,141,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Goal [the] /Goal.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,142,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Immunization [the] /Immunization.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,143,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] MedicationDispense [the] /MedicationDispense.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,144,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] MedicationRequest [the] /MedicationRequest.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,145,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Observation [the] /Observation.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,146,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Organization [the] /Organization.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,147,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Patient [the] /Patient.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,148,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Practitioner [the] /Practitioner.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,149,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] PractitionerRole [the] /PractitionerRole.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,150,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Procedure [the] /Procedure.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,151,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Provenance [the] /Provenance.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,152,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] QuestionnaireResponse [the] /QuestionnaireResponse.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,153,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] RelatedPerson [the] /RelatedPerson.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,154,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] ServiceRequest [the] /ServiceRequest.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,155,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-shall-be-supported,"The Following Resource Level Scopes SHALL Be Supported +... +[For] Specimen [the] /Specimen.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,156,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-may-be-supported,"The Following Resource Level Scopes MAY Be Supported +... +[For] Location [the] /Location.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,157,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-resource-level-scopes-may-be-supported,"The Following Resource Level Scopes MAY Be Supported +... +[For] Medication [the] /Medication.rs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,158,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Condition [the] /Condition.rs?category=http://hl7.org/fhir/us/core/CodeSystem/condition-category|health-concern [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,159,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Condition [the] /Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|encounter-diagnosis [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,160,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Condition [the] /Condition.rs?category=http://terminology.hl7.org/CodeSystem/condition-category|problem-list-item [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,161,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Observation [the] /Observation.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-category|sdoh [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,162,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Observation [the] /Observation.rs?category=http://terminology.hl7.org//CodeSystem-observation-category|social-history [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,163,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Observation [the] /Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|laboratory [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,164,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Observation [the] /Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|survey [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,165,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-shall-be-supported,"The Following Granular Level Scopes SHALL Be Supported +... +[For] Observation [the] /Observation.rs?category=http://terminology.hl7.org/CodeSystem/observation-category|vital-signs [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,166,https://hl7.org/fhir/us/core/STU7/scopes.html#the-following-granular-scopes-should-be-supported,"The Following Granular Level Scopes SHOULD Be Supported +... +[For] DocumentReference [the] /DocumentReference.rs?category=http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category|clinical-note [see [SMART Clinical Scope Syntax](https://hl7.org/fhir/smart-app-launch/STU2/scopes-and-launch-context.html#clinical-scope-syntax) for details on clinical data scopes]",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,167,https://hl7.org/fhir/us/core/STU7/scopes.html#servers-shall-support-the-following-metadata-in-their-well-knownsmart-configuration,"In addition to the capabilities defined in the server’s CapabilityStatement, servers SHALL document their SMART capabilities in their [Well-Known Uniform Resource Identifiers (URIs)](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#using-well-known) JSON file.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,168,https://hl7.org/fhir/us/core/STU7/scopes.html#additional-us-core-requirements,"US Core requires ... additional metadata [to be available through the server's [Well-Known Uniform Resource Identifier (URI)](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#using-well-known)]: ... [in] `scopes_supported` [the] array of scopes a client may request. ... The server SHALL support all [required] scopes ... for the US Core Profiles they support""",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,169,https://hl7.org/fhir/us/core/STU7/scopes.html#additional-us-core-requirements,US Core requires ... additional metadata [to be available through the server's [Well-Known Uniform Resource Identifier (URI)](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#using-well-known)]: ... [in] `scopes_supported` [the] array of scopes a client may request. The server [MAY support] additional scopes (so clients should not consider … [the required scopes] an exhaustive list).,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,170,https://hl7.org/fhir/us/core/STU7/scopes.html#additional-us-core-requirements,US Core requires ... additional metadata [to be available through the server's [Well-Known Uniform Resource Identifier (URI)](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#using-well-known)]: ... [in] `scopes_supported` [the] array of scopes a client may request. Servers MAY limit clients’ scopes to those configured at registration time.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,171,https://hl7.org/fhir/us/core/STU7/scopes.html#additional-us-core-requirements,US Core requires ... additional metadata [to be available through the server's [Well-Known Uniform Resource Identifier (URI)](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#using-well-known)]: ... [in] `scopes_supported` [the] array of scopes a client may request. … Servers SHALL allow users to select a subset of the requested scopes at the approval time.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,173,https://hl7.org/fhir/us/core/STU7/scopes.html#additional-us-core-requirements,US Core requires ... additional metadata [to be available through the server's [Well-Known Uniform Resource Identifier (URI)](https://hl7.org/fhir/smart-app-launch/STU2/conformance.html#using-well-known)]: ... [in] `introspection_endpoint` the URL to a server’s introspection endpoint. ... Servers SHALL document this endpoint in the file,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,174,https://hl7.org/fhir/us/core/STU7/general-guidance.html#referencing-us-core-profiles,"Therefore, a [reference](http://hl7.org/fhir/R4/references.html) to a US Core resource SHOULD include a logical id (Reference.reference), not an identifier (Reference.identifier).",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,175,https://hl7.org/fhir/us/core/STU7/general-guidance.html#referencing-us-core-profiles,"For all references, US Core Responders SHOULD return resources that conform to a US Core profile if a US Core profile exists for the resource type.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,176,https://hl7.org/fhir/us/core/STU7/general-guidance.html#contained-resources,"When responding to a query, servers SHOULD not use inline [contained](http://hl7.org/fhir/R4/references.html#contained) resources to represent the returned data.",SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,177,https://hl7.org/fhir/us/core/STU7/general-guidance.html#contained-resources,"[I]f referencing a contained resource in a US Core Profile, the contained resource SHOULD be a US Core Profile if a US Core Profile exists for the resource type.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,178,https://hl7.org/fhir/us/core/STU7/general-guidance.html#contained-resources,[M]asking data [where a specific piece of data is hidden for security and privacy reasons] SHOULD be handled based on implemented policies.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,179,https://hl7.org/fhir/us/core/STU7/general-guidance.html#contained-resources,"[When masking data] elements with a minimum cardinality = 0 (including elements labeled Must Support) [for security and privacy reasons], the element SHOULD be omitted from the resource.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,180,https://hl7.org/fhir/us/core/STU7/general-guidance.html#contained-resources,"[When masking] Mandatory elements (in other words, where the minimum cardinality is > 0) [for security and privacy reasons, use the code “unknown” following the guidance on Missing Data in the Conformance Sections.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,181,https://hl7.org/fhir/us/core/STU7/general-guidance.html#snomed-ct-united-states-edition,"[When using SNOMED codes in US Core Profiles I]mplementers MAY use the default system URI [of [SNOMED CT](http://snomed.info/sct)], which refers to an unspecified edition/version [of SNOMED]",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,182,https://hl7.org/fhir/us/core/STU7/general-guidance.html#snomed-ct-united-states-edition,"[To enable] terminology servers to be able to validate US Edition-only codes [of [SNOMED CT](http://snomed.info/sct)], implementers SHOULD provide the accompanying system URI to describe the edition [see example 2 on [US Core general guidance](https://hl7.org/fhir/us/core/STU7/general-guidance.html#snomed-ct-united-states-edition)]",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,183,https://hl7.org/fhir/us/core/STU7/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [then] systems should also use UCUM for the optional valueRange and valueRatio datatypes (which are complex datatypes with Quantity elements)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,184,https://hl7.org/fhir/us/core/STU7/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [when] UCUM code [is] provided [it SHOULD be indicated in the Quantity.unit and Quantity.code elements with Quantity.system = ""http://unitsofmeasure.org""]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,185,https://hl7.org/fhir/us/core/STU7/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [then] if UCUM units are unavailable, represent units in the unit element",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,186,https://hl7.org/fhir/us/core/STU7/general-guidance.html#using-ucum-codes-in-the-quantity-datatype,"[If a] US Core Profiles binds the Quantity.code element in the Quantity datatype to the [UCUM](http://unitsofmeasure.org/) code system, [when] +no units [are available systems SHOULD NOT supply the unit field]",SHOULD NOT,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,187,"https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-deleted-information, https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-entered-in-error-information",A FHIR Server SHOULD not delete records.,SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,188,https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-deleted-information,A FHIR server SHOULD update the appropriate resource status to entered-in-error or inactive [when requested to delete records],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,189,"https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-deleted-information, https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-entered-in-error-information","If a system supports the deletion of records, they SHOULD refer to the [Deletion Safety Checks](http://hl7.org/fhir/R4/safety.html#conformance) in the FHIR specification.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,190,https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-entered-in-error-information,A FHIR Server SHOULD allow these resources [those entered in error] to be searchable by client applications.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,191,https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-entered-in-error-information,"If the FHIR server has updated the resource status to entered-in-error: +For patient facing applications, A FHIR Server SHOULD remove the resource’s contents, leaving only an id and status. Note that this typically will not conform to the US Core or FHIR StructureDefinitions.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,192,https://hl7.org/fhir/us/core/STU7/general-guidance.html#representing-entered-in-error-information,"If the FHIR server has updated the resource status to entered-in-error: +... +For provider-facing applications, the content may be supplied with content and additional detail (such as the reason for the status change) that the patient viewing system would typically not have access to.",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,193,https://hl7.org/fhir/us/core/STU7/general-guidance.html#language-support,the data provider SHOULD do their best to translate (safely) to the requested language [when accessing records in a native or requested language],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,195,https://hl7.org/fhir/us/core/STU7/general-guidance.html#language-support,[When clients request a resource in a specific language] servers SHOULD make reasonable efforts to translate what can be safely translated.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,196,https://hl7.org/fhir/us/core/STU7/general-guidance.html#language-support,"[When clients request a resource in a specific language] servers SHOULD populate the Resource’s language element with a code based on the underlying language of record, not the requested language.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,197,https://hl7.org/fhir/us/core/STU7/general-guidance.html#language-support,"[When clients request a resource in a specific language] Servers SHOULD … [use] the [Human Language](http://hl7.org/fhir/R4/extension-language.html) Extension when the language of a display, etc, is known to differ from the stated (or inferred) language.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,198,https://hl7.org/fhir/us/core/STU7/general-guidance.html#language-support,[When clients request a resource in a specific language] [servers SHOULD use] the [Translation](http://hl7.org/fhir/R4/extension-translation.html) Extension when the server provides additional translations by its own choice or in response to a different Accept-Language than what the resource is stored in.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,199,https://hl7.org/fhir/us/core/STU7/general-guidance.html#language-support,"[When clients request a resource in a specific language] servers SHOULD make it known what languages are supported in their CapabilityStatement(s) using this extension: +http://hl7.org/fhir/5.0/StructureDefinition/extension-CapablilityStatement.acceptLanguage [[definition](https://hl7.org/fhir/R5/capabilitystatement-definitions.html#CapabilityStatement.acceptLanguage)]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,200,https://hl7.org/fhir/us/core/STU7/general-guidance.html#searching-using-lastupdated,Servers SHOULD support the [_lastUpdated](http://hl7.org/fhir/R4/search.html#lastUpdated) search parameter for US Core Profiles,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,201,https://hl7.org/fhir/us/core/STU7/general-guidance.html#searching-using-lastupdated,Servers ... SHOULD populate [Meta.lastUpdated](http://hl7.org/fhir/R4/resource.html#Meta) for US Core Profiles as accurately as possible.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,202,https://hl7.org/fhir/us/core/STU7/general-guidance.html#searching-using-lastupdated,Servers SHALL document in CapabilityStatement.rest.resource.searchParam.documentation the types of changes that can be detected using the _lastUpdated search parameter,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,203,https://hl7.org/fhir/us/core/STU7/general-guidance.html#compartment-based-search,"US Core servers [MAY support compartment based searchs, but] are not required to support patient [compartment](http://hl7.org/fhir/R4/compartmentdefinition.html) based searches.",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,204,https://hl7.org/fhir/us/core/STU7/general-guidance.html#across-platform-searches,"US Core servers [MAY resolve absolute URLs, but] are not required to resolve absolute URLs external to their environment.",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,205,https://hl7.org/fhir/us/core/STU7/general-guidance.html#limiting-the-number-of-search-results,Servers can [MAY] choose to return the results in a series of pages to manage the number of search results returned.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,206,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Consultation Note (11488-4)](https://loinc.org/11488-4.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,207,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Discharge Summary (18842-5)](https://loinc.org/18842-5.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,208,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[History & Physical Note (34117-2)](https://loinc.org/34117-2.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,209,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Procedures Note (28570-0)](https://loinc.org/28570-0.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,210,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Progress Note (11506-3)](https://loinc.org/11506-3.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,211,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Imaging Narrative (18748-4)](https://loinc.org/18748-4.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,212,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Laboratory Report Narrative (11502-2)](https://loinc.org/11502-2.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,213,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … ""Common Clinical Notes"": +[Pathology Report Narrative (11526-1)](https://loinc.org/11526-1.html)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,214,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … DiagnosticReport categories: +[Cardiology (LP29708-2)](https://loinc.org/LP29708-2)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,215,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … DiagnosticReport categories: +[Pathology (LP7839-6)](https://loinc.org/LP7839-6)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,216,"https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes, https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements","Servers SHALL support, at minimum, these … DiagnosticReport categories: +[Radiology (LP29684-5)](https://loinc.org/LP29684-5)",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,217,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes,"systems are encouraged to support other common notes types, such as: +[Referral Note (57133-1)](https://loinc.org/57133-1.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,218,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes,"systems are encouraged to support other common notes types, such as: +[Surgical Operation Note (11504-8)](https://loinc.org/11504-8.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,219,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#clinical-notes,"systems are encouraged to support other common notes types, such as: +[Nurse Note (34746-8)](https://loinc.org/34746-8.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,220,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#fhir-resources-to-exchange-clinical-notes,"To enable consistent access to scanned DiagnosticReport clinical reports, the FHIR Server SHALL expose these overlapping scanned or narrative-only reports through both DiagnosticReport and DocumentReference by representing the same attachment URL [as] DocumentReference.content.attachment.url [and] +DiagnosticReport.presentedForm.url",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,221,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#fhir-resources-to-exchange-clinical-notes,"when DiagnosticReport.presentedForm.url references a Scan (PDF), that Attachment SHALL also be accessible through DocumentReference.content.attachment.url",SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,222,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,Systems [servers] may extend their capabilities [around types of clinical notes] to the complete US Core DocumentReference Type Value Set.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,223,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,This guide requires [server] systems to implement the [US Core DocumentReference Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html),SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,224,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,This guide requires [server] systems to implement the [US Core DiagnosticReport Profile for Report and Note exchange](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-note.html),SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,225,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,Systems [servers] may support other [DiagnosticReport] categories as well.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,227,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Imaging Narrative,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,228,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Laboratory Report Narrative,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,229,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Pathology Report Narrative,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,230,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,The following SHOULD be exposed via DiagnosticReport: Procedure Note,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,231,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,Servers that support DiagnosticReport will include the clinical note narrative content in DiagnosticReport.presentedForm,SHALL,Server,false,,,2.3.53,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v400_clinical_notes_guidance +hl7.fhir.us.core_7.0.0,233,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,FHIR server claiming support to this guide SHOULD support the $expand operation [[operation link](http://hl7.org/fhir/R4/valueset-operation-expand.html) to provide information to clients requesting information on the note and report types the server supports],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,234,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.category&contextDirection=outgoing for DiagnosticReport report category discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,235,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.category&contextDirection=incoming for DiagnosticReport report category discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,236,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.code&contextDirection=outgoing for DiagnosticReport report type discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,237,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.code&contextDirection=incoming for DiagnosticReport report type discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,238,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.category&contextDirection=outgoing for DocumentReference note category discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,239,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.category&contextDirection=incoming for DocumentReference note category discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,240,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.type&contextDirection=outgoing for DocumentReference note type discovery [for read operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,241,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#support-requirements,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation for discovering note and report types, then servers SHALL support] the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.type&contextDirection=incoming for DocumentReference note type discovery [for write operations]",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,242,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.presentedForm.contentType&contextDirection=outgoing for DiagnosticReport report content type discovery [for read operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,243,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note#DiagnosticReport.presentedForm.contentType&contextDirection=incoming for DiagnosticReport report content type discovery [for write operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,244,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.content.attachment.contentType&contextDirection=outgoing for DocumentReference note content type discovery [for read operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,245,https://hl7.org/fhir/us/core/STU7/clinical-notes.html#discovering-server-read-and-write-formats,"[If servers support the [$expand] (http://hl7.org/fhir/R4/valueset-operation-expand.html) operation then] the note and report types for a particular server [SHOULD be] discovered by invoking the #expand operation as follows: +GET [base]/ValueSet/$expand?context=http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference#DocumentReference.content.attachment.contentType&contextDirection=incoming for DocumentReference note content type discovery [for write operations]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,246,https://hl7.org/fhir/us/core/STU7/medication-list.html#background-on-the-fhir-medications-resources,"[The [MedicationAdministration](http://hl7.org/fhir/R4/medicationadministration.html) and [MedicationStatement](http://hl7.org/fhir/R4/medicationstatement.html)] medication resources are not profiled by US Core, and systems that support US Core are permitted to use them",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,247,https://hl7.org/fhir/us/core/STU7/medication-list.html#options-for-representing-medication,"When using a code [to represent a medication][, the code SHALL follow the [extensible](http://hl7.org/fhir/R4/terminologies.html#extensible) binding rules to [Medication Clinical Drug (RxNorm)](https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1010.4/expansion) - i.e., unless RxNorm does not cover the concept, the RxNorm code SHALL be used.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,248,https://hl7.org/fhir/us/core/STU7/medication-list.html#options-for-representing-medication,USCDI recommends the [National Drug Codes (NDC)](https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory) as an optional medication terminology. They can be supplied as an additional coding element [when representing a medication],MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,249,https://hl7.org/fhir/us/core/STU7/medication-list.html#options-for-representing-medication,"When referencing the Medication resource, the resource may be included in the returned bundle, as an external resource, or as a [contained](http://hl7.org/fhir/R4/references.html#contained) resource if it can’t stand alone. … The server application MAY choose any combination of these methods",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,250,https://hl7.org/fhir/us/core/STU7/medication-list.html#options-for-representing-medication,"if an external reference to Medication is used, the server SHALL support the [_include](http://hl7.org/fhir/R4/search.html#include) parameter for searching this element",SHALL,Server,true,,,"2.3.17.01, 2.3.18.01, 2.3.18.04","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_patient_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_patient_intent_status_search_test" +hl7.fhir.us.core_7.0.0,252,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +Shall be all that is required +-See the General Guidance section for additional rules and expectations for [Servers Requiring Status](https://hl7.org/fhir/us/core/STU7/general-requirements.html#search-for-servers-requiring-status).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,253,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +SHALL include all MedicationRequest resources with an intent = “order” representing authorized medication orders directly derived from the system’s orders.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,254,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +SHALL include all prescribed and “self-prescribed” MedicationRequest resources with an intent = “plan” representing reported medications",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,256,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[when communicating reported medications] ... prescribed and “self-prescribed” MedicationRequest resources with an intent = “plan” ... [servers] +SHALL use the reported[x] element to indicate that the MedicationRequest record was captured as a secondary “reported” record rather than an original primary source-of-truth record.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,257,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[when communicating reported medications] ... prescribed and “self-prescribed” MedicationRequest resources with an intent = “plan” [servers] ... may also indicate the source of the report.",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,258,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[when communicating reported medications] ... “self-prescribed” MedicationRequest resources with an intent = “plan” [servers] ... + SHOULD use the requester element to indicate the Patient or RelatedPerson as the prescriber.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,259,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +The encounter element SHOULD be supported [by the server].",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,260,https://hl7.org/fhir/us/core/STU7/medication-list.html#fetching-all-medications-active-medications-and-all-medications-for-an-encounter,"Requirements to access “all medications” [all historical, active, and future prescribed medications and medications entered in error and whose status is unknown.] and “all active medications” [all medications with an active status. Active medications do not include past, future, unknown status, and entered-in-error medications.] for a patient: +A MedicationRequest resource query: +[Servers supporting the encounter element when] Searching by [encounter] context (i.e., for a given inpatient encounter) will return all medications ordered during that encounter, including medications administered in hospital and prescribed or discharge medications intended to be taken at home.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,263,https://hl7.org/fhir/us/core/STU7/medication-list.html#de-duplication-of-data,"To provide a list of a patient’s medications, it may be necessary to “de-duplicate” them. The de-duplication activity MAY be supplied by the server",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,266,https://hl7.org/fhir/us/core/STU7/basic-provenance.html#hie-transformation,The HIE must maintain the original data source.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,267,https://hl7.org/fhir/us/core/STU7/basic-provenance.html#hie-transformation,"An agent.type=”assembler”, agent.type=”transmitter”, or other agents from [Provenance Agent Type](https://hl7.org/fhir/us/core/STU7/ValueSet-us-core-provenance-participant-type.html) value set MAY also be included.",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,268,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#introduction,"implementers [of US Core's framework of Screening and Assessments] SHOULD consider more constrained, domain-specific profiles derived from the US Core Profiles to meet the needs of their respective use cases.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,269,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#clinical-judgments,"Every server that supports the USDCI Data Class “Health Status/Assessments”: + +SHALL support representing clinical judgments using [US Core Condition Problems and Health Concerns Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html) or [US Core Simple Observation Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-simple-observation.html).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,270,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#clinical-judgments,"Every server that supports the USDCI Data Class “Health Status/Assessments”: +... +When a Simple Observation or Problem or Health Concern is recorded based on a structured screening and assessment ..., the US Core Simple Observation Profile [[Profile link](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-simple-observation.html)] SHOULD reference it using the derivedFrom element",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,271,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#clinical-judgments,"Every server that supports the USDCI Data Class “Health Status/Assessments”: +... +When a Simple Observation or Problem or Health Concern is recorded based on a structured screening and assessment ..., the US Core Condition Problems and Health Concerns Profile [[Profile link](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html) should reference it] using the evidence.detail element",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,272,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#choosing-between-questionnaireresponse-and-observation,"For API developers using US Core, it’s important to understand when to use the QuestionnaireResponse versus Observation to represent structured assessments and surveys. Here are some guidelines to help choose the appropriate profile: +Observations represent specific point-in-time facts that need to be searched, trended, the subject of statistical analysis, and directly referenced in support of other actions ... anything that meets one of the preceding criteria must be surfaced as an Observation.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,273,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#choosing-between-questionnaireresponse-and-observation,"For API developers using US Core, it’s important to understand when to use the QuestionnaireResponse versus Observation to represent structured assessments and surveys. Here are some guidelines to help choose the appropriate profile: +Observations represent specific point-in-time facts that need to be searched, trended, the subject of statistical analysis, and directly referenced in support of other actions ... anything that meets one of the preceding criteria must be surfaced as an Observation.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,274,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#choosing-between-questionnaireresponse-and-observation,"For FHIR implementers, it is important to note that QuestionnaireResponse [which represent the source-of-truth of a completed form, shall] references a specific version of a form, whether it was represented as a FHIR Questionnaire or not. This reference provides the context of exactly what options were available, what logic was used to calculate answers, and what questions were asked.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,276,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: + +US Core Simple Observation Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,277,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: + +US Core Observation Screening Assessment Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,278,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: +US Core Condition Problems and Health Concerns Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,279,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#category-codes,"The USCDI Health Assessments Data Elements category codes ... SHOULD be used when generating resources that conform to these profiles: + +US Core ServiceRequest Profile",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,280,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#uscdi-health-assessments-data-element-value-sets,Implementers SHOULD treat these [USCDI Health Status Assessments Data Element] value sets as having an [extensible](http://hl7.org/fhir/R4/terminologies.html#extensible) binding.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,281,https://hl7.org/fhir/us/core/STU7/screening-and-assessments.html#uscdi-health-assessments-data-element-value-sets,"when recording SDOH data [with] US Core Profiles, servers SHOULD use … [Social Determinants of Health Conditions Value Set](https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1196.788/expansion), [Social Determinants of Health Procedures Value Set](https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1196.789/expansion), [Social Determinants of Health Goals Value Set](https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1247.71/expansion), [and] [Social Determinants of Health Service Requests Value Set](https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1196.790/expansion)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,282,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#endpoint-discoverability,A server may support Version DSTU2 and Argonaut Data Query,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,283,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#endpoint-discoverability,A server may support … FHIR R4 and US Core ver 3.1.1+,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,284,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#endpoint-discoverability,A server may support [both] [(]Version DSTU2 and Argonaut Data Query[) and (] FHIR R4 and US Core ver 3.1.1+[)],MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,285,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#endpoint-discoverability,"A server may make explicit which version of Argo/US Core is on their FHIR endpoint (e.g., “DSTU2” or “R4” path component or separate files based on version).",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,287,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#no-guarantee-that-resource-ids-are-preserved,Servers SHOULD maintain a stable common identifier for a resource across [FHIR] versions.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,288,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r4,"In an upgraded R4 endpoint, any data in FHIR DSTU2 SHOULD be in FHIR R4.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,289,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r5,The FHIR RESTful resource types supported in a DSTU2 implementation SHOULD be supported in a R4 implementation,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,290,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r7,"The FHIR RESTful resource types supported in a DSTU2 implementation SHOULD be supported in a R4 implementation [with the] exception [of] +MedicationStatement may be deprecated, and the data SHOULD be mapped to MedicationRequest.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,291,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r8,"The FHIR RESTful resource types supported in a DSTU2 implementation SHOULD be supported in a R4 implementation [with the] exception [of] +Care teams as represented by CarePlan in DSTU2 SHOULD be replaced by and the data mapped to CareTeam in R4",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,295,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r9,Servers SHOULD make available the same information in DSTU2 and R4 where the more recent standard allows.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,296,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r10,"Servers SHOULD make available the same information in DSTU2 and R4 where the more recent standard allows … [with the] exception [of] +MedicationStatement data [should be] mapped to MedicationRequest",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,297,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r11,"Servers SHOULD make available the same information in DSTU2 and R4 where the more recent standard allows … [with the] exception [of] +care teams, as represented by CarePlan, SHOULD be mapped to CareTeam in R4",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,298,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#expectation-that-fhir-dstu2-data-is-preserved-in-fhir-r12,"Data SHOULD be maintained between [FHIR] versions (i.e., not be degraded).",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,300,https://hl7.org/fhir/us/core/STU7/changes-between-versions.html#authorization-across-versions,Separate authorization is required [between different versions of FHIR],SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,302,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[The clinical status of the allergy] SHALL be present if verification status is not “entered-in-error”,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,303,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[The clinical status of the allergy] SHALL NOT be present if verification Status is “entered-in-error”,SHALL NOT,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,305,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,"Profile Specific Implementation Guidance: + +No Known Allergies may be represented using the US Core-AllergyIntolerance profile",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,306,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[When used No Known Allergies is documented the system Shall use an] appropriate negation code in AllergyIntolerence.code,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,307,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,[When used No Known Allergies is documented the system Shall use an] verification status in AllergyIntolerance.verificationStatus,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,308,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,"If a patient has not been asked about their allergies, this would be represented as: +AllergyIntolerance.code = “1631000175102” (Patient not asked (contextual qualifier) (qualifier value)) +AllergyIntolerance.verificationStatus = “unconfirmed” or empty (in other words, then element omitted)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,309,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,"If a patient has been asked, but has indicated they have no known allergies, this would be represented as: +AllergyIntolerance.code = “716186003” (No known allergy (situation)) +AllergyIntolerance.verificationStatus = “confirmed”",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,310,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-careplan.html#mandatory-and-must-support-data-elements,Considerations for systems aligning with [HL7 Consolidated (C-CDA)](http://www.hl7.org/implement/standards/product_brief.cfm?product_id=492) Care Plan requirements: US Core Goal SHOULD be present in CarePlan.goal,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,311,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-careplan.html#mandatory-and-must-support-data-elements,Considerations for systems aligning with [HL7 Consolidated (C-CDA)] (http://www.hl7.org/implement/standards/product_brief.cfm?product_id=492) Care Plan requirements: ... US Core Condition SHOULD be present in CarePlan.addresses,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,312,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-careplan.html#mandatory-and-must-support-data-elements,Considerations for systems aligning with [HL7 Consolidated (C-CDA)] (http://www.hl7.org/implement/standards/product_brief.cfm?product_id=492) Care Plan requirements: Assessment and Plan MAY be included as narrative in CarePlan.text,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,313,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,"Although both US Core Practitioner Profile and US Core PractitionerRole are Must Support, ... server system[s conforming to the US Core CareTeam profile are] ... not required to support references to both, but SHALL support at least one of them",SHALL,Server,true,,,2.3.6.08,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_reference_resolution_test +hl7.fhir.us.core_7.0.0,317,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,"[When conforming to the US Core CareTeam profile] Because the US Core PractitionerRole Profile supplies the provider’s location and contact information and a reference to the Practitioner, server systems [conforming to the US Core CareTeam profile] SHOULD reference it instead of the US Core Practitioner Profile [when conforming to the US Core CareTeam profile] .",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,318,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,Servers [conforming to the US Core CareTeam profile] that support only US Core Practitioner Profile and do not support the US Core PractitionerRole Profile SHALL provide implementation-specific guidance on how to access a provider’s location ... information using only the Practitioner resource.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,319,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-careteam.html#mandatory-and-must-support-data-elements,Servers [conforming to the US Core CareTeam profile] that support only US Core Practitioner Profile and do not support the US Core PractitionerRole Profile SHALL provide implementation-specific guidance on how to access a provider’s ... contact information using only the Practitioner resource.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,320,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements,"For Problems and Health Concerns [records, systems SHOULD] use the [US Core Condition Problems and Health Concerns Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html).",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,321,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",[Newly created Encounter Diagnosis records SHALL have a] Condition.code … [from the] [“current”](https://hl7.org/fhir/R5/terminologies.html#binding) … [value set] binding.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,322,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",[Historical Encounter Diagnosis records MAY have a] Condition.code … [from the] base “preferred” … [value set] binding.,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,323,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",USCDI’s applicable vocabulary standards for Encounter Diagnosis are SNOMED CT and ICD-10-CM. The US Core Condition Codes only supports ICD-9-CM for historical purposes. ICD-10-CM is available and SHOULD be used as the primary code for current encounter diagnoses.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,324,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements,[A US Core Condition Encounter Diagnosis] encounter SHOULD always be referenced in Condition.encounter.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,325,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",A [US Core Condition Encounter Diagnosis] server SHALL support Condition.recordedDate,SHALL,Server,false,,,2.3.7.15,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test +hl7.fhir.us.core_7.0.0,326,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements",A server SHALL support at least one of [assertedDate Extension](http://hl7.org/fhir/R4/extension-condition-asserteddate.html) and Condition.onsetDateTime.,SHALL,Server,true,,,2.3.7.15,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_must_support_test +hl7.fhir.us.core_7.0.0,330,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements,"For Encounter Diagnosis [records, systems SHOULD] use the [US Core Condition Encounter Diagnosis Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-encounter-diagnosis.html).",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,331,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements,"If Condition.category contains a Problem List item category (problem-list-item), Condition.clinicalStatus SHOULD be present.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,332,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements,Updates to Meta.lastUpdated SHOULD reflect: New problems and health concerns [This will change to a SHALL requirement in US Core v8.0.0],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,333,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-condition-problems-health-concerns.html#mandatory-and-must-support-data-elements,"Updates to Meta.lastUpdated SHOULD reflect: +Changes in the clinical status or verifications status of problems or health concerns [This will change to a SHALL requirement in US Core v8.0.0]",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,334,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,A coverage.type of “81” (Self-pay) MAY be used to imply that the patient has no coverage or that an individual or organization other than an insurer is taking responsibility for payment for a portion of the health care costs.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,335,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,Implementers should refer to the [PHDSC Payer Type Committee User’s Guide](https://www.nahdo.org/sites/default/files/2020-12/SourceofPaymentTypologyUsersGuideVersion9.2December2020.pdf) for the Source of Payment Typology when selecting codes.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,336,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,"To differentiate Medicare Parts A, B, C, and D systems can use the following codes [when sending Coverage.type]: [For] Part A and B [use] 121 (Medicare Fee For Service)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,337,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,"To differentiate Medicare Parts A, B, C, and D systems can use the following codes: [For] Part C (Medicare Advantage Plan) [use] 111 (Medicare HMO), 112 (Medicare PPO), 113 (Medicare POS)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,338,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,"To differentiate Medicare Parts A, B, C, and D systems can use the following codes: [For] Part D [use] 122 (Medicare Drug Benefit)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,339,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-coverage.html#mandatory-and-must-support-data-elements,"If Insurers issue unique member IDs for dependents, then the memberId Coverage.identifier should be used [with the unique dependent ID] instead of Coverage.dependent to uniquely refer to the dependent with respect to their insurance.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,340,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"For non-implantable devices (for example, software or crutches), use the base FHIR Device resource or other use case-specific Device profiles.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,341,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers are encouraged to use the FDA Global UDI Database (GUDID) and associated APIs to parse and validate the [unique device ID] UDI,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,342,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implantable medical devices with UDI information SHALL represent the UDI code in Device.udiCarrier.carrierHRF,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,343,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,UDI-PI elements present [in Device.udiCarrier.carrierHRF] SHALL be represented in the corresponding US Core Implantable Device Profile elements,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,344,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"If UDI is not present and the manufacturer … is available, … [it] SHOULD be included to support historical reports of implantable medical devices [where] manufacturer [is sent in] Device.manufacturer",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,345,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"If UDI is not present and the ... model number information is available, … [it] SHOULD be included to support historical reports of implantable medical devices [where] model [is sent in] Device.model",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,346,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Servers SHOULD support query by Device.type to allow clients to request the patient’s devices by a specific type.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,347,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including: UDI HRF string (udi-carrier)",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,348,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including:UDI Device Identifier (udi-di)",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,349,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including: Manufacturer (manufacturer)",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,350,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,"Records of implanted devices MAY be queried against UDI data, including: Model number (model)",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,351,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by lot numbers,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,352,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by serial number,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,353,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by expiration date,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,354,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by manufacture date,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,355,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html#mandatory-and-must-support-data-elements,Implementers MAY also adopt custom SearchParameters for searching by distinct identifier,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,356,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements","The diagnostically relevant time (known as the “effective time” and typically the time of specimen collection) … SHALL be present if status [of the diagnostic report] is ‘partial’, ‘preliminary’, ‘final’, ‘amended’, ‘corrected’, or ‘appended’.",SHALL,Server,true,,,2.3.12.10,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test +hl7.fhir.us.core_7.0.0,357,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-lab.html#mandatory-and-must-support-data-elements,"When the report was released … SHALL be present if status [of the diagnostic report] is ‘partial’, ‘preliminary’, ‘final’, ‘amended’, ‘corrected’, or ‘appended’.",SHALL,Server,true,,,2.3.12.10,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_validation_test +hl7.fhir.us.core_7.0.0,358,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-lab.html#mandatory-and-must-support-data-elements,Updates to Meta.lastUpdated SHOULD reflect New laboratory reports. [Note: US Core authors will] upgrade the Meta.lastUpdated guidance [from] (SHOULD) to ... (SHALL) in the next version of US Core,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,359,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-lab.html#mandatory-and-must-support-data-elements,"Updates to Meta.lastUpdated SHOULD reflect changes in the status of laboratory reports, including events that trigger the same status (e.g., amended → amended). [Note: US Core authors will] upgrade the Meta.lastUpdated guidance [from] (SHOULD) to ... (SHALL) in the next version of US Core",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,360,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,"The DiagnosticReport.category binding Must Support, at a minimum, the US Core DiagnosticReport Category Codes of Cardiology, Radiology, and Pathology",SHALL,Server,false,,,2.3.11.11,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_must_support_test +hl7.fhir.us.core_7.0.0,361,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,Other [diagnostic report] categories may be supported [when using US Core DiagnosticReport Profile for Report and Note Exchange],MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,362,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,[L]inkages between specific LOINC codes and the LP-type codes may be used as guidance [for a server's categorization of diagnostic reports],MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,364,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-diagnosticreport-note.html#mandatory-and-must-support-data-elements,"For Diagnostic Imaging Reports systems SHOULD support using the subset of LOINC codes defined in CONF-DIR-19 in HL7 Implementation Guide for CDA Release 2: Imaging Integration, Levels 1, 2, and 3, Basic Imaging Reports in CDA and DICOM Diagnostic Imaging Reports (DIR) - Universal Realm, Release 1.0.",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,365,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"The DocumentReference.type binding Must Support, at a minimum, the 5 [Common Clinical Notes](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements)",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,366,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,The DocumentReference.type binding may extend to the whole [US Core DocumentReference Type Value Set](https://hl7.org/fhir/us/core/STU7/ValueSet-us-core-documentreference-type.html),MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,367,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,[DocumentReference.type may also use] other category schemes such as the LOINC-based [Document Class Value Set](http://hl7.org/fhir/R4/valueset-document-classcodes.html) and [IHE XDSclassCode](https://wiki.ihe.net/index.php/XDS_classCode_Metadata_Coding_System),MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,368,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"Although both [DocumentReference.attachment.url and DocumentReference.attachment.data] are marked as Must Support, the server system is not required to support an address and inline base64 encoded data, but SHALL support at least one of these elements.",SHALL,Server,true,,,2.3.13.11,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_must_support_test +hl7.fhir.us.core_7.0.0,371,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"If the [content.url] endpoint is outside the FHIR base URL, it SHOULD NOT require additional authorization to access.",SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,372,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,"If there are multiple DocumentReference.content element repetitions, these SHALL all represent the same document in different formats or attachment metadata",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,373,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,The [documentReference.content] element SHALL NOT contain different versions of the same content.,SHALL NOT,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,374,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-documentreference.html#mandatory-and-must-support-data-elements,The organization responsible for the DocumentReference SHALL be present either in DocumentReference.custodian or accessible in the Provenance resource targeting the DocumentReference using Provenance.agent.who or Provenance.agent.onBehalfOf,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,375,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,"Although ... marked as Must Support, servers are not required to support both [an Encounter.reasonCode or a reference with Encounter.reasonReference], but they SHALL support at least one of these elements.",SHALL,Server,true,,,2.3.14.14,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test +hl7.fhir.us.core_7.0.0,378,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,"If Encounter.reasonReference references an Observation, it SHOULD conform to a US Core Observation [profile applicable to the observation being made]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,379,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,"Although … marked as Must Support, servers are not required to support both Encounter.location.location and Encounter.serviceProvider, but they SHALL support at least one of these elements.",SHALL,Server,true,,,2.3.14.14,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_must_support_test +hl7.fhir.us.core_7.0.0,382,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-location.html#mandatory-and-must-support-data-elements","If the event facility/location differs from the Encounter.location, systems SHOULD reference it directly",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,383,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-location.html#mandatory-and-must-support-data-elements","If the event facility/location differs from the Encounter.location, … systems SHALL use the location element for all resources where the element is available.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,384,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-location.html#mandatory-and-must-support-data-elements",If the event facility/location differs from the Encounter.location … systems MAY use the standard [Event Location Extension](http://hl7.org/fhir/StructureDefinition/event-location) for US Core DiagnosticReport Profile for Laboratory Results Reporting and US Core Observation Clinical Result Profile.,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,385,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,Updates to Meta.lastUpdated SHOULD reflect New encounters/visits [Meta.lastUpdated guidance will change from a (SHOULD) to requirements (SHALL) in the next version of US Core],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,386,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-encounter.html#mandatory-and-must-support-data-elements,"Updates to Meta.lastUpdated SHOULD reflect changes in the status of encounters, including events that trigger the same status (e.g., in-progress → in-progress). [Meta.lastUpdated guidance will change from a (SHOULD) to requirements (SHALL) in the next version of US Core]",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,387,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-goal.html#mandatory-and-must-support-data-elements,"Although both Goal.startDate and Goal.target.dueDate are marked as Must Support, the server system is not required to support both, but SHALL support at least one of these elements.",SHALL,Server,true,,,2.3.15.08,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_must_support_test +hl7.fhir.us.core_7.0.0,390,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,[Servers shall] use the status code: not-done to represent that an immunization was not given.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,391,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,[For organization participating in the ONC Health IT Certification program] [CVX vaccine codes](https://www2a.cdc.gov/vaccines/iis/iisstandards/ndc_crosswalk.asp) are required,SHALL,Server,true,,,2.3.16.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_validation_test +hl7.fhir.us.core_7.0.0,392,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,[NDC vaccine codes](http://www2a.cdc.gov/vaccines/iis/iisstandards/ndc_crosswalk.asp) SHOULD be supported as a translation [of [CVX Vaccine Codes](https://www2a.cdc.gov/vaccines/iis/iisstandards/ndc_crosswalk.asp)],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,393,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,The preferred code system identifier … is [http://hl7.org/fhir/sid/cvx](http://hl7.org/fhir/sid/cvx) for CVX [vaccine codes],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,394,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-immunization.html#mandatory-and-must-support-data-elements,The preferred code system identifier … is [http://hl7.org/fhir/sid/ndc](http://hl7.org/fhir/sid/ndc) for NDC vaccine codes],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,395,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-location.html#mandatory-and-must-support-data-elements,Systems SHOULD follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) as the standard style guide for Location.address.line,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,396,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-location.html#mandatory-and-must-support-data-elements,Systems SHOULD follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) as the standard style guide for Location.address.city,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,397,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When using a code [to represent a medication for a medication dispense], RXNorm concepts are used.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,398,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When using a code [to represent a medication for a medication dispense], [National Drug Codes (NDC)](https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory) can be supplied as an additional coding element.",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,399,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When referencing a Medication resource in .medicationReference, the resource may be [contained](http://hl7.org/fhir/R4/references.html#contained)",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,400,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","When referencing a Medication resource in .medicationReference, the resource may be an external resource",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,401,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","The server systems are not required to support both a [medication] code and a reference [when sending medicationDispense], but SHALL support at least one of these methods",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,402,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationdispense.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements","If an external reference to a Medication resource is used, the server SHALL support the [_include](http://hl7.org/fhir/R4/search.html#include) parameter for searching this element.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,405,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"[For organization participating in the ONC Health IT Certification program servers SHALL support the [additional USCDI requirement](https://hl7.org/fhir/us/core/STU7/must-support.html#additional-uscdi-requirements):], The reason or indication for the prescription",SHALL,Server,true,,,2.3.18.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test +hl7.fhir.us.core_7.0.0,406,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,[For organization participating in the ONC Health IT Certification program servers SHALL support the [additional USCDI requirement](https://hl7.org/fhir/us/core/STU7/must-support.html#additional-uscdi-requirements):] reported adherence to prescribed medication instructions,SHALL,Server,true,,,2.3.18.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test +hl7.fhir.us.core_7.0.0,407,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"When recording “self-prescribed” medication, requester SHOULD be used to indicate the Patient or RelatedPerson as the prescriber",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,408,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"Although [medicationRequest.reportedBoolean and MedicationRequest.reportedReference] are both marked as Must Support, the server system is not required to support both, but SHALL support at least one of these elements",SHALL,Server,true,,,2.3.18.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test +hl7.fhir.us.core_7.0.0,411,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"Although both MedicationRequest.reasonCode and MedicationRequest.reasonReference are marked as Additional USCDI Requirements [which are required for organizations participating in the ONC Health IT Certification program]. The certifying server system is not required to support both, but SHALL support at least one of these elements",SHALL,Server,true,,,2.3.18.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_must_support_test +hl7.fhir.us.core_7.0.0,414,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program and supporting MedicationRequest.reasonReference,] servers SHALL support at least one target resource in MedicationRequest.reasonReference",SHALL,Server,true,,,2.3.18.07,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_validation_test +hl7.fhir.us.core_7.0.0,416,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program,] the referenced resources SHOULD be a US Core Profile as documented in [Referencing US Core Profiles](https://hl7.org/fhir/us/core/STU7/general-guidance.html#referencing-us-core-profiles).",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,417,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,Source EHR identifiers SHOULD be included to support deduplication across MedicationRequest resources.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,418,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-medicationrequest.html#mandatory-and-must-support-data-elements,Servers SHALL follow the guidance on the Medication List page and return all active medications as MedicationRequest.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,419,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-average-blood-pressure.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-treatment-intervention-preference.html#mandatory-and-must-support-data-elements",The observations MAY have additional codes that translate or map to the Observation code or category codes [such as] … local system-specific codes [and] …more specific codes,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,420,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-average-blood-pressure.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-treatment-intervention-preference.html#mandatory-and-must-support-data-elements",[For an Observation a] code system value SHOULD be supplied for each additional code,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,421,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-average-blood-pressure.html#mandatory-and-must-support-data-elements,"Because the blood pressure values are communicated in the mandatory systolic and diastolic components [when using the US Core Average Blood Pressure Profile,] the Observation.value[x] element SHALL be omitted",SHALL,Server,true,,,2.3.37.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_average_blood_pressure-us_core_v700_average_blood_pressure_validation_test +hl7.fhir.us.core_7.0.0,422,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-care-experience-preference.html#mandatory-and-must-support-data-elements,The context or precondition of a patient’s [care experience] preference SHOULD be supplied in the Observation.valueString or in an extension,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,423,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements,Servers SHOULD use the base FHIR [Observation Category Codes] (http://hl7.org/fhir/R4/valueset-observation-category.html) [in Observation.category],SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,424,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements",Systems SHOULD support Observation.effectivePeriod to accurately represent measurements over time,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,425,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements","An Observation.component without a value, SHALL include a reason why the data is absent",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,426,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements",Systems that never provide a component observation without a component value … [MAY choose not] to support Observation.component.dataAbsentReason,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,427,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements","An Observation without a value, SHALL include a reason why the data is absent",SHALL,Server,true,,,2.3.39.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_clinical_result-us_core_v700_observation_clinical_result_validation_test +hl7.fhir.us.core_7.0.0,428,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements",[For] an Observation without a value … [Systems MAY choose not to] include a reason why the data is absent … [if] there are component observations or … reporting panel observations using Observation.hasMember,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,429,"https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-clinical-result.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements",Systems that never provide an observation without a value ... [MAY choose not] to support Observation.dataAbsentReason,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,430,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements,[When sending US Core Laboratory Results Observation Profile] updates to Meta.lastUpdated SHOULD reflect new laboratory observations,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,431,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-lab.html#mandatory-and-must-support-data-elements,"[When sending US Core Laboratory Results Observation Profile] updates to Meta.lastUpdated SHOULD reflect changes in the status of laboratory observations, including events that trigger the same status (e.g., amended → amended)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,432,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-occupation.html#mandatory-and-must-support-data-elements,"[When sending US Core Observation Occupation Profile] for … [a] current job, [servers SHALL] omit observation.effectivePeriod.end to indicate it is ongoing.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,433,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-occupation.html#mandatory-and-must-support-data-elements,"When the industry is known, but the occupation is not, [servers SHALL] use the value “unknown” from the [DataAbsentReason Code System](http://hl7.org/fhir/R4/codesystem-data-absent-reason.html)",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,434,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-occupation.html#mandatory-and-must-support-data-elements,"when the occupation is known but the industry is not, [servers SHALL] omit the industry Observation.component",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,435,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancyintent.html#mandatory-and-must-support-data-elements,"To represent the patient’s pregnancy status, [servers SHALL] use the [US Core Observation Pregnancy Status Profile](https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancystatus.html).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,436,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancystatus.html#mandatory-and-must-support-data-elements,"To represent the patient’s intent to become pregnant, [servers SHALL] use the [US Core Observation Pregnancy Intent Profile](https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-pregnancyintent.html).",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,437,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements,"[For] multi-question surveys or assessments Observation.code is an overarching assessment or screening code, and the Observation.value element SHOULD be empty",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,438,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements,"A practitioner’s clinical observation or assertion about a patient’s health status, which is not a response to a screening or assessment question,SHOULD use the [US Core Simple Observation Profile](https://hl7.org/fhir/us/core/StructureDefinition-us-core-simple-observation.html) instead [of the US Core Observation Screening Assessment Profile]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,439,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-screening-assessment.html#mandatory-and-must-support-data-elements,the server system ... SHALL support [either] Reference(US Core Observation Profile) or Reference(US Core QuestionnaireResponse Profile) for Observation.derivedFrom,SHALL,Server,true,,,2.3.36.11,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_reference_resolution_test +hl7.fhir.us.core_7.0.0,440,https://hl7.org/fhir/us/core/StructureDefinition-us-core-observation-sexual-orientation.html#mandatory-and-must-support-data-elements,"Additional codes that translate or map to the Observation code (e.g., local codes) are allowed [when using US Core Observation Sexual Orientation Profile]",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,441,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-simple-observation.html#mandatory-and-must-support-data-elements,Observations formally part of an assessment tool or survey SHOULD use the [US Core Observation Screening Assessment Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-observation-screening-assessment.html).,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,442,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-simple-observation.html#mandatory-and-must-support-data-elements,An assertion or determination derived from screening and assessment tools SHOULD reference them using Observation.derivedFrom,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,443,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-simple-observation.html#mandatory-and-must-support-data-elements,"When using `Observation.derivedFrom’ to reference an Observation, the referenced Observation SHOULD be a US Core Observation",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,444,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-simple-observation.html#mandatory-and-must-support-data-elements,"Although none of the Observation.derivedFrom [references are flagged as Must Support](https://hl7.org/fhir/us/core/STU7/must-support.html#must-support---resource-references), the server SHALL support at least one of them",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,445,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-treatment-intervention-preference.html#mandatory-and-must-support-data-elements,[US Core] treatment intervention preferences expressed by a patient may be documented in narrative (text) form or the result of selecting from a list of options provided by the content creator/implementer.,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,446,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-treatment-intervention-preference.html#mandatory-and-must-support-data-elements,[When using US Core Treatment Intervention Preference Profile] the context or precondition of a patient’s preference SHOULD be supplied in the Observation.valueString ... or an extension,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,447,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-vital-signs.html#mandatory-and-must-support-data-elements,[US Core Vital Signs] observations MAY have [component](http://hl7.org/fhir/R4/observation.html#gr-comp) observations … [see] FHIR core specification [vital signs table](http://hl7.org/fhir/R4/observation-vitalsigns.html#vitals-table) for examples,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,448,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-pediatric-bmi-for-age.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-pediatric-weight-for-height.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-head-occipital-frontal-circumference-percentile.html#mandatory-and-must-support-data-elements",Information about the growth chart tables used to determine percentiles SHOULD be supplied in Observation.note.text,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,449,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-blood-pressure.html#mandatory-and-must-support-data-elements,"[In the US Core Blood Pressure Profile] because the blood pressure values are communicated in the mandatory systolic and diastolic components[,] the Observation.value[x] element SHOULD be omitted",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,450,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-blood-pressure.html#mandatory-and-must-support-data-elements,"[In the US Core Blood Pressure Profile] because the blood pressure values are communicated in the mandatory systolic and diastolic components[,] an Observation without a systolic or diastolic result value, SHALL include a reason why the data is absent in Observation.component.dataAbsentReason",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,451,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-blood-pressure.html#mandatory-and-must-support-data-elements,"[In the US Core Blood Pressure Profile] because the blood pressure values are communicated in the mandatory systolic and diastolic components[,] All server systems - including those that never provide a component observation without a value - SHALL support Observation.component.dataAbsentReason for the components.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,452,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-pulse-oximetry.html#mandatory-and-must-support-data-elements,Inspired oxygen therapy may be represented with [component](http://hl7.org/fhir/R4/observation.html#gr-comp) observations when measured at the same time as the pulse oximetry measurements [in the US Core Pulse Oximetry profile],MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,453,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-pulse-oximetry.html#mandatory-and-must-support-data-elements,"Many pulse oximetry readings are taken while the patient is breathing room air. The concept of “room air” (unmodified, ambient air) SHOULD be represented as an inhaled oxygen flow rate of 0 liters/min",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,454,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-pulse-oximetry.html#mandatory-and-must-support-data-elements,"A pulse oximetry reading without inspired oxygen component observations may imply that the measurement was performed while the patient was breathing room air or that the inspired oxygen reading was omitted. To remove this uncertainty, the inspired oxygen [component](http://hl7.org/fhir/R4/observation.html#gr-comp) observations SHOULD be used [when using the US Core Pulse Oximetry profile.]",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,455,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-organization.html#mandatory-and-must-support-data-elements,Systems SHALL support National Provider Identifier (NPI) for organizations,SHALL,Server,false,,,2.3.47.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_organization-us_core_v700_organization_must_support_test +hl7.fhir.us.core_7.0.0,456,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-organization.html#mandatory-and-must-support-data-elements,Systems … SHOULD the National Association of Insurance Commissioners NAIC Company code (sometimes called “NAIC Number” or “cocode”) for payers.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,457,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-organization.html#mandatory-and-must-support-data-elements,Systems … SHOULD support Clinical Laboratory Improvement Amendments (CLIA) for laboratories,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,458,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-organization.html#mandatory-and-must-support-data-elements,Systems SHOULD follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) as the standard style guide for Organization.address.line and Organization.address.city,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,459,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-race.html#profile-specific-implementation-guidance",The Complex [Extension] for Race ... allow[s] for one or more codes of which must support at least one category code from OMB Race [category for the [US Core Race Extension] (https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-race.html)],SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,460,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-ethnicity.html#profile-specific-implementation-guidance",The Complex [Extension] for ... Ethnicity allow[s] for one or more codes of which must support at least one category code from OMB … Ethnicity [category for the [US Core Ethnicity Extension] (https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-ethnicity.html)],SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,461,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-race.html#profile-specific-implementation-guidance",The Complex [Extension] for Race ... allow[s] for one or more codes of which MAY include additional detailed codes from CDC Race … codes [when using the [US Core Race Extension] (https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-race.html)],MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,462,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-ethnicity.html#profile-specific-implementation-guidance",The Complex [Extension] for Race ... allow[s] for one or more codes of which SHALL include a text description [of category codes when using the [US Core Race Extension] (https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-race.html)],MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,463,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-race.html#profile-specific-implementation-guidance",The Complex [Extension] for ... Ethnicity allow[s] for one or more codes of which MAY include additional detailed codes from CDC Race … codes [when using the [US Core Race Extension] (https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-race.html)],SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,464,"https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements, https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-ethnicity.html#profile-specific-implementation-guidance",The Complex [Extension] for ... Ethnicity allow[s] for one or more codes of which SHALL include a text description [of category codes when using the [US Core Ethnicity Extension] (https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-ethnicity.html)],SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,465,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,"Although Patient.deceased[x] is marked as additional USCDI, certifying systems are not required to support both [boolean and dateTime data types], but SHALL support [at] least Patient.deceasedDateTime",SHALL,Server,,,,"","" +hl7.fhir.us.core_7.0.0,466,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,Previous name is represented by setting Patient.name.use to “old” or providing an end date in Patient.name.period or doing both,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,467,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,Previous address is represented by setting Patient.address.use to “old” or providing an end date in Patient.address.period or doing both.,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,468,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,Communication.preferred MAY designate a preferred language when multiple languages are represented,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,469,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,"[Certifying systems](https://www.healthit.gov/topic/certification-ehrs/about-onc-health-it-certification-program) [, those that are participating in the ONC Health IT certification program,] SHALL ... follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) as the standard style guide for Patient.address.line and Patient.address.city for new and updated records.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,470,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,"Non-certifying systems[, systems that are not participating in the ONC Health IT certification program,] SHOULD follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) as the standard style guide for Patient.address.line and Patient.address.city for new and updated records.",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,471,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,"[For systems participating in the ONC Health IT certification program,] this requirement [to follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) for Patient.address.line and Patient.address.city] does not apply to historical records or documents that are exposed through FHIR-based APIs. [Organizations MAY choose not to use use Project US@ Technical Specification for Patient Addresses Final Version 1.0 when sending historical records]",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,472,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-patient.html#mandatory-and-must-support-data-elements,The Patient’s Social Security Numbers SHOULD NOT be used as a patient identifier in Patient.identifier.value,SHOULD NOT,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,473,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-practitioner.html#mandatory-and-must-support-data-elements,Servers that support only the US Core Practitioner Profile and do not support the [US Core PractitionerRole Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-practitionerrole.html) SHALL provide implementation-specific guidance on how to access a provider’s location and contact information using only the Practitioner resource.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,474,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-practitioner.html#mandatory-and-must-support-data-elements,"Although Practitioner.address is marked as Must Support, the server system … [MAY choose not to] support it if they support the US Core PractitionerRole Profile",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,475,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-practitioner.html#mandatory-and-must-support-data-elements,[When using the US Core Practioner Profile] Practitioner.address … SHALL [be supported] if … [the server does] not support the US Core PractitionerRole Profile,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,477,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-practitioner.html#mandatory-and-must-support-data-elements,Only professional/work contact information about the practitioner SHOULD be available to the patient,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,478,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-practitioner.html#mandatory-and-must-support-data-elements,Systems SHOULD follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) as the standard style guide for Practitioner.address.line and Practitioner.address.city.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,479,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,"Procedure codes … [MAY] be taken from SNOMED-CT, CPT, HCPCS II, ICD-10-PCS, CDT, or LOINC [for procedure.code]",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,480,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,[If using LOINC codes in procedure.code] only LOINC concepts that reflect actual procedures SHOULD be used,SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,481,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,A procedure including an implantable device SHOULD use Procedure.focalDevice referencing the [US Core Implantable Device Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-implantable-device.html).,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,482,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,[For organizations participating in the ONC Health IT Certification program] Servers … SHALL support ... US Core Procedure Profile for communicating the reason or justification for a referral as Additional USCDI Requirements,SHALL,Server,true,,,2.3.43.08,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test +hl7.fhir.us.core_7.0.0,484,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program,] although both Procedure.reasonCode and Procedure.reasonReference are marked as Additional USCDI Requirements, the certifying server system is not required to support both, but SHALL support at least one of these elements.",SHALL,Server,true,,,2.3.43.08,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_must_support_test +hl7.fhir.us.core_7.0.0,486,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program,] when using Procedure.reasonReference Servers SHALL support at least one target resource in Procedure.reasonReference",SHALL,Server,true,,,2.3.43.07,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_validation_test +hl7.fhir.us.core_7.0.0,488,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-procedure.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program,] when using Procedure.reasonReference …The referenced resources SHOULD be a US Core Profile as documented in [Referencing US Core Profiles](https://hl7.org/fhir/us/core/STU7/general-guidance.html#referencing-us-core-profiles)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,489,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type AllergyIntolerance,SHALL,Server,false,,,2.3.4.04,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,490,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type CarePlan,SHALL,Server,false,,,2.3.5.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_plan-us_core_v700_care_plan_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,491,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type CareTeam,SHALL,Server,false,,,2.3.6.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_care_team-us_core_v700_care_team_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,492,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Condition,SHALL,Server,false,,,"2.3.7.13, 2.3.8.13","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_encounter_diagnosis-us_core_v700_condition_encounter_diagnosis_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_condition_problems_health_concerns-us_core_v700_condition_problems_health_concerns_provenance_revinclude_search_test" +hl7.fhir.us.core_7.0.0,493,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Coverage,SHALL,Server,false,,,2.3.9.03,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_coverage-us_core_v700_coverage_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,494,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Device,SHALL,Server,false,,,2.3.10.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_device-us_core_v700_device_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,495,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type DiagnosticReport,SHALL,Server,false,,,"2.3.11.09, 2.3.12.09","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_note-us_core_v700_diagnostic_report_note_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_diagnostic_report_lab-us_core_v700_diagnostic_report_lab_provenance_revinclude_search_test" +hl7.fhir.us.core_7.0.0,496,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Document Reference,SHALL,Server,false,,,2.3.13.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_document_reference-us_core_v700_document_reference_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,497,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Encounter,SHALL,Server,false,,,2.3.14.12,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_encounter-us_core_v700_encounter_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,498,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Goal,SHALL,Server,false,,,2.3.15.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_goal-us_core_v700_goal_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,499,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Immunization,SHALL,Server,false,,,2.3.16.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_immunization-us_core_v700_immunization_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,500,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type MedicationDispense,SHALL,Server,false,,,2.3.17.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_dispense-us_core_v700_medication_dispense_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,501,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type MedicationRequest,SHALL,Server,false,,,2.3.18.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_medication_request-us_core_v700_medication_request_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,502,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Observation,SHALL,Server,false,,,"2.3.19.08, 2.3.20.08, 2.3.21.08, 2.3.22.08, 2.3.32.08, 2.3.36.08","crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_lab-us_core_v700_observation_lab_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancystatus-us_core_v700_observation_pregnancystatus_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_pregnancyintent-us_core_v700_observation_pregnancyintent_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_occupation-us_core_v700_observation_occupation_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_sexual_orientation-us_core_v700_observation_sexual_orientation_provenance_revinclude_search_test, crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_observation_screening_assessment-us_core_v700_observation_screening_assessment_provenance_revinclude_search_test" +hl7.fhir.us.core_7.0.0,503,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Patient,SHALL,Server,false,,,2.3.3.10,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_patient-us_core_v700_patient_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,504,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type Procedure,SHALL,Server,false,,,2.3.43.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_procedure-us_core_v700_procedure_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,505,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type QuestionnaireResponse,SHALL,Server,false,,,2.3.44.07,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response-us_core_v700_questionnaire_response_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,506,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type RelatedPerson,SHALL,Server,false,,,2.3.51.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_related_person-us_core_v700_related_person_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,507,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,The US Core Provenance resource SHALL be supported for … [this] US Core resource type ServiceRequest,SHALL,Server,false,,,2.3.45.09,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_provenance_revinclude_search_test +hl7.fhir.us.core_7.0.0,508,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,"If a system receives a provider in Provenance.agent.who as free text, they must capture [the organization] who sent them the information [and upon] request ... SHALL provide this organization as the source",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,509,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,"If a system receives a provider in Provenance.agent.who as free text, … [upon request they] MAY include the free text provider.",MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,510,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html#mandatory-and-must-support-data-elements,Systems that need to know the activity has occurred SHOULD populate the activity [Provenance.activity],SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,511,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-questionnaireresponse.html#mandatory-and-must-support-data-elements,If the QuestionnaireResponse is based on a non-FHIR form [then a] ... FHIR Questionnaire [needs to] represent at least the relevant metadata,SHALL,Server,true,,,2.3.44,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_questionnaire_response +hl7.fhir.us.core_7.0.0,512,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-questionnaireresponse.html#mandatory-and-must-support-data-elements,If the QuestionnaireResponse is based on a non-FHIR form [then a] … FHIR Questionnaire's questions may be omitted,MAY,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,513,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-relatedperson.html#mandatory-and-must-support-data-elements,Systems SHOULD follow the [Project US@ Technical Specification for Patient Addresses Final Version 1.0](https://asapnet.org/wp-content/uploads/2022/03/Project_US_FINAL_Technical_Specification_Version_1.0.pdf) as the standard style guide for RelatedPerson.address.line and RelatedPerson.address.city,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,514,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,"The ServiceRequest.category value set … [MAY] be treated as [extensible](http://hl7.org/fhir/R4/terminologies.html#extensible), and other category codes can be used instead [of the US Core ServiceRequest Category Codes]",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,515,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,The ServiceRequest.code value ... SHOULD be constrained to a subset for a particular use case or domain,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,516,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,[For organizations participating in the ONC Health IT Certification program] Servers … SHALL support ... US Core Service Request Profile for communicating the reason or justification for a referral as Additional USCDI Requirements,SHALL,Server,true,,,2.3.45.11,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test +hl7.fhir.us.core_7.0.0,518,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program,] although both ServiceRequest.reasonCode and ServiceRequest.reasonReference are marked as Additional USCDI Requirements, the certifying server system is not required to support both, but SHALL support at least one of these elements.",SHALL,Server,true,,,2.3.45.11,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_must_support_test +hl7.fhir.us.core_7.0.0,520,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program,] when using ServiceRequest.reasonReference Servers SHALL support at least one target resource in ServiceRequest.reasonReference",SHALL,Server,true,,,2.3.45.10,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_service_request-us_core_v700_service_request_validation_test +hl7.fhir.us.core_7.0.0,522,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-servicerequest.html#mandatory-and-must-support-data-elements,"[For organizations participating in the ONC Health IT Certification program,] when using ServiceRequest.reasonReference …The referenced resources SHOULD be a US Core Profile as documented in [Referencing US Core Profiles](https://hl7.org/fhir/us/core/STU7/general-guidance.html#referencing-us-core-profiles)",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,523,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-specimen.html#mandatory-and-must-support-data-elements,"Since the binding [for Specimen.type and additional USCDI elements] is [extensible](http://hl7.org/fhir/R4/terminologies.html#extensible) when a code is unavailable, just text is allowed [and conformant].",MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,524,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-specimen.html#mandatory-and-must-support-data-elements,"Although both Specimen.identifier and Specimen.accessionIdentifier are marked as Must Support, the server system is not required to support both, but SHALL support at least one of these elements.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,532,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#should_igs,"[Servers] SHOULD Support the ... +[SMART Application Launch Framework Implementation Guide](http://hl7.org/fhir/smart-app-launch/history.html)",SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,533,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL support the US Core Patient resource profile,SHALL,Server,false,,,2.3.1.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_capability_statement-us_core_profile_support +hl7.fhir.us.core_7.0.0,534,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL support … at least one additional resource profile [in addition to the US Core Patient resource profile] from the list of US Core Profiles,SHALL,Server,false,,,2.3.1.05,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_capability_statement-us_core_profile_support +hl7.fhir.us.core_7.0.0,535,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … Implement the RESTful behavior according to the FHIR specification.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,536,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 400) [for] invalid parameters,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,537,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 401/4xx) [for] unauthorized request,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,538,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 403) [for] insufficient scopes,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,539,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … return the following response class (Status 404) [for] unknown resource,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,540,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHALL … support JSON source formats for all US Core interactions.,SHALL,Server,false,,,2.3.1.04,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_capability_statement-us_core_json_support +hl7.fhir.us.core_7.0.0,541,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHOULD … support XML source formats for all US Core interactions.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,542,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,US Core Server SHOULD … identify the US Core profiles supported as part of the FHIR meta.profile attribute for each instance.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,543,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#behavior,"A server SHALL reject any unauthorized requests by returning an HTTP 401 ""Unauthorized"", HTTP 403 ""Forbidden"", or HTTP 404 ""Not Found""",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,548,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#valueset,[US Core Servers] SHOULD support [$expand](http://hl7.org/fhir/OperationDefinition/ValueSet-expand) operation,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,549,https://hl7.org/fhir/us/core/STU7/CapabilityStatement-us-core-server.html#valueset,"If a server supports DocumentReference for creating, using, and sharing clinical notes, it SHOULD also support the context and contextdirection parameters of the $expand operation",SHOULD,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,550,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems SHALL establish a risk analysis and management regime that conforms with HIPAA security regulatory requirements,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,552,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,US Federal systems SHOULD conform with the risk management and mitigation requirements defined in NIST 800 series documents.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,554,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,US Federal systems … SHOULD include security category assignment following NIST 800-60 vol. 2 Appendix D.14.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,556,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,The coordination of risk management and the related security and privacy controls … SHOULD be defined in the Business Associate Agreement when available.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,558,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems SHALL reference a single time source to establish a common time base for security auditing and clinical data records among computing systems.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,560,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,The selected time service SHOULD be documented in the Business Associate Agreement when available.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,562,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems SHALL keep audit logs of the various transactions.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,564,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems SHALL use TLS version 1.2 or higher for all transmissions not taking place over a secure network connection.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,566,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,US Federal systems SHOULD conform with FIPS PUB 140-2.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,568,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems SHALL conform to [FHIR Communications Security](http://hl7.org/fhir/R4/security.html#http) requirements.,SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,570,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,"For Authentication and Authorization, Systems SHALL support any [SMART App Launch version](http://hl7.org/fhir/smart-app-launch/history.html) for client <-> server interactions.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,572,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,"Systems SHALL implement consent requirements per their state, local, and institutional policies.",SHALL,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,574,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,The Business Associate Agreements SHOULD document systems’ mutual consent requirements.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,576,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems SHOULD provide Provenance statements using the [US Core Provenance Profile](https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-provenance.html) resource and associated requirements.,SHOULD,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,578,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems MAY implement the [FHIR Digital Signatures](http://hl7.org/fhir/R4/security.html#digital%20signatures),MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,580,https://hl7.org/fhir/us/core/STU7/security.html#patient-privacy-and-security,Systems MAY protect the confidentiality of data at rest via encryption and associated access controls.,MAY,Server,false,,,"","" +hl7.fhir.us.core_7.0.0,583,https://www.hl7.org/fhir/us/core/STU7/general-requirements.html#current-binding-for-coded-elements,"The [additional] current binding [[FHIR R5 link](https://hl7.org/fhir/R5/terminologies.html#binding)] requires newly recorded, non-legacy data to be drawn from the [bound] value set.",SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,584,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-questionnaireresponse.html#mandatory-and-must-support-data-elements,If the QuestionnaireResponse is based on a non-FHIR form [then a] ... FHIR Questionnaire [will communicate] the identifier of the non-FHIR form instead of the canonical URI using the US Core Extension Questionnaire URI extension.,SHALL,Server,true,,,"","" +hl7.fhir.us.core_7.0.0,587,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,Each AllergyIntolerance Must Support: a verification status,SHALL,Server,false,,,2.3.4.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test +hl7.fhir.us.core_7.0.0,588,https://hl7.org/fhir/us/core/STU7/StructureDefinition-us-core-allergyintolerance.html#mandatory-and-must-support-data-elements,Each AllergyIntolerance Must Support: a reaction manifestation,SHALL,Server,false,,,2.3.4.06,crd_client_v221-crd_v221_client_fhir_api-us_core_v700_fhir_api-us_core_v700_allergy_intolerance-us_core_v700_allergy_intolerance_must_support_test diff --git a/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv b/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv index cbac5d30..29d926d3 100644 --- a/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv +++ b/lib/davinci_crd_test_kit/requirements/generated/crd_server_requirements_coverage.csv @@ -1,7 +1,7 @@ -Req Set,ID,URL,Requirement,Conformance,Actors,Conditionality,Not Tested Reason,Not Tested Details,Da Vinci CRD Server Test Suite Short ID(s),Da Vinci CRD Server Test Suite Full ID(s) +Req Set,ID,URL,Requirement,Conformance,Actors,Conditionality,Not Tested Reason,Not Tested Details,Da Vinci CRD Server v2.0.1 Test Suite Short ID(s),Da Vinci CRD Server v2.0.1 Test Suite Full ID(s) hl7.fhir.us.davinci-crd_2.0.1,1,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#foundational-requirements,"Future versions of this specification will evolve based on implementer feedback. Therefore, CRD servers and CRD clients MAY mutually agree to support additional hooks, additional card patterns, additional resources, additional extensions, etc. not found in this specification.",MAY,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,3,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#mustsupport,"For CRD servers, the server SHALL leverage mustSupport elements as available and appropriate to provide decision support.",SHALL,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,4,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#performance,CRD services SHALL return responses for all [supported hooks](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories),SHALL,Server,,,,3,crd_server-crd_server_hooks +hl7.fhir.us.davinci-crd_2.0.1,4,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#performance,CRD services SHALL return responses for all [supported hooks](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories),SHALL,Server,,,,3,crd_server-crd_v201_server_hooks hl7.fhir.us.davinci-crd_2.0.1,5,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#performance,CRD services SHALL ... respond within the required time 90% of the time.,SHALL,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,6,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#performance,For [the [Orders Select Hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select)] the ... target [response] time is 5 seconds.,SHALL,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,7,https://hl7.org/fhir/us/davinci-crd/STU2/foundation.html#performance,For [the [Encounter Stat Hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start)] ... target [response] time is 5 seconds.,SHALL,Server,,,,"","" @@ -42,7 +42,7 @@ hl7.fhir.us.davinci-crd_2.0.1,85,https://hl7.org/fhir/us/davinci-crd/STU2/securi hl7.fhir.us.davinci-crd_2.0.1,86,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Implementers SHALL adhere to any security and privacy rules defined by: … HRex: [Privacy & Security](http://hl7.org/fhir/us/davinci-hrex/STU1/security.html),SHALL,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,87,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Implementers SHALL adhere to any security and privacy rules defined by: … CDS Hooks: [Security & Safety](https://cds-hooks.hl7.org/2.0/#security-and-safety),SHALL,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,88,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Implementers SHALL adhere to any security and privacy rules defined by: … SMART on FHIR: [SMART App Launch](http://www.hl7.org/fhir/smart-app-launch),SHALL,"Client,Server",,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,89,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,"As per the CDS Hook specification, communications between CRD Clients and CRD Servers SHALL use TLS.",SHALL,"Client,Server",,,,1.01,crd_server-crd_server_discovery_group-crd_server_tls_version_stu2 +hl7.fhir.us.davinci-crd_2.0.1,89,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,"As per the CDS Hook specification, communications between CRD Clients and CRD Servers SHALL use TLS.",SHALL,"Client,Server",,,,1.01,crd_server-crd_v201_server_discovery_group-crd_v201_server_tls_version_stu2 hl7.fhir.us.davinci-crd_2.0.1,90,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,Mutual TLS is not required by this specification but is permitted.,MAY,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,91,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,CRD Servers and CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based on [HRex rules for PHI exchange](https://hl7.org/fhir/us/davinci-hrex/STU1/security.html#exchange-of-phi-for-treatment-payment-operations-tpo-as-defined),SHOULD,"Client,Server",,,,"","" hl7.fhir.us.davinci-crd_2.0.1,93,https://hl7.org/fhir/us/davinci-crd/STU2/security.html#privacy-security-and-safety,CRD Servers SHALL use information received solely for coverage determination and decision support purposes,SHALL,Server,,,,"","" @@ -71,8 +71,8 @@ hl7.fhir.us.davinci-crd_2.0.1,135,https://hl7.org/fhir/us/davinci-crd/STU2/devia hl7.fhir.us.davinci-crd_2.0.1,136,https://hl7.org/fhir/us/davinci-crd/STU2/deviations.html#if-none-exist,"The `suggestion.action` object will use an extension to carry the if-none-exist query, as per FHIR’s [conditional create](http://hl7.org/fhir/R4/http.html#ccreate) functionality. The extension property will be `davinci-crd.if-none-exist`",SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,140,https://hl7.org/fhir/us/davinci-crd/STU2/deviations.html#linking-cards-to-requests,"If a hook service is invoked on a collection of resources, all cards returned that are specific to only a subset of the resources passed as context SHALL disambiguate in the `detail` element which resources they’re associated with in a human-friendly way.",SHALL,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,141,https://hl7.org/fhir/us/davinci-crd/STU2/deviations.html#linking-cards-to-requests,"If a hook service is invoked on a collection of resources, ... cards SHOULD include … [the `davinci-associated-resource`] extension [listing each resource from the collection it is associated with] to allow computable linkage.",SHOULD,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,152,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,CRD Servers conforming to this implementation guide SHALL provide a service for all hooks ... required of CRD clients by this implementation guide unless the server has determined that the hook will not be reasonably useful in determining coverage or documentation expectations for the types of coverage provided.,SHALL,Server,,,,3,crd_server-crd_server_hooks -hl7.fhir.us.davinci-crd_2.0.1,153,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,CRD Servers conforming to this implementation guide SHALL provide a service for all ... order resource types required of CRD clients by this implementation guide unless the server has determined that the hook will not be reasonably useful in determining coverage or documentation expectations for the types of coverage provided.,SHALL,Server,,,,3,crd_server-crd_server_hooks +hl7.fhir.us.davinci-crd_2.0.1,152,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,CRD Servers conforming to this implementation guide SHALL provide a service for all hooks ... required of CRD clients by this implementation guide unless the server has determined that the hook will not be reasonably useful in determining coverage or documentation expectations for the types of coverage provided.,SHALL,Server,,,,3,crd_server-crd_v201_server_hooks +hl7.fhir.us.davinci-crd_2.0.1,153,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,CRD Servers conforming to this implementation guide SHALL provide a service for all ... order resource types required of CRD clients by this implementation guide unless the server has determined that the hook will not be reasonably useful in determining coverage or documentation expectations for the types of coverage provided.,SHALL,Server,,,,3,crd_server-crd_v201_server_hooks hl7.fhir.us.davinci-crd_2.0.1,155,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,CRD ... Servers MAY choose to support additional hooks available in the registry on the [CDS Hooks continuous integration build](https://cds-hooks.org/) or custom hooks defined elsewhere.,MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,157,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,[Servers who choose to support additional hooks] SHOULD adhere to the conformance expectations defined in this specification for any hooks listed here.,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,158,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"In the absence of guidance from the CDS Hooks specification, CRD Servers are expected to conform to the following rules when responding to requests from a CRD Client: If the CRD Server encounters an error when processing the request, the system SHALL return an appropriate error HTTP Response Code, starting with the digit “4” or “5”, indicating that there was an error.",SHALL,Server,,,,"","" @@ -81,37 +81,37 @@ hl7.fhir.us.davinci-crd_2.0.1,160,https://hl7.org/fhir/us/davinci-crd/STU2/hooks hl7.fhir.us.davinci-crd_2.0.1,161,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"In the absence of guidance from the CDS Hooks specification, CRD Servers are expected to conform to the following rules when responding to requests from a CRD Client: ... If additional information (e.g. number to call) is available, it MAY also be included in the message to the user.",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,162,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"In the absence of guidance from the CDS Hooks specification, CRD Servers are expected to conform to the following rules when responding to requests from a CRD Client: ... the CRD Server SHALL use the 400 ... codes in a manner consistent with the FHIR RESTful Create Action, specifically: 400 - Bad Request - The request is not parsable as JSON",SHALL,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,163,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks,"In the absence of guidance from the CDS Hooks specification, CRD Servers are expected to conform to the following rules when responding to requests from a CRD Client: ... the CRD Server SHALL use the ... 422 codes in a manner consistent with the FHIR RESTful Create Action, specifically: ... 422 - Unprocessable Entity - The request is valid JSON, but is not conformant to CDS Hooks, FHIR resources, or required profiles",SHALL,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,164,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,"CRD Servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for these [[Appointment Book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book), [Orders Sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign), and [Order Dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)] hooks, even if the response indicates that further information is needed or that the level of detail provided is insufficient to determine coverage",SHALL,Server,,,,"3.1, 3.5, 3.6","crd_server-crd_server_hooks-crd_server_appointment_book, crd_server-crd_server_hooks-crd_server_order_dispatch, crd_server-crd_server_hooks-crd_server_order_sign" +hl7.fhir.us.davinci-crd_2.0.1,164,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,"CRD Servers SHALL, at minimum, return a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for these [[Appointment Book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book), [Orders Sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign), and [Order Dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch)] hooks, even if the response indicates that further information is needed or that the level of detail provided is insufficient to determine coverage",SHALL,Server,,,,"3.1, 3.5, 3.6","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign" hl7.fhir.us.davinci-crd_2.0.1,165,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,"These [[Orders Select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select), [Encounter Start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start), and [Encounter Discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)] hooks MAY return cards or system actions, but are not expected to, and CRD clients are free to ignore any cards or actions returned.",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,167,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,"If Coverage Information is returned for these [`secondary` [Orders Select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select), [Encounter Start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start), and [Encounter Discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge)] hooks, it SHALL NOT include messages indicating a need for [clinical](https://hl7.org/fhir/us/davinci-crd/STU2/ValueSet-AdditionalDocumentation.html) or [administrative](https://hl7.org/fhir/us/davinci-crd/STU2/ValueSet-AdditionalDocumentation.html) information, as such information is expected to be made available later in the process and therefore such guidance is not useful.",SHALL NOT,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,168,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,"For the sake of interoperability, implementers are expected to adhere to the interface defined in the specified version of each hook,",SHALL,Server,,,,"3.1, 3.2, 3.3, 3.4, 3.5, 3.6","crd_server-crd_server_hooks-crd_server_appointment_book, crd_server-crd_server_hooks-crd_server_encounter_start, crd_server-crd_server_hooks-crd_server_encounter_discharge, crd_server-crd_server_hooks-crd_server_order_select, crd_server-crd_server_hooks-crd_server_order_dispatch, crd_server-crd_server_hooks-crd_server_order_sign" +hl7.fhir.us.davinci-crd_2.0.1,168,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,"For the sake of interoperability, implementers are expected to adhere to the interface defined in the specified version of each hook,",SHALL,Server,,,,"3.1, 3.2, 3.3, 3.4, 3.5, 3.6","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge, crd_server-crd_v201_server_hooks-crd_v201_server_order_select, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign" hl7.fhir.us.davinci-crd_2.0.1,169,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#hook-categories,CRD Servers SHALL handle unrecognized context elements by ignoring them.,SHALL,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,170,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[Servers SHALL support] version 1.0 of the [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.,SHALL,Server,,,,3.1,crd_server-crd_server_hooks-crd_server_appointment_book +hl7.fhir.us.davinci-crd_2.0.1,170,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,[Servers SHALL support] version 1.0 of the [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.,SHALL,Server,,,,3.1,crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book hl7.fhir.us.davinci-crd_2.0.1,173,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"[In response to an [appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/) hook call, Servers may return] requirements related to the intended location and/or participants (e.g. warnings about out-of-network)",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,174,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"[In response to an [appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/) hook call, Servers may return] Requirements related to the service being booked (e.g. Is prior authorization needed? Is the service covered? Is the indication appropriate? Is special documentation required?)",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,175,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"[In response to an [appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/) hook call, Servers may return] Requirements related to the timing of the service (e.g. is the coverage still expected to be in effect? is the service too soon since the last service of that type?)",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,176,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"[In response to an [appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/) hook call, Servers may return] Reminders about additional services that are recommended to be scheduled or booked for the same patient - either as part of the scheduled encounter or as part of additional appointments that could be created at the same time",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,181,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"While this [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/)] hook supports userIds of Patient and RelatedPerson, for CRD purposes it is enough to support Practitioner and PractitionerRole. [For the appointment-book hook] support for Patient and RelatedPerson as users is optional [([published v1.0 link](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/))]",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,182,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,CRD Servers MAY use this [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,184,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"CRD servers SHALL, at minimum, support returning ... the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.",SHALL,Server,,,,3.1,crd_server-crd_server_hooks-crd_server_appointment_book -hl7.fhir.us.davinci-crd_2.0.1,185,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[Servers SHALL support] version 1.0 of the [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start/))],SHALL,Server,,,,3.2,crd_server-crd_server_hooks-crd_server_encounter_start +hl7.fhir.us.davinci-crd_2.0.1,184,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book,"CRD servers SHALL, at minimum, support returning ... the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[appointment-book](https://cds-hooks.hl7.org/hooks/appointment-book/STU1/appointment-book/)] hook.",SHALL,Server,,,,3.1,crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book +hl7.fhir.us.davinci-crd_2.0.1,185,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,[Servers SHALL support] version 1.0 of the [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start/))],SHALL,Server,,,,3.2,crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start hl7.fhir.us.davinci-crd_2.0.1,188,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,"The advice returned [by servers] for this [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start)] hook would include the same sorts of advice as provided for using appointment-book [including: ""requirements related to the intended location and/or participants (e.g. warnings about out-of-network)""]",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,189,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,"The advice returned [by servers] for this [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start)] hook would include the same sorts of advice as provided for using appointment-book [including: ""Requirements related to the service being booked (e.g. Is prior authorization needed? Is the service covered? Is the indication appropriate? Is special documentation required?)""]",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,190,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,"The advice returned [by servers] for this [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start)] hook would include the same sorts of advice as provided for using appointment-book [including: ""Requirements related to the timing of the service (e.g. is the coverage still expected to be in effect? is the service too soon since the last service of that type?)""]",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,191,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,"The advice returned [by servers] for this [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start)] hook would include the same sorts of advice as provided for using appointment-book [including: ""Reminders about additional services that are recommended to be scheduled or booked for the same patient - either as part of the scheduled encounter or as part of additional appointments that could be created at the same time""]",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,195,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start,CRD Servers MAY use this [[encounter-start](https://cds-hooks.hl7.org/hooks/encounter-start/STU1/encounter-start)] hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,196,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[Servers SHALL support] version 1.0 of the [[encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/))],SHALL,Server,,,,3.3,crd_server-crd_server_hooks-crd_server_encounter_discharge +hl7.fhir.us.davinci-crd_2.0.1,196,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,[Servers SHALL support] version 1.0 of the [[encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/))],SHALL,Server,,,,3.3,crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge hl7.fhir.us.davinci-crd_2.0.1,198,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge,This [[encounter-discharge](https://cds-hooks.hl7.org/hooks/encounter-discharge/STU1/encounter-discharge/)] hook would generally be specific to an in-patient encounter and would fire when a provider is performing the discharge process within the CRD Client.,SHOULD,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,204,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,[Servers SHALL support] version 1.0 of the [[order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/))],SHALL,Server,,,,3.5,crd_server-crd_server_hooks-crd_server_order_dispatch +hl7.fhir.us.davinci-crd_2.0.1,204,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,[Servers SHALL support] version 1.0 of the [[order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/))],SHALL,Server,,,,3.5,crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch hl7.fhir.us.davinci-crd_2.0.1,206,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,CRD Servers MAY use this [[order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/)] hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,207,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,"CRD clients and servers SHALL, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[order-dispatch](order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/)] hook",SHALL,"Client,Server",,,,3.5,crd_server-crd_server_hooks-crd_server_order_dispatch -hl7.fhir.us.davinci-crd_2.0.1,208,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[Servers SHALL support] version 1.0 of the [[order-select](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-select.html))],SHALL,Server,,,,3.4,crd_server-crd_server_hooks-crd_server_order_select +hl7.fhir.us.davinci-crd_2.0.1,207,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch,"CRD clients and servers SHALL, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-ext-coverage-information.html) system action for all invocations of this [[order-dispatch](order-dispatch](https://cds-hooks.hl7.org/hooks/order-dispatch/STU1/order-dispatch/)] hook",SHALL,"Client,Server",,,,3.5,crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch +hl7.fhir.us.davinci-crd_2.0.1,208,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,[Servers SHALL support] version 1.0 of the [[order-select](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/)] Hook [([published v1.0 link](https://cds-hooks.hl7.org/hooks/order-select.html))],SHALL,Server,,,,3.4,crd_server-crd_v201_server_hooks-crd_v201_server_order_select hl7.fhir.us.davinci-crd_2.0.1,210,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,Coverage requirements [returned from the [order-select hook](https://cds-hooks.hl7.org/hooks/order-select.html)] SHOULD be limited only to those resources that are included in the `selections` context,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,211,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select,the content of other [resources that are not included in the `selections` context] resources [[for the order-select hook](https://cds-hooks.hl7.org/hooks/order-select.html)] SHOULD also be considered before making recommendations about what additional actions are necessary. (I.e. don’t recommend an action if there’s already a draft order to perform that action.),SHOULD,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,217,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,[Servers SHALL support] version 1.1 of the [[order-sign](https://cds-hooks.org/hooks/order-sign/2020May/order-sign)] Hook [([published v1.0 link (v1.1.0 in the change log)](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html))],SHALL,Server,,,,3.6,crd_server-crd_server_hooks-crd_server_order_sign +hl7.fhir.us.davinci-crd_2.0.1,217,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,[Servers SHALL support] version 1.1 of the [[order-sign](https://cds-hooks.org/hooks/order-sign/2020May/order-sign)] Hook [([published v1.0 link (v1.1.0 in the change log)](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html))],SHALL,Server,,,,3.6,crd_server-crd_v201_server_hooks-crd_v201_server_order_sign hl7.fhir.us.davinci-crd_2.0.1,219,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,[[For the order-sign hook](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)] It’s appropriate to provide warnings if there is insufficient information to determine coverage requirements.,MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,224,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,CRD Servers MAY use this [[order-sign hook](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)] hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,226,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"CRD... servers SHALL, at minimum, support returning ... the Coverage Information system action for all invocations of this [[order-sign hook](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)] hook.",SHALL,Server,,,,3.6,crd_server-crd_server_hooks-crd_server_order_sign +hl7.fhir.us.davinci-crd_2.0.1,226,https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign,"CRD... servers SHALL, at minimum, support returning ... the Coverage Information system action for all invocations of this [[order-sign hook](https://cds-hooks.hl7.org/hooks/STU1/order-sign.html)] hook.",SHALL,Server,,,,3.6,crd_server-crd_v201_server_hooks-crd_v201_server_order_sign hl7.fhir.us.davinci-crd_2.0.1,227,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#cards-profiles,"The `Card.indicator` SHOULD be populated from the perspective of the clinical decision maker, not the payer.",SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,228,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#cards-profiles,Most Coverage Requirements SHOULD be marked as ‘info’.,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,229,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#cards-profiles,"While failure to procure a prior authorization might be ‘critical’ from the perspective of payment, it would be - at best - a ‘warning’ from the perspective of clinical care. ‘critical’ must be reserved for reporting life or death or serious clinical outcomes. Issues where the proposed course of action will negatively affect the ability of the payer or patient to be reimbursed would generally be a ‘warning’",SHOULD,Server,,,,"","" @@ -127,39 +127,39 @@ hl7.fhir.us.davinci-crd_2.0.1,238,https://hl7.org/fhir/us/davinci-crd/STU2/cards hl7.fhir.us.davinci-crd_2.0.1,239,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#cards-profiles,"While links are permitted in the markdown content of `Card.detail`, support for this is not universal, so links SHOULD also be provided in `Card.link`.",SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,240,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#cards-profiles,card options SHOULD provide sufficient information for a user to perform record changes manually if automated support isn’t possible.,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,241,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#cards-profiles,"Where [systemActions](https://cds-hooks.hl7.org/2.0/#system-action) are used, CRD Servers SHOULD NOT return equivalent information in a card for user display.",SHOULD NOT,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,247,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"CRD Servers SHALL, at minimum, demonstrate an ability to return cards with the following type: [Coverage](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)... card types",SHALL,Server,,,,3.7,crd_server-crd_server_hooks-crd_server_required_card_response_validation -hl7.fhir.us.davinci-crd_2.0.1,248,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"CRD Servers SHALL, at minimum, demonstrate an ability to return cards with the following type: ... [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) ... card types",SHALL,Server,,,,3.7,crd_server-crd_server_hooks-crd_server_required_card_response_validation -hl7.fhir.us.davinci-crd_2.0.1,249,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"CRD Servers SHALL, at minimum, demonstrate an ability to return cards with the following type: ... [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) card types",SHALL,Server,,,,3.7,crd_server-crd_server_hooks-crd_server_required_card_response_validation +hl7.fhir.us.davinci-crd_2.0.1,247,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"CRD Servers SHALL, at minimum, demonstrate an ability to return cards with the following type: [Coverage](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information)... card types",SHALL,Server,,,,3.7,crd_server-crd_v201_server_hooks-crd_v201_server_required_card_response_validation +hl7.fhir.us.davinci-crd_2.0.1,248,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"CRD Servers SHALL, at minimum, demonstrate an ability to return cards with the following type: ... [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) ... card types",SHALL,Server,,,,3.7,crd_server-crd_v201_server_hooks-crd_v201_server_required_card_response_validation +hl7.fhir.us.davinci-crd_2.0.1,249,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"CRD Servers SHALL, at minimum, demonstrate an ability to return cards with the following type: ... [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) card types",SHALL,Server,,,,3.7,crd_server-crd_v201_server_hooks-crd_v201_server_required_card_response_validation hl7.fhir.us.davinci-crd_2.0.1,250,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,Provision of ... decision support cards outside the coverage and documentation requirements space is optional (for both server and client).,MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,252,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,CRD Servers that provide decision support for non-coverage/documentation areas SHALL check that the CRD client does not have the information within its store that would allow it to detect the issue itself.,SHALL,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,253,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types,"[for non-coverage/documentation areas] If the information already exists in the CRD client, then the obligation is on the CRD Client to manage the issue detection and reporting in its own manner and CRD Servers should not get involved.",SHOULD NOT,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,258,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference,"Card with one or more links to external web pages, PDFs, or other resources that provide relevant coverage information ... SHALL have at least one `Card.link`.",SHALL,Server,,,,"3.1.07, 3.1.08, 3.2.07, 3.2.08, 3.3.07, 3.3.08, 3.4.07, 3.4.08, 3.5.07, 3.5.08, 3.6.07, 3.6.08","crd_server-crd_server_hooks-crd_server_appointment_book-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_appointment_book-crd_launch_smart_app_card_validation, crd_server-crd_server_hooks-crd_server_encounter_start-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_encounter_start-crd_launch_smart_app_card_validation, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_launch_smart_app_card_validation, crd_server-crd_server_hooks-crd_server_order_select-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_order_select-crd_launch_smart_app_card_validation, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_launch_smart_app_card_validation, crd_server-crd_server_hooks-crd_server_order_sign-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_order_sign-crd_launch_smart_app_card_validation" -hl7.fhir.us.davinci-crd_2.0.1,259,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference,[For External Reference cards with `Card.link` t]he `Link.type` SHALL have a type of “absolute”.,SHALL,Server,,,,"3.1.07, 3.2.07, 3.3.07, 3.4.07, 3.5.07, 3.6.07","crd_server-crd_server_hooks-crd_server_appointment_book-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_encounter_start-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_order_select-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_external_reference_card_validation, crd_server-crd_server_hooks-crd_server_order_sign-crd_external_reference_card_validation" +hl7.fhir.us.davinci-crd_2.0.1,258,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference,"Card with one or more links to external web pages, PDFs, or other resources that provide relevant coverage information ... SHALL have at least one `Card.link`.",SHALL,Server,,,,"3.1.3.03, 3.1.3.04, 3.2.3.03, 3.2.3.04, 3.3.3.03, 3.3.3.04, 3.4.3.03, 3.4.3.04, 3.5.3.03, 3.5.3.04, 3.6.3.03, 3.6.3.04","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_launch_smart_app_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_launch_smart_app_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_launch_smart_app_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_launch_smart_app_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_launch_smart_app_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_launch_smart_app_card_validation" +hl7.fhir.us.davinci-crd_2.0.1,259,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference,[For External Reference cards with `Card.link` t]he `Link.type` SHALL have a type of “absolute”.,SHALL,Server,,,,"3.1.3.03, 3.2.3.03, 3.3.3.03, 3.4.3.03, 3.5.3.03, 3.6.3.03","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_external_reference_card_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_external_reference_card_validation" hl7.fhir.us.davinci-crd_2.0.1,260,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference,"[A]n “External Reference” card [Card with one or more links to external web pages, PDFs, or other resources] SHOULD contain a summary of the actionable information from the external reference.",SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,261,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference,"[L]inks provided [in cards with one or more links to external web pages, PDFs, or other resources] SHOULD be ‘deep’ links that take the user to the specific place in the documentation relevant to the current hook context to minimize provider reading and navigation time.",SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,262,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,[For the coverage information response type] qualifiers around when the coverage assertion is considered valid SHALL be included as part of the annotation,SHALL,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,264,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"If multiple extension repetitions are present, all repetitions referencing differing insurance (coverage-information.coverage) SHALL have distinct coverage-assertion-ids and satisfied-pa-ids (if present).",SHALL,Server,,,,"3.1.11, 3.2.11, 3.3.11, 3.4.11, 3.5.11, 3.6.11","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_validation" -hl7.fhir.us.davinci-crd_2.0.1,265,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"Where multiple repetions apply to the same coverage, they *SHALL have the same coverage-assertion-ids and satisfied-pa-ids (if present).",SHALL,Server,,,,"3.1.11, 3.2.11, 3.3.11, 3.4.11, 3.5.11, 3.6.11","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_validation, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.0.1,264,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"If multiple extension repetitions are present, all repetitions referencing differing insurance (coverage-information.coverage) SHALL have distinct coverage-assertion-ids and satisfied-pa-ids (if present).",SHALL,Server,,,,"3.1.3.07, 3.2.3.07, 3.3.3.07, 3.4.3.07, 3.5.3.07, 3.6.3.07","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.0.1,265,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"Where multiple repetions apply to the same coverage, they *SHALL have the same coverage-assertion-ids and satisfied-pa-ids (if present).",SHALL,Server,,,,"3.1.3.07, 3.2.3.07, 3.3.3.07, 3.4.3.07, 3.5.3.07, 3.6.3.07","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_validation" hl7.fhir.us.davinci-crd_2.0.1,267,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,[For the coverage information response type] payers SHALL NOT send a system action to update the order [when coverage details have been returned previously] unless something is new.,SHALL NOT,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,268,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,Payers SHOULD take into account the previous decision in deciding how much processing is necessary before returning a response,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,269,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"If a coverage-information extension indicates the need to collect additional information (via ‘info-needed’), the extension SHOULD include a reference to the Questionnaire(s) to be completed.",SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,270,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"If the payer does not support DTR for the type of information needed, the CRD service MAY provide a ‘link’ or ‘information’ card pointing to the forms or portal to use to capture the additional information",SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,271,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,[Where the CRD service provides a ‘link’ or ‘information’ card] The link SHOULD NOT require user authentication (i.e. no log-on needed) when accessing downloadable forms.,SHOULD NOT,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,272,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed ... appointment being updated SHALL comply with the ... [profile-appointment](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-appointment.html) [profile]",SHALL,Server,,,,"3.1.10, 3.2.10, 3.3.10, 3.4.10, 3.5.10, 3.6.10","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received" -hl7.fhir.us.davinci-crd_2.0.1,273,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [device] order ... being updated SHALL comply with the ... [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) [profile]",SHALL,Server,,,,"3.1.10, 3.2.10, 3.3.10, 3.4.10, 3.5.10, 3.6.10","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received" -hl7.fhir.us.davinci-crd_2.0.1,274,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [medication] order ... being updated SHALL comply with the ... [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) [profile]",SHALL,Server,,,,"3.1.10, 3.2.10, 3.3.10, 3.4.10, 3.5.10, 3.6.10","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received" -hl7.fhir.us.davinci-crd_2.0.1,275,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [nutrition] order ... being updated SHALL comply with the ... [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) [profile]",SHALL,Server,,,,"3.1.10, 3.2.10, 3.3.10, 3.4.10, 3.5.10, 3.6.10","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received" -hl7.fhir.us.davinci-crd_2.0.1,276,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [service] order … being updated SHALL comply with the ... [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) [profile]",SHALL,Server,,,,"3.1.10, 3.2.10, 3.3.10, 3.4.10, 3.5.10, 3.6.10","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received" -hl7.fhir.us.davinci-crd_2.0.1,277,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [vision] order … being updated SHALL comply with the ... [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) [profile]",SHALL,Server,,,,"3.1.10, 3.2.10, 3.3.10, 3.4.10, 3.5.10, 3.6.10","crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_start-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_select-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_coverage_info_system_action_received, crd_server-crd_server_hooks-crd_server_order_sign-crd_coverage_info_system_action_received" +hl7.fhir.us.davinci-crd_2.0.1,272,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed ... appointment being updated SHALL comply with the ... [profile-appointment](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-appointment.html) [profile]",SHALL,Server,,,,"3.1.3.06, 3.2.3.06, 3.3.3.06, 3.4.3.06, 3.5.3.06, 3.6.3.06","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_received" +hl7.fhir.us.davinci-crd_2.0.1,273,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [device] order ... being updated SHALL comply with the ... [profile-devicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) [profile]",SHALL,Server,,,,"3.1.3.06, 3.2.3.06, 3.3.3.06, 3.4.3.06, 3.5.3.06, 3.6.3.06","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_received" +hl7.fhir.us.davinci-crd_2.0.1,274,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [medication] order ... being updated SHALL comply with the ... [profile-medicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) [profile]",SHALL,Server,,,,"3.1.3.06, 3.2.3.06, 3.3.3.06, 3.4.3.06, 3.5.3.06, 3.6.3.06","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_received" +hl7.fhir.us.davinci-crd_2.0.1,275,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [nutrition] order ... being updated SHALL comply with the ... [profile-nutritionorder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) [profile]",SHALL,Server,,,,"3.1.3.06, 3.2.3.06, 3.3.3.06, 3.4.3.06, 3.5.3.06, 3.6.3.06","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_received" +hl7.fhir.us.davinci-crd_2.0.1,276,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [service] order … being updated SHALL comply with the ... [profile-servicerequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) [profile]",SHALL,Server,,,,"3.1.3.06, 3.2.3.06, 3.3.3.06, 3.4.3.06, 3.5.3.06, 3.6.3.06","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_received" +hl7.fhir.us.davinci-crd_2.0.1,277,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"When using this [coverage information] response type, the proposed [vision] order … being updated SHALL comply with the ... [profile-visionprescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html) [profile]",SHALL,Server,,,,"3.1.3.06, 3.2.3.06, 3.3.3.06, 3.4.3.06, 3.5.3.06, 3.6.3.06","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_coverage_info_system_action_received, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_coverage_info_system_action_received" hl7.fhir.us.davinci-crd_2.0.1,279,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information,"CRD ... services SHALL support the new CDS Hooks system action functionality to cause annotations to automatically be stored on the relevant request, appointment, etc. without any user intervention.",SHALL,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,282,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,[for the Propose Alternate Request response type] Each suggestion SHOULD contain either a single “update” action to revise the existing proposed order; or a “delete” action for the current proposed order and a “create” action for the new proposed order,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,283,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request,The choice of “update” vs. “delete + create” SHOULD be based on how significant the change is and how relevant other decision support on the original request will still be,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,296,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion,"Instead of using a card, [for the Request form completion response type] CRD services MAY opt to use a [systemAction](https://cds-hooks.hl7.org/2.0/#system-action) instead",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,298,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion,This [Request form completion] card type SHOULD only be used when DTR is not available or applicable,SHOULD,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,299,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion,"When using this [Request form completion] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-taskquestionaire](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-taskquestionnaire.html) profile",SHALL,Server,,,,"3.1.12, 3.2.12, 3.3.12, 3.4.14, 3.5.12, 3.6.14","crd_server-crd_server_hooks-crd_server_appointment_book-crd_request_form_completion_response_validation, crd_server-crd_server_hooks-crd_server_encounter_start-crd_request_form_completion_response_validation, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_request_form_completion_response_validation, crd_server-crd_server_hooks-crd_server_order_select-crd_request_form_completion_response_validation, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_request_form_completion_response_validation, crd_server-crd_server_hooks-crd_server_order_sign-crd_request_form_completion_response_validation" +hl7.fhir.us.davinci-crd_2.0.1,299,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion,"When using this [Request form completion] response type, the proposed orders (and any associated resources) SHALL comply with the [profile-taskquestionaire](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-taskquestionnaire.html) profile",SHALL,Server,,,,"3.1.3.08, 3.2.3.08, 3.3.3.08, 3.4.3.10, 3.5.3.08, 3.6.3.10","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_request_form_completion_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_request_form_completion_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_request_form_completion_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_request_form_completion_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_request_form_completion_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_request_form_completion_response_validation" hl7.fhir.us.davinci-crd_2.0.1,300,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion,[for the Request form completion response type] CRD Servers SHOULD use questionnaires that are compliant with either the [Argonaut Questionnaire profiles](https://github.com/argonautproject/questionnaire) (for forms to be completed within the CRD client) or the [Structured Data Capture profiles](http://hl7.org/fhir/uv/sdc/index.html) (for more sophisticated forms to be created within a SMART on FHIR app or through an external service).,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,302,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information,"Instead of using a card, [for the Create or update coverage information response type] CRD services MAY opt to use a [systemAction](https://cds-hooks.hl7.org/2.0/#system-action) instead",MAY,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,305,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information,This [Create or update coverage information] CRD capability SHALL NOT be used in situations where regulation dictates the use of the X12 functionality.,SHALL NOT,Server,,,,"","" -hl7.fhir.us.davinci-crd_2.0.1,306,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information,This [Create or update coverage information] response will contain a single suggestion. The primary action will either be a suggestion to “update” an existing Coverage instance (if the CRD Client already has one) or to “create” a new Coverage instance if the CRD Server is aware of Coverage that the CRD Client is not.,SHALL,Server,,,,"3.1.13, 3.2.13, 3.3.13, 3.4.15, 3.5.13, 3.6.15","crd_server-crd_server_hooks-crd_server_appointment_book-crd_create_or_update_coverage_info_response_validation, crd_server-crd_server_hooks-crd_server_encounter_start-crd_create_or_update_coverage_info_response_validation, crd_server-crd_server_hooks-crd_server_encounter_discharge-crd_create_or_update_coverage_info_response_validation, crd_server-crd_server_hooks-crd_server_order_select-crd_create_or_update_coverage_info_response_validation, crd_server-crd_server_hooks-crd_server_order_dispatch-crd_create_or_update_coverage_info_response_validation, crd_server-crd_server_hooks-crd_server_order_sign-crd_create_or_update_coverage_info_response_validation" +hl7.fhir.us.davinci-crd_2.0.1,306,https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information,This [Create or update coverage information] response will contain a single suggestion. The primary action will either be a suggestion to “update” an existing Coverage instance (if the CRD Client already has one) or to “create” a new Coverage instance if the CRD Server is aware of Coverage that the CRD Client is not.,SHALL,Server,,,,"3.1.3.09, 3.2.3.09, 3.3.3.09, 3.4.3.11, 3.5.3.09, 3.6.3.11","crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-crd_v201_create_or_update_coverage_info_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_start-Group03-crd_v201_create_or_update_coverage_info_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_encounter_discharge-Group03-crd_v201_create_or_update_coverage_info_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_select-Group03-crd_v201_create_or_update_coverage_info_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-crd_v201_create_or_update_coverage_info_response_validation, crd_server-crd_v201_server_hooks-crd_v201_server_order_sign-Group03-crd_v201_create_or_update_coverage_info_response_validation" hl7.fhir.us.davinci-crd_2.0.1,309,https://hl7.org/fhir/us/davinci-crd/STU2/implementation.html#impact-on-payer-processes,CRD Servers will need to support … clinical terminologies [passed to the CRD server by the client] or map them to internally used billing terminologies when determining decision support results - such as whether a therapy is covered or requires prior authorization.,SHOULD,Server,,,,"","" hl7.fhir.us.davinci-crd_2.0.1,310,https://hl7.org/fhir/us/davinci-crd/STU2/implementation.html#impact-on-payer-processes,"Services will also need to consider that the mapping they perform between clinical terminologies and billing codes may be different than the bill coding process performed by the client system when claims are eventually submitted. This may mean that assertions about coverage or prior authorization requirements will need to be expressed conditionally. E.g. “Provided this service is billed as X, Y or Z, then prior authorization is not needed”.",SHOULD,Server,,,,"","" diff --git a/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv b/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv new file mode 100644 index 00000000..9a89305b --- /dev/null +++ b/lib/davinci_crd_test_kit/requirements/generated/crd_server_v221_requirements_coverage.csv @@ -0,0 +1,143 @@ +Req Set,ID,URL,Requirement,Conformance,Actors,Conditionality,Not Tested Reason,Not Tested Details,Da Vinci CRD Server v2.2.1 Test Suite Short ID(s),Da Vinci CRD Server v2.2.1 Test Suite Full ID(s) +hl7.fhir.us.davinci-crd_2.2.1,billopt-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-2,CRD servers **SHALL NOT** depend on the billing-options extension being present in order to provide a response.,SHALL NOT,CRD Server,true,,,3.7.03,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-verify_response_without_billing_options +hl7.fhir.us.davinci-crd_2.2.1,billopt-3-A,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-3,"If codes are provided with the billing-options extension, CRD servers **SHALL** consider any codes provided",SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,billopt-3-B,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-billing-options.html#ci-c-billopt-3,"If codes are provided with the billing-options extension, CRD servers ... **MAY** consider additional codes determined by their own mapping when returning coverage information responses.",MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-2,CRD servers **SHALL** be able to handle all three US Core versions.,SHALL,CRD Server,false,,,3.7.04,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-crd_v221_supported_us_core_versions +hl7.fhir.us.davinci-crd_2.2.1,conf-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-4,CRD servers **SHALL** leverage mustSupport elements as available and appropriate to provide decision support.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-5,CRD servers **SHALL** populate mustSupport elements if an appropriate value exists.,SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-7,"When preparing [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) responses, CRD servers **SHALL NOT** depend on or set expectations for the inclusion of resource instances not compliant with profiles defined in this guide, HRex, or US Core.",SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-8,CRD servers **SHALL NOT** depend on or set expectations for the inclusion of any data elements not marked as mandatory (min cardinality >= 1) or mustSupport in those profiles.,SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-9,"When preparing [response types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html) other than Coverage Information, CRD servers **SHOULD** limit themselves to the same resource instances and data elements as permitted above for Coverage Information responses.",SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-11,"implementations **MAY**, by mutual agreement, pre-adopt the use of those additional CI-build profiles and/or mustSupport data elements and not be considered in violation of #1 or #3 above.",MAY,"CRD Client,CRD Server",true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-12,"Where cardinality and other constraints present in profiles allow data elements to be omitted, CRD compliant systems **SHALL NOT** treat the omission of those elements as an error.",SHALL NOT,"CRD Client,CRD Server",true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,conf-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformance.html#ci-c-conf-13,CRD clients and services and **SHALL** use standard CRD data elements (i.e. elements found within CRD-defined or inherited profiles and marked as mandatory or mustSupport) to communicate needed data where the elements are intended to convey such information.,SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,covinfo-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html#ci-c-covinfo-1,The union of the scoping elements in each coverage-information repetition **SHOULD** be disjoint.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,covinfo-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html#ci-c-covinfo-2,"If there are multiple reason repetitions, each repetition **SHOULD** make clear exactly what aspect of the coverage information assertion the reason applies to.",SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-1,CRD servers **SHALL** declare at least one supported CRD version for each supported hook.,SHALL,CRD Server,false,,,1.03,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_services_validation +hl7.fhir.us.davinci-crd_2.2.1,dev-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-2,"If the services endpoint can handle multiple CRD versions, it **SHALL** declare all versions it supports.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-4,Each configuration option SHALL include four mandatory elements.,SHALL,CRD Server,false,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration +hl7.fhir.us.davinci-crd_2.2.1,dev-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-5,"CRD servers **SHALL**, at minimum, offer configuration options for each type of card they support (with a code corresponding to the [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html) ValueSet and a type of 'boolean', where setting the flag to false will result in the server not returning any cards of the specified type).",SHALL,CRD Server,false,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration +hl7.fhir.us.davinci-crd_2.2.1,dev-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-6,"Guidance can be given about allowed combinations in descriptions, but CRD servers **SHALL** gracefully handle disallowed/nonsensical combinations.",SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-7,Configuration codes **SHALL** be valid JSON property names and **SHALL** come from the [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html) list if an applicable type is in that list.,SHALL,CRD Server,true,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration +hl7.fhir.us.davinci-crd_2.2.1,dev-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-8,"Configuration codes, names, and descriptions **SHALL** be unique within a [CDS Service](http://cds-hooks.hl7.org/2026Jan/index.html#response) definition.",SHALL,CRD Server,false,,,1.04,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_configuration +hl7.fhir.us.davinci-crd_2.2.1,dev-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-9,"Configuration codes, names, and descriptions **SHOULD** be consistent across different hooks supported by the same payer when dealing with the same types of configuration options.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-10,CRD servers providing more than one type of coverage requirement information/guidance **SHOULD** expose configuration options allowing clients to dynamically control what information is returned by the service.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-14,CRD Servers **SHALL** behave in the manner prescribed by any supported configuration information received from the CRD Client.,SHALL,CRD Server,false,,,"3.1.3.11, 3.2.3.10, 3.3.3.10, 3.4.3.12, 3.5.3.11, 3.6.3.13","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_configuration" +hl7.fhir.us.davinci-crd_2.2.1,dev-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-15,CRD Servers **SHALL NOT** require the inclusion of configuration information in a hook call (i.e. no hook invocation is permitted to fail because configuration information was not included).,SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-17,CRD Servers **SHALL** ignore unsupported configuration information.,SHALL,CRD Server,false,,,"3.1.3.12, 3.2.3.11, 3.3.3.11, 3.4.3.13, 3.5.3.12, 3.6.3.14","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_unknown_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_unknown_configuration" +hl7.fhir.us.davinci-crd_2.2.1,dev-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-19,"When included with a Task, the creation of the Questionnaire needs to be conditional - it **SHOULD** only occur if that specific Questionnaire version does not already exist",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-20,the CRD server **SHALL** query to determine if the client has a copy of the Questionnaire before sending the request.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-24,"If a hook service is invoked on a collection of resources, all cards returned that are specific to only a subset of the resources passed as context **SHALL** disambiguate in the `detail` element which resources they are associated with in a human-friendly way.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,dev-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#ci-c-dev-25,"As well, cards **SHOULD** include the associated-resource extension to allow computable linkage.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-1,"CRD servers and CRD clients **MAY** mutually agree to support additional hooks, additional card patterns, additional resources, additional extensions, etc. not found in this specification.",MAY,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-2,CRD servers **SHALL** return responses for all supported hooks and **SHALL** respond within the required time 90% of the time.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-5,CRD servers **SHOULD** query all data necessary to make their coverage determination decisions if that data is available for query in the EHR and that data is not returned in prefetch.,SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-9,"CRD servers **SHALL** ensure that the guidance returned with respect to coverage and prior authorizations (e.g., assertions that a service is covered, or prior authorization is not necessary) is as accurate as guidance that would be provided by other means (e.g., portals, phone calls).",SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-10,"Also, coverage and authorization guidance **SHOULD** allow for possible variances in coding and submission.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-11,CRD servers **SHALL** retain all coverage guidance provided and take into account answers provided via CRD (and DTR) when subsequently adjudicating claims.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-13,CRD servers **SHALL** ensure that CDS Hooks return only messages and information relevant and useful to the intended recipient.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-14,"If a CRD server supports [endpoint discovery](http://hl7.org/fhir/us/davinci-hrex/1.2.0/endpoint-discovery.html), they **SHALL** have at most a single endpoint for each coverage (e.g., Medicare, Medicaid, or commercial) they provide coverage under.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-15,"If a CRD server does not support endpoint discovery, they **SHALL** expose only one CRD endpoint capable of handling all coverages.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-18,CRD clients and servers **MAY** leverage the [payer registry](http://hl7.org/fhir/us/davinci-pdex-plan-net) developed by PDex (which will eventually fold into the [national directory under FAST](https://confluence.hl7.org/display/FAST/National+Healthcare+Directory)) as a means of determining which endpoints exist for which payers as candidates for configuration.,MAY,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-24,"For this release of the IG, conformant CRD clients and servers **SHALL** support the CDS Hooks prefetch capability.",SHALL,"CRD Client,CRD Server",false,,,1.05,crd_server_v221-crd_v221_server_discovery_group-crd_v221_discovery_prefetch_support +hl7.fhir.us.davinci-crd_2.2.1,found-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-26,"They **MAY** include more and/or less prefetch requests than described in 'standard' prefetch section below, based on which data is desired.",MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-27,Prefetch requests **SHOULD** only include information that is always expected to be needed for each hook invocation.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-28,"When information is only needed for certain invocations of the hook (e.g., for specific types of medications or services), that information **SHOULD** only be retrieved by query using the provided token, not requested universally via prefetch.",SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-29,Servers **SHALL** use prefetch expressions in the manner described below if those data elements are relevant to their coverage determination or other decision support.,SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-32,HTTP 412 responses **SHALL NOT** be used in situations where the prefetch was provided or the query was successfully performed but the record in question did not have all the data the payer might have needed/desired.,SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-33,CRD clients and servers **SHALL** ignore unexpected elements when processing instances.,SHALL,"CRD Client,CRD Server",false,,,"3.1.3.14, 3.2.3.13, 3.3.3.13, 3.4.3.15, 3.5.3.14, 3.6.3.16","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_unknown_cds_hooks_elements, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_unknown_cds_hooks_elements" +hl7.fhir.us.davinci-crd_2.2.1,found-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-34,CRD servers **SHALL** provide what coverage requirements they can based on the information available.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-37,"Therefore, in addition to any logging performed for security purposes, both CRD clients and CRD servers **SHALL** retain logs of all CRD-related hook invocations and their responses for access in the event of a dispute.",SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,found-40,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/foundation.html#ci-c-found-40,Conformant systems **SHOULD** omit non-significant whitespace in transmitted instances for performance reasons.,SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-4,CRD Servers conforming to this implementation guide **SHALL** provide a service for all hooks and order resource types required of CRD clients by this implementation guide unless the server has determined that the hook will not be reasonably useful in determining coverage or documentation expectations for the types of coverage provided.,SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-5,CRD Clients and CRD Servers **MAY** choose to support additional hooks available in the registry on the [CDS Hooks continuous integration build](https://build.fhir.org/ig/HL7/cds-hooks-library) or custom hooks defined elsewhere.,MAY,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-6,"When supporting hooks not covered by this guide, systems **SHOULD** adhere to the general conformance expectations defined in this specification for those additional hooks.",SHOULD,"CRD Client,CRD Server",true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-9,"If the CRD Server encounters an error when processing the request, the system **SHALL** return an appropriate error HTTP Response Code, starting with the digit ""4"" or ""5"", indicating that there was an error.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-10,"If an issue is identified at a layer of the CRD Server that is FHIR aware (e.g. not a ""wrong endpoint"" or ""not authorized"" issue), the server **SHALL** provide an OperationOutcome for internal issue tracking by the client system.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-13,CRD Servers SHALL use the 400 and 422 codes in a manner consistent with the FHIR RESTful Create Action,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-14,"If a CRD server's validation process does not differentiate between validation issues stemming from the JSON syntax validation, FHIR core validation, CDS Hooks validation, and CRD-specific validation, it **MAY** treat all validation rules as 400 errors.",MAY,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-16,"Unless reporting an error or coverage information already exists and there is no new information, CRD Servers **SHALL** include a Coverage Information system action in the response for 'primary' hooks, even if the response indicates that further information is needed or that the level of detail provided is insufficient to determine coverage.",SHALL,CRD Server,false,,,"3.1.3.08, 3.5.3.08, 3.6.3.08","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information" +hl7.fhir.us.davinci-crd_2.2.1,hook-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-19,"If Coverage Information is returned for these hooks, it **SHALL NOT** include messages indicating a need for [clinical](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-AdditionalDocumentation.html) or [administrative](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-AdditionalDocumentation.html) information, as such information is expected to be made available later in the process and therefore such guidance is not useful.",SHALL NOT,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-22,CRD servers **SHALL NOT** depend on data not covered by the identified profiles in order to return valid coverage-information responses.,SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-23,CRD Servers **SHALL** handle unrecognized context elements by ignoring them.,SHALL,CRD Server,false,,,"3.1.3.13, 3.2.3.12, 3.3.3.12, 3.4.3.14, 3.5.3.13, 3.6.3.15","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_unknown_context, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_unknown_context" +hl7.fhir.us.davinci-crd_2.2.1,hook-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-25,CRD Servers **MAY** use the appointment-book hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-26,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the appointment-book hook.",SHALL,"CRD Client,CRD Server",false,,,3.1.3.08,crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information +hl7.fhir.us.davinci-crd_2.2.1,hook-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-28,CRD Servers **MAY** use the encounter-start hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-30,"Coverage requirements **SHOULD** be limited only to those resources that are included in the `dispatchedOrders` context, though the content of other resources **SHOULD** also be considered before making recommendations about what additional actions are necessary.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-32,CRD Servers **MAY** use the order-dispatch hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-33,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-dispatch hook.",SHALL,"CRD Client,CRD Server",false,,,3.5.3.08,crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information +hl7.fhir.us.davinci-crd_2.2.1,hook-34,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-34,"Coverage requirements **SHOULD** be limited only to those resources that are included in the `selections` context, though the content of other resources **SHOULD** also be considered before making recommendations about what additional actions are necessary.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-38,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-38,CRD Servers **MAY** use the order-sign hook as a basis for associating a patient with a particular practitioner from a payer attribution perspective.,MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,hook-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/hooks.html#ci-c-hook-39,"CRD clients and servers **SHALL**, at minimum, support returning and processing the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) system action for all invocations of the order-select hook.",SHALL,"CRD Client,CRD Server",false,,,3.6.3.08,crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information +hl7.fhir.us.davinci-crd_2.2.1,impl-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-2,CRD servers **SHOULD** strive to achieve a minimum of 3-9s availability for their services and strive to provide at least some level of useful response to CRD clients even if some of their back-end systems are unavailable.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,impl-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-3,"Even if implemented using multiple components, there is still a requirement that the exchanges between the provider HIT (including any ePA coordinators) and the payer HIT (including any ePA coordinators) **SHALL** replicate all of the defined exchanges between provider and payer.",SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,impl-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/implementation.html#ci-c-impl-5,"Where a CRD server has made inferences beyond what is explicit in the CRD request, the response **SHOULD** make clear what assumptions around billing codes, in/out-of-network, delivery location were made in providing the response.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,metric-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/metrics.html#ci-c-metric-1,"Each of these IGs recommends a set of metrics that **SHOULD** or **MAY** be collected by their respective implementations to facilitate the evaluation of adoption, functionality, processes, and improved outcomes.",SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,ops-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/operational.html#ci-c-ops-1,"CRD clients and servers **SHOULD** support encounter-start and order-select, both to allow payer caching and to allow payers to return useful responses when possible (e.g. coverage expired, service not covered) with the limited information available in those hooks.",SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,prof-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#ci-c-prof-15,CRD servers **SHOULD** start sending the ActReason codes in parallel with the CRD-specific codes once they are available to ease transition in future releases when the CRD value set will be deprecated and eventually retired.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-1,"The `Card.indicator` **SHOULD** be populated from the perspective of the clinical decision maker, not the payer",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-2,Most Coverage Requirements **SHOULD** be marked as 'info'.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-3,All `Card.suggestion` elements **SHALL** populate the Suggestion.uuid element.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-4,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-4,"The `Card.source.label` **SHALL** be populated with an insurer name that the user and patient are likely to recognize (i.e., the responsible insurer on the patient's insurance card), including in situations where coverage recommendations are being returned by a benefits manager or intermediary operating the CRD server on behalf of the payer.",SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.2.3.01, 3.3.3.01, 3.4.3.01, 3.5.3.01, 3.6.3.01","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-5,"`Card.source.topic` **SHALL** be populated, and has an [extensible](http://www.hl7.org/fhir/terminologies.html#extensible) binding to the ValueSet [CRD Response Types](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-cardType.html).",SHALL,CRD Server,false,,,"2.3.01, 3.1.3.01, 3.2.3.01, 3.3.3.01, 3.4.3.01, 3.5.3.01, 3.6.3.01","crd_server_v221-crd_v221_server_demonstrate_hook_response-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_service_response_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_service_response_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-6,`Card.summary` **SHOULD** provide actionable information.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-7,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-7,`Card.detail` and/or external links **SHOULD** only be provided when coverage recommendations cannot be clearly provided in the 140-character limit of `Card.summary`.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-8,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-8,"`Card.detail` **SHOULD** provide graduated information, with critical information being provided in the first paragraph and less critical information towards the end of the page.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-9,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-9,"`Card.detail` **SHOULD** provide enough context that a user can determine whether it is worth their time to launch an app or follow an external link, ideally providing a sense of where to look for and how to use whatever link or app they launch in the specific context of the order they are making.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-10,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-10,"While links are permitted in the markdown content of `Card.detail`, support for this is not universal, so links **SHOULD** also be provided in `[Card.link](http://Card.link)`.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-11,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-11,"CRD client systems might not support all card capabilities, therefore card options **SHOULD** provide sufficient information for a user to perform record changes manually if automated support is not available.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-12,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-12,"Where [systemActions](http://cds-hooks.hl7.org/2026Jan/index.html#system-action) are used, CRD servers **SHOULD NOT** return equivalent information in a card for user display.",SHOULD NOT,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-13,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-13,All CRD responses **SHALL** comply with the general profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponseBase.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-14,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-14,Conformant CRD clients and services **SHALL** support the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#coverage-information-response-type) response type.,SHALL,"CRD Client,CRD Server",false,,,3.7.01,crd_server_v221-crd_v221_server_hooks-crd_v221_server_required_card_response_validation-crd_v221_coverage_info_system_action_across_hooks_validation +hl7.fhir.us.davinci-crd_2.2.1,resp-15,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-15,Conformant CRD clients and services **SHOULD** support the additional (non-coverage information) types defined by this guide.,SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-16,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-16,CRD servers that provide decision support for domains outside of coverage and/or documentation requirements **SHOULD** take reasonable steps to check that the CRD client does not have the information within its store that would allow it to detect the issue itself.,SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-17,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-17,"CRD servers **SHALL NOT** use ""External Reference"" cards to direct users to a portal for the purpose of initiating prior authorization or determining coverage.",SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-18,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-18,The card **SHALL** have at least one `[Card.link](http://Card.link)`.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-19,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-19,"The `Link.type` **SHALL** have a type of ""absolute"".",SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-20,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-20,"When reasonable, an ""External Reference"" card **SHOULD** contain a summary of the actionable information from the external reference in the `detail` element.",SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-21,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-21,"As much as technically possible, links provided **SHOULD** be 'deep' links that take the user to the specific place in the documentation relevant to the current hook context to minimize provider reading and navigation time.",SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-22,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-22,External Reference responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-externalReference.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-23,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-23,CRD servers **SHALL NOT** use Instructions Response cards to direct users to a portal for the purpose of initiating prior authorization or determining coverage. Use the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/conformancedetails.html#coverage-information-response-type) response instead.,SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-24,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-24,Instructions responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-instructions.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-25,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-25,"Regardless of the content, this ""Coverage Information"" response type **SHALL NOT** use a card.",SHALL NOT,CRD Server,false,,,"3.1.3.07, 3.5.3.07, 3.6.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-26,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-26,"CRD servers **SHALL** support supplying coverage information for all primary hooks: order-sign, order-dispatch, and appointment-book.",SHALL,CRD Server,false,,,"3.1.3.06, 3.5.3.06, 3.6.3.06","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_system_action_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_system_action_received, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_system_action_received" +hl7.fhir.us.davinci-crd_2.2.1,resp-27,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-27,CRD servers **MAY** support supplying coverage information for all other (non-primary) hooks.,MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-28,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-28,CRD servers **SHALL** supply coverage information for all hooks where they support it unless the EHR sends a configuration option asking them not to.,SHALL,CRD Server,true,,,"3.1.3.08, 3.1.3.11, 3.2.3.10, 3.3.3.10, 3.4.3.12, 3.5.3.08, 3.5.3.11, 3.6.3.08, 3.6.3.13","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_coverage_info_configuration, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_coverage_info_configuration" +hl7.fhir.us.davinci-crd_2.2.1,resp-29,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-29,"If coverage information is evaluated, a system action **SHALL** be returned for each in-scope request resource unless that request resource already has a coverage-information extension, and the CRD server has no new information to add.",SHALL,CRD Server,true,,,"3.1.3.08, 3.5.3.08, 3.6.3.08","crd_server_v221-crd_v221_server_hooks-crd_v221_server_appointment_book-Group03-crd_v221_all_responses_include_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_dispatch-Group03-crd_v221_order_dispatch_coverage_information, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_all_responses_include_coverage_information" +hl7.fhir.us.davinci-crd_2.2.1,resp-30,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-30,Such qualifiers around when the coverage assertion is considered valid **SHALL** be included as part of the annotation.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-32,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-32,"If multiple extension repetitions of the coverage-information extension are present, all repetitions referencing differing insurance (coverage-information.coverage) **SHALL** have distinct coverage-assertion-ids and satisfied-pa-ids, if present.",SHALL,CRD Server,true,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-33,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-33,"Where multiple repetitions apply to the same coverage, they **MAY** have the same coverage-assertion-ids and satisfied-pa-ids (if present).",MAY,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-35,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-35,"However, CRD servers **SHALL NOT** send a `systemAction` to update the order unless something is new or changed.",SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-36,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-36,CRD servers **SHOULD** take into account the previous decision in deciding how much processing is necessary before returning a response.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-37,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-37,"When returning a `systemAction` to update a resource with the ""Coverage Information"" response type, the resource content **SHALL NOT** make changes to any data elements other than adding or modifying coverage-information extensions.",SHALL NOT,CRD Server,true,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-38,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-38,"If a *coverage-information* extension indicates the need to collect additional information (via 'doc-needed'), the extension **SHOULD** include a reference to the questionnaire(s) to be completed.",SHOULD,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-39,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-39,CRD Servers **SHOULD** access information via the FHIR Rest API as part of CRD and only fall back to data capture via DTR when computable access is not possible.,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-42,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-42,The CRD server **SHOULD** either prompt for the additional needed information using DTR or return a coverage-information extension indicating that the patient is not covered with a reason indicating the issue (e.g. the member could not be found/resolved).,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-43,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-43,"If the CRD server encounters technical issues that prevent it from determining a coverage, prior auth, or documentation requirement response (e.g. due to internal communication issues, authorization failure, temporary unavailability of the CRD client's FHIR API, etc.), it **SHALL** indicate ""indeterminate"" in the appropriate element with a reason code of [technical](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld) and additional details in the reason.text.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-44,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-44,"If the CRD server is unable to resolve the patient for a reason other than technology failure, the Coverage Information **SHALL** indicate ""not-covered"" in 'coverage' with a reason code of [no-member-found](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld).",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-45,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-45,"If the CRD server is able to resolve the patient but they do not have active coverage or cannot resolve to a single coverage, the Coverage Information **SHALL** indicate ""not-covered"" with a reason of either [coverage-not-found](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld) or [no-active-coverage](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/ValueSet-coverageAssertionReasons.html#logical-definition-cld), as appropriate.",SHALL,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-47,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-47,"When using the ""Coverage Information"" response type, the proposed order or appointment being submitted for update SHALL comply with the required profiles",SHALL,CRD Server,false,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-48,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-48,"CRD clients and servers **SHALL** support the new CDS Hooks system action functionality to cause annotations to automatically be stored on the relevant request, appointment, etc. without any user intervention.",SHALL,"CRD Client,CRD Server",false,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-51,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-51,"Where CRD servers need data that was not transmitted, they **SHOULD** attempt to infer values from elements that are present.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-52,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-52,Coverage Information responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-coverageInformation.html).,SHALL,CRD Server,false,,,"3.2.3.07, 3.3.3.07, 3.4.3.07","crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_start-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_encounter_discharge-Group03-crd_v221_coverage_info_system_action_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_coverage_info_system_action_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-53,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-53,"Each suggestion **SHOULD** contain either a single ""update"" action to revise the existing proposed order; or a ""delete"" action for the current proposed order and a ""create"" action for the new proposed order.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-54,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-54,"The choice of ""update"" vs. ""delete + create"" **SHOULD** be based on how significant the change is and how relevant the other decision support on the original request will still be.",SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-55,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-55,"When using the ""Propose Alternate Request"" response type, the proposed orders (and any associated resources) SHALL comply with the required profiles.",SHALL,CRD Server,false,,,"3.4.3.08, 3.6.3.09","crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_select-Group03-crd_v221_propose_alternate_request_card_validation, crd_server_v221-crd_v221_server_hooks-crd_v221_server_order_sign-Group03-crd_v221_propose_alternate_request_card_validation" +hl7.fhir.us.davinci-crd_2.2.1,resp-56,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-56,Alternate Request responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-alternateRequest.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-57,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-57,"When using the ""Identify Additional Orders"" response type, the proposed orders and any associated resources SHALL comply with the required profiles",SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-58,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-58,Additional Orders responses **SHALL** comply with the logical model profile= found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-additionalOrders.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-59,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-59,The Request Form Completion response type **SHALL NOT** be used in place of DTR,SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-60,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-60,"Instead of using a card for ""Request Form Completion"", CRD servers **MAY** opt to use a [systemAction](http://cds-hooks.hl7.org/2026Jan/index.html#system-action).",MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-62,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-62,"When using the ""Request Form Completion"" response type, the resources in the card or system action SHALL comply with the required profiles",SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-63,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-63,CRD servers **SHOULD** use questionnaires that are compliant with either the [Argonaut questionnaire profiles](https://github.com/argonautproject/questionnaire) (for forms to be completed within the CRD client) or the [Structured Data Capture (SDC) profiles](http://hl7.org/fhir/uv/sdc/index.html) (for more sophisticated forms to be created within a SMART on FHIR app or through an external service).,SHOULD,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-65,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-65,Form Completion responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-formCompletion.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-66,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-66,"Instead of using a card for ""Update Coverage Records"", CRD servers **MAY** opt to use a [systemAction](http://cds-hooks.hl7.org/2026Jan/index.html#system-action) instead.",MAY,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-69,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-69,This Update Coverage Records capability **SHALL NOT** be used in situations where regulation dictates the use of the X12 functionality.,SHALL NOT,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-70,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-70,"If returning a card rather than a system action, the ""Update Coverage Records"" response type **SHOULD NOT** be returned for hook types that are likely to be triggered by clinical users rather than administrative staff. Cards of this type would be appropriate for hooks such as encounter-start or appointment-book but would not be appropriate for order-select or order-sign.",SHOULD NOT,CRD Server,true,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-71,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-71,Adjust Coverage responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-adjustCoverage.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,resp-72,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#ci-c-resp-72,Launch SMART responses **SHALL** comply with the logical model profile found [here](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-CRDHooksResponse-launchSMART.html).,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-1,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-1,Implementers SHALL adhere to inherited security and privacy rules,SHALL,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-2,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-2,"As per the CDS Hooks specification, communications between CRD clients and CRD servers **SHALL** use TLS.",SHALL,"CRD Client,CRD Server",false,,,1.01,crd_server_v221-crd_v221_server_discovery_group-crd_v221_server_tls_version_stu2 +hl7.fhir.us.davinci-crd_2.2.1,sec-3,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-3,CRD servers and CRD clients **SHOULD** enforce a minimum version and other TLS configuration requirements based on [HRex rules](http://hl7.org/fhir/us/davinci-hrex/1.2.0/security.html#exchange-security) for PHI exchange.,SHOULD,"CRD Client,CRD Server",false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-5,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-5,CRD servers **SHALL** use information received solely for coverage determination and decision support purposes.,SHALL,CRD Server,false,,,"","" +hl7.fhir.us.davinci-crd_2.2.1,sec-6,https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html#ci-c-sec-6,Servers **SHALL NOT** retain data received over the CRD interfaces for any purpose other than audit or providing context for form completion using DTR.,SHALL NOT,CRD Server,false,,,"","" diff --git a/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx b/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx new file mode 100644 index 00000000..7c1c4883 Binary files /dev/null and b/lib/davinci_crd_test_kit/requirements/hl7.fhir.us.davinci-crd_2.2.1_requirements.xlsx differ diff --git a/lib/davinci_crd_test_kit/routes/cds_services_discovery_handler.rb b/lib/davinci_crd_test_kit/routes/cds_services_discovery_handler.rb deleted file mode 100644 index a376e7f6..00000000 --- a/lib/davinci_crd_test_kit/routes/cds_services_discovery_handler.rb +++ /dev/null @@ -1,18 +0,0 @@ -module DaVinciCRDTestKit - module Routes - class CDSServicesDiscoveryHandler - def self.call(...) - new.call(...) - end - - def self.cds_services - @cds_services ||= File.read(File.join(__dir__, 'cds-services.json')) - end - - def call(_env) - # Check authorization header - [200, { 'Content-Type' => 'application/json' }, [self.class.cds_services]] - end - end - end -end diff --git a/lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb b/lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb deleted file mode 100644 index 0cedd85e..00000000 --- a/lib/davinci_crd_test_kit/routes/hook_request_endpoint.rb +++ /dev/null @@ -1,108 +0,0 @@ -require_relative '../gather_response_generation_data' -require_relative '../mock_service_response' -require_relative '../custom_service_response' -require_relative '../tags' - -module DaVinciCRDTestKit - class HookRequestEndpoint < Inferno::DSL::SuiteEndpoint - include DaVinciCRDTestKit::MockServiceResponse - include DaVinciCRDTestKit::GatherResponseGenerationData - include DaVinciCRDTestKit::CustomServiceResponse - - AVAILABLE_HOOKS = [ - 'appointment-book', - 'encounter-start', - 'encounter-discharge', - 'order-select', - 'order-sign', - 'order-dispatch' - ].freeze - - def request_body - @request_body ||= - JSON.parse(request.params.to_json) - end - - def test_run_identifier - "#{hook_name} #{iss}" - end - - def hook_name - @hook_name ||= request.params[:hook] - end - - def iss - @iss ||= - begin - payload, = JWT.decode(token, nil, false) - payload['iss'] - rescue JWT::DecodeError - nil - end - end - - def token - @token ||= request.headers['authorization']&.delete_prefix('Bearer ') - end - - def make_response - if hook_instance_already_used? - error_response( - "Invalid Request: Hook instance `#{request_body['hookInstance']}` has already been used in this session." - ) - elsif AVAILABLE_HOOKS.include?(hook_name) - send(:"gather_#{hook_name.gsub('-', '_')}_data") - request_coverage - response_body = hook_response - if response_body.present? - response.body = response_body.to_json - response.headers.merge!({ 'Content-Type' => 'application/json', 'Access-Control-Allow-Origin' => '*' }) - response.status = 200 - response.format = :json - end - else - error_response("Invalid Request: hook `#{hook_name}` is not supported by this server.") - end - rescue StandardError => e - error_response("Inferno failed to generate a response: #{e.message} at #{e.backtrace.first}", code: 500) - nil - end - - def hook_response - if custom_response_template.present? - build_custom_hook_response - else - build_mock_hook_response - end - rescue StandardError => e - error_response("Inferno failed to generate a response: #{e.message} at #{e.backtrace.first}", code: 500) - nil - end - - def hook_instance_already_used? - requests_repo.tagged_requests(test_run.test_session_id, [hook_instance_tag]).present? - end - - def tags - if hook_instance_already_used? - response.status = 400 - response.body = - "Invalid Request: Hook instance `#{request_body['hookInstance']}` has already been used in this session." - [] - elsif AVAILABLE_HOOKS.include?(hook_name) - [hook_instance_tag, DaVinciCRDTestKit.const_get(:"#{name.upcase}_TAG")] - else - error_response('Invalid Request: Request did not contain a valid hook in the `hook` field.') - end - end - - def error_response(error_message, code: 400) - response.status = code - response.body = error_message - end - - def name - hook_name.gsub('-', '_') - end - end -end diff --git a/lib/davinci_crd_test_kit/routes/jwk_set_endpoint_handler.rb b/lib/davinci_crd_test_kit/routes/jwk_set_endpoint_handler.rb deleted file mode 100644 index 44ad9de1..00000000 --- a/lib/davinci_crd_test_kit/routes/jwk_set_endpoint_handler.rb +++ /dev/null @@ -1,15 +0,0 @@ -require_relative '../jwks' - -module DaVinciCRDTestKit - module Routes - class JWKSetEndpointHandler - def self.call(...) - new.call(...) - end - - def call(_env) - [200, { 'Content-Type' => 'application/json' }, [JWKS.jwks_json]] - end - end - end -end diff --git a/lib/davinci_crd_test_kit/crd_jwks.json b/lib/davinci_crd_test_kit/server/endpoints/crd_jwks.json similarity index 100% rename from lib/davinci_crd_test_kit/crd_jwks.json rename to lib/davinci_crd_test_kit/server/endpoints/crd_jwks.json diff --git a/lib/davinci_crd_test_kit/server/endpoints/jwk_set_endpoint_handler.rb b/lib/davinci_crd_test_kit/server/endpoints/jwk_set_endpoint_handler.rb new file mode 100644 index 00000000..d352cf90 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/jwk_set_endpoint_handler.rb @@ -0,0 +1,13 @@ +require_relative 'jwks' + +module DaVinciCRDTestKit + class JWKSetEndpointHandler + def self.call(...) + new.call(...) + end + + def call(_env) + [200, { 'Content-Type' => 'application/json' }, [JWKS.jwks_json]] + end + end +end diff --git a/lib/davinci_crd_test_kit/jwks.rb b/lib/davinci_crd_test_kit/server/endpoints/jwks.rb similarity index 100% rename from lib/davinci_crd_test_kit/jwks.rb rename to lib/davinci_crd_test_kit/server/endpoints/jwks.rb diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_create_endpoint.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_create_endpoint.rb new file mode 100644 index 00000000..3466faa2 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_create_endpoint.rb @@ -0,0 +1,23 @@ +require_relative 'fhir_request_handler' + +module DaVinciCRDTestKit + module MockEHR + class FHIRCreateEndpoint < Inferno::DSL::SuiteEndpoint + include FHIRRequestHandler + + def make_response + prepare_response + return unless mock_ehr_bundle_present? + return unless resource_type_present? + return unless provided_resource_valid? + + assign_id_to_provided_resource + add_provided_resource_to_mock_ehr_bundle + + return_provided_resource + rescue StandardError => e + return_unhandled_error(e) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_delete_endpoint.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_delete_endpoint.rb new file mode 100644 index 00000000..d84ddf4d --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_delete_endpoint.rb @@ -0,0 +1,30 @@ +require_relative 'fhir_request_handler' + +module DaVinciCRDTestKit + module MockEHR + class FHIRDeleteEndpoint < Inferno::DSL::SuiteEndpoint + include FHIRRequestHandler + + def make_response + prepare_response + return unless mock_ehr_bundle_present? + return unless resource_type_present? + return unless resource_id_present? + + remove_target_resource_from_bundle + + response.status = 204 # NO CONTENT + rescue StandardError => e + return_unhandled_error(e) + end + + private + + # Hanami::Action strips non-entity headers from 204 responses by default. + # Allow CORS header so cross-origin clients can process the empty response. + def keep_response_header?(header) + super || header == 'Access-Control-Allow-Origin' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_metadata_endpoint.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_metadata_endpoint.rb new file mode 100644 index 00000000..69e87be1 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_metadata_endpoint.rb @@ -0,0 +1,112 @@ +require 'yaml' +require 'us_core_test_kit' +require_relative '../../../version' + +module DaVinciCRDTestKit + module MockEHR + class FHIRMetadataEndpoint + MOCK_EHR_INTERACTIONS = %w[read search-type create update delete].freeze + + US_CORE_METADATA_DIR = File.join( + Gem::Specification.find_by_name('us_core_test_kit').gem_dir, + 'lib', 'us_core_test_kit', 'generated', 'v6.1.0' + ).freeze + + SEARCH_PARAM_TYPES = { + 'string' => 'string', 'HumanName' => 'string', 'Address' => 'string', + 'http://hl7.org/fhirpath/System.String' => 'string', + 'code' => 'token', 'CodeableConcept' => 'token', 'Coding' => 'token', + 'Identifier' => 'token', 'patternCodeableConcept' => 'token', + 'patternCoding' => 'token', 'patternIdentifier' => 'token', 'requiredBinding' => 'token', + 'date' => 'date', 'dateTime' => 'date', 'instant' => 'date', 'Period' => 'date', + 'Reference' => 'reference', + 'uri' => 'uri', 'canonical' => 'uri', + 'number' => 'number', 'integer' => 'number', 'decimal' => 'number', + 'quantity' => 'quantity' + }.freeze + + def self.call(...) + new.call(...) + end + + def call(env) + request = Rack::Request.new(env) + [200, { 'Content-Type' => 'application/fhir+json' }, [capability_statement_json(request)]] + end + + def capability_statement_json(request) + fhir_base_url = request.url.delete_suffix('/metadata') + suite_id = request.path.split('/')[2] + suite_title = Inferno::Repositories::TestSuites.new.find(suite_id)&.title + fhir_server_name = 'Inferno US Core FHIR Server Simulation' + + FHIR::CapabilityStatement.new( + status: 'active', + kind: 'instance', + date: LAST_UPDATED, + software: FHIR::CapabilityStatement::Software.new( + name: fhir_server_name + ), + implementation: FHIR::CapabilityStatement::Implementation.new( + description: "#{suite_title} #{fhir_server_name} hosted at #{fhir_base_url}", + url: fhir_base_url + ), + fhirVersion: '4.0.1', + format: ['application/fhir+json'], + instantiates: ['http://hl7.org/fhir/us/core/CapabilityStatement/us-core-server'], + rest: [FHIR::CapabilityStatement::Rest.new(mode: 'server', resource: self.class.resource_entries)] + ).to_json + end + + def self.metadata_dir + US_CORE_METADATA_DIR + end + + def self.metadata_files + Dir.glob(File.join(metadata_dir, '*', 'metadata.yml')) + end + + def self.resource_entries + @resource_entries ||= build_resource_entries + end + + def self.search_param_type(type) + SEARCH_PARAM_TYPES.fetch(type, 'string') + end + + def self.collect_search_params(metadata_list) + metadata_list.each_with_object({}) do |metadata, params| + metadata.search_definitions&.each do |name, definition| + params[name.to_s] ||= definition[:type] + end + end + end + + def self.build_resource_entry(resource_type, metadata_list) + search_params = collect_search_params(metadata_list) + profile_urls = metadata_list.map(&:profile_url).compact + FHIR::CapabilityStatement::Rest::Resource.new( + type: resource_type, + supportedProfile: profile_urls, + interaction: MOCK_EHR_INTERACTIONS.map do |code| + FHIR::CapabilityStatement::Rest::Resource::Interaction.new(code:) + end, + searchParam: search_params.map do |name, type| + FHIR::CapabilityStatement::Rest::Resource::SearchParam.new( + name:, + type: search_param_type(type) + ) + end + ) + end + + def self.build_resource_entries + by_type = metadata_files.each_with_object(Hash.new { |h, k| h[k] = [] }) do |path, types| + metadata = USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(path, aliases: true)) + types[metadata.resource] << metadata + end + by_type.map { |resource_type, metadata_list| build_resource_entry(resource_type, metadata_list) } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_read_endpoint.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_read_endpoint.rb new file mode 100644 index 00000000..fb67d381 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_read_endpoint.rb @@ -0,0 +1,21 @@ +require_relative 'fhir_request_handler' + +module DaVinciCRDTestKit + module MockEHR + class FHIRReadEndpoint < Inferno::DSL::SuiteEndpoint + include FHIRRequestHandler + + def make_response + prepare_response + return unless mock_ehr_bundle_present? + return unless resource_type_present? + return unless resource_id_present? + return unless target_resource_present? + + return_target_resource + rescue StandardError => e + return_unhandled_error(e) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler.rb new file mode 100644 index 00000000..816b4898 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler.rb @@ -0,0 +1,261 @@ +require 'securerandom' + +module DaVinciCRDTestKit + module MockEHR + module FHIRRequestHandler + # --------------------------------------------------------------------------- + # Session Matching + # --------------------------------------------------------------------------- + + def test_run_identifier + token_to_session_id(request.headers['authorization']&.delete_prefix('Bearer ')) + end + + def token_to_session_id(token_to_decode) + JSON.parse(Base64.urlsafe_decode64(token_to_decode))&.dig('session_id') + rescue JSON::ParserError, ArgumentError + nil + end + + def self.session_id_to_token(session_id, exp_min = 5) + token_structure = { + session_id:, + expiration: exp_min.minutes.from_now.to_i, + nonce: SecureRandom.hex(8) + }.to_json + + Base64.urlsafe_encode64(token_structure, padding: false) + end + + # --------------------------------------------------------------------------- + # Response Generation + # --------------------------------------------------------------------------- + + def prepare_response + response.format = 'application/fhir+json' + response.headers['Access-Control-Allow-Origin'] = '*' + end + + def error_body(severity, code, text) + FHIR::OperationOutcome.new( + issue: FHIR::OperationOutcome::Issue.new(severity:, code:, + details: FHIR::CodeableConcept.new( + text: + )) + ).to_json + end + + def return_unhandled_error(error) + logger.error("FHIR #{interaction_type} error: #{error.full_message}") + response.status = 500 + response.body = error_body('error', 'processing', error.message) + end + + def interaction_type + case request.env['REQUEST_METHOD'] + when 'GET' + if resource_id.present? + 'Read' + else + 'Search' + end + when 'POST' + if request.env['PATH_INFO'].ends_with?('_search') + 'Search' + else + 'Create' + end + when 'PUT' + 'Update' + when 'DELETE' + 'Delete' + end + end + + # --------------------------------------------------------------------------- + # Request Resource Type + # --------------------------------------------------------------------------- + + def resource_type + request.params[:resource_type] + end + + def resource_type_present? + return true if resource_type.present? + + response.status = 400 + response.body = error_body('error', 'required', 'No recognized resource type in URL') + false + end + + # --------------------------------------------------------------------------- + # Request Resource Id + # --------------------------------------------------------------------------- + + def resource_id + request.params[:resource_id] + end + + def resource_id_present? + return true if resource_id.present? + + response.status = 400 + response.body = error_body('error', 'required', 'No recognized resource id in URL') + false + end + + # --------------------------------------------------------------------------- + # Request Provided Resource (body) + # --------------------------------------------------------------------------- + + def provided_resource + @provided_resource ||= begin + FHIR.from_contents(request.body.read) + rescue StandardError + nil + end + end + + def provided_resource_valid? + if provided_resource.blank? + response.status = 400 + response.body = error_body('error', 'structure', 'Invalid resource') + return false + end + if provided_resource.resourceType != resource_type + response.status = 400 + response.body = + error_body('error', 'structure', + "Incorrect resource type: url indicates `#{resource_type}`, " \ + "body contains `#{provided_resource.resourceType}`") + return false + end + + true + end + + def return_provided_resource(status: 201) + response.status = status if status.present? + response.body = provided_resource.to_json + end + + # --------------------------------------------------------------------------- + # Reading + # --------------------------------------------------------------------------- + + def target_resource_entry_index + @target_resource_entry_index ||= mock_ehr_bundle.entry.find_index do |entry| + entry.resource&.resourceType == resource_type && entry.resource&.id == resource_id + end + end + + def target_resource_entry + @target_resource_entry ||= + target_resource_entry_index.present? ? mock_ehr_bundle.entry[target_resource_entry_index] : nil + end + + def target_resource + @target_resource ||= target_resource_entry&.resource + end + + def target_resource_present? + if target_resource.blank? + response.status = 404 + response.body = error_body('error', 'not-found', + "No resource found with id #{resource_type}/#{resource_id}") + return false + end + + true + end + + def return_target_resource(status: 200) + response.status = status if status.present? + response.body = target_resource.to_json + end + + # --------------------------------------------------------------------------- + # Create, Update + # --------------------------------------------------------------------------- + + def assign_id_to_provided_resource(target_id: SecureRandom.uuid) + provided_resource.id = target_id + end + + def add_provided_resource_to_mock_ehr_bundle + mock_ehr_bundle.entry << FHIR::Bundle::Entry.new({ resource: provided_resource }) + save_mock_ehr_bundle_to_input + end + + def update_target_resource_in_mock_ehr_bundle + if target_resource_entry.present? + target_resource_entry.resource = provided_resource + save_mock_ehr_bundle_to_input + response.status = 200 + else + add_provided_resource_to_mock_ehr_bundle + response.status = 201 + end + end + + # --------------------------------------------------------------------------- + # Delete + # --------------------------------------------------------------------------- + + def remove_target_resource_from_bundle + return if target_resource_entry_index.nil? + + mock_ehr_bundle.entry.delete_at(target_resource_entry_index) + save_mock_ehr_bundle_to_input + end + + # --------------------------------------------------------------------------- + # Mock Bundle Management + # --------------------------------------------------------------------------- + + def mock_ehr_bundle + @mock_ehr_bundle ||= begin + bundle_json = Inferno::Repositories::SessionData.new.load( + test_session_id: test_run.test_session_id, + name: mock_ehr_bundle_input_name + ) + FHIR.from_contents(bundle_json) + rescue StandardError + nil + end + end + + def mock_ehr_bundle_input_name + return 'mock_ehr_bundle' unless test.config.options[:mock_ehr_bundle_input_name].present? + + test.config.options[:mock_ehr_bundle_input_name].to_s + end + + def mock_ehr_bundle_present? + if mock_ehr_bundle.blank? + response.status = 400 + response.body = error_body('warning', 'required', "No Bundle provided in input #{mock_ehr_bundle_input_name}") + return false + end + + unless mock_ehr_bundle.is_a?(FHIR::Bundle) + response.status = 400 + response.body = error_body('warning', 'required', + "Input #{mock_ehr_bundle_input_name} does not contain a FHIR Bundle.") + return false + end + + true + end + + def save_mock_ehr_bundle_to_input + Inferno::Repositories::SessionData.new.save( + test_session_id: test_run.test_session_id, + name: mock_ehr_bundle_input_name, + value: mock_ehr_bundle.to_json, + type: test.available_inputs[mock_ehr_bundle_input_name.to_sym]&.type + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_search_endpoint.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_search_endpoint.rb new file mode 100644 index 00000000..7e73f1cc --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_search_endpoint.rb @@ -0,0 +1,561 @@ +require_relative 'fhir_request_handler' +require 'us_core_test_kit' + +module DaVinciCRDTestKit + module MockEHR + class FHIRSearchEndpoint < Inferno::DSL::SuiteEndpoint + include Inferno::DSL::FHIRResourceNavigation + include FHIRRequestHandler + + def make_response + prepare_response + return unless mock_ehr_bundle_present? + return unless resource_type_present? + + return_response_bundle + rescue StandardError => e + return_unhandled_error(e) + end + + # --------------------------------------------------------------------------- + # Search Response + # --------------------------------------------------------------------------- + + def return_response_bundle + response.status = 200 + response.body = response_bundle.to_json + end + + def response_bundle + bundle = FHIR::Bundle.new({ type: 'searchset' }) + bundle.link << FHIR::Bundle::Link.new({ relation: 'self', url: self_link }) + + matching_entry_list.each do |entry| + bundle.entry << FHIR::Bundle::Entry.new({ resource: entry.resource, + search: FHIR::Bundle::Entry::Search.new({ mode: 'match' }) }) + end + included_entry_list.each do |entry| + bundle.entry << FHIR::Bundle::Entry.new({ resource: entry.resource, + search: FHIR::Bundle::Entry::Search.new({ mode: 'include' }) }) + end + revincluded_entry_list.each do |entry| + bundle.entry << FHIR::Bundle::Entry.new({ resource: entry.resource, + search: FHIR::Bundle::Entry::Search.new({ mode: 'include' }) }) + end + + bundle + end + + # --------------------------------------------------------------------------- + # Search Metadata + # --------------------------------------------------------------------------- + + def self.metadata_files + nil + end + + def self.metadata_by_resource_type + @metadata_by_resource_type ||= + metadata_files&.each_with_object(Hash.new { |h, k| h[k] = [] }) do |path, by_type| + metadata = USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(path, aliases: true)) + by_type[metadata.resource] << metadata + end + end + + def metadata_directory + File.join(Gem::Specification.find_by_name('us_core_test_kit').gem_dir, + 'lib', 'us_core_test_kit', 'generated', 'v6.1.0') + end + + def metadata_list + @metadata_list ||= load_metadata_list + end + + def load_metadata_list + return self.class.metadata_by_resource_type&.dig(resource_type) || [] if self.class.metadata_files + + Dir.glob(File.join(metadata_directory, "#{resource_type.underscore}*", 'metadata.yml')).filter_map do |path| + m = USCoreTestKit::Generator::GroupMetadata.new(YAML.load_file(path, aliases: true)) + m if m.resource == resource_type + end + end + + def merged_search_definitions + @merged_search_definitions ||= metadata_list.each_with_object({}) do |m, defs| + m.search_definitions&.each do |name, definition| + defs[name] ||= definition + end + end + end + + def all_include_params + @all_include_params ||= metadata_list.flat_map { |m| m.include_params || [] }.uniq + end + + def all_references + @all_references ||= metadata_list.flat_map { |m| m.references || [] }.uniq + end + + def all_must_support_elements + @all_must_support_elements ||= metadata_list.flat_map { |m| m.must_supports&.dig(:elements) || [] }.uniq + end + + # --------------------------------------------------------------------------- + # Self Link search parameters identification + # --------------------------------------------------------------------------- + + def self_link + host_and_path = request.url.split('?').first + param_list = + (supported_search_param_names + supported_include_param_paths.keys).map do |name| + "#{name}=#{request_params[name]}" + end + param_list << '_revinclude=Provenance:target' if revinclude_provenance_target? + query_string = param_list.present? ? "?#{param_list.join('&')}" : '' + + "#{host_and_path}#{query_string}" + end + + def supported_search_param_names + @supported_search_param_names ||= + request_params.keys.select { |name| merged_search_definitions.key?(name.to_sym) } + end + + def revinclude_provenance_target? + request_params.any? { |key, value| key == '_revinclude' && value == 'Provenance:target' } + end + + # map from include name to a list of paths at which to find references to include + def supported_include_param_paths + @supported_include_param_paths ||= calculate_supported_includes + end + + def calculate_supported_includes + request_params.keys.each_with_object({}) do |name, includes| + next unless name == '_include' + + target = request_params[name] + next unless target.present? && all_include_params.include?(target) + + paths = paths_to_include(target) + next unless paths.present? + + includes[name] = paths + end + end + + def paths_to_include(target) + paths = paths_from_search_definition(target) + paths = paths_from_reference_list(target) unless paths.present? + paths = paths_from_must_support_element(target) unless paths.present? + paths + end + + def paths_from_search_definition(target) + search_parameter = target.split(':').last + definition = merged_search_definitions[search_parameter.to_sym] + return unless definition.present? && definition[:type] == 'Reference' + + definition[:full_paths] + end + + def paths_from_reference_list(target) + path_with_resource_type = target.gsub(':', '.') + return unless all_references.any? { |ref| ref[:path] == path_with_resource_type } + + [path_with_resource_type] + end + + def paths_from_must_support_element(target) + target_element = target.split(':').last + return unless all_must_support_elements.any? { |elt| element_matches_reference_target?(elt, target_element) } + + [target.gsub(':', '.')] + end + + def element_matches_reference_target?(element, target_element) + element[:types]&.include?('Reference') && + [target_element, "#{target_element}[x]"].include?(element[:path]) + end + + # --------------------------------------------------------------------------- + # Search Logic + # --------------------------------------------------------------------------- + + def matching_entry_list + @matching_entry_list ||= mock_ehr_bundle.entry&.select do |entry| + entry.resource.present? && + entry.resource.resourceType == resource_type && + include_resource_in_search_results?(entry.resource) + end + end + + def matching_entry_set + @matching_entry_set ||= matching_entry_list.each_with_object(Set.new) do |entry, set| + set << [entry.resource.resourceType, entry.resource.id] + end + end + + def request_params + @request_params ||= request.params.to_h.except(:resource_type).stringify_keys + end + + def include_resource_in_search_results?(resource) + supported_search_param_names.reduce(true) do |matches_so_far, name| + return false unless matches_so_far + + escaped_search_value = request_params[name] + values_found = [] + resource_matches_param?(resource, name, escaped_search_value, values_found) + end + end + + def unescape_search_value(value) + value&.gsub('\\,', ',') + end + + def search_param_paths(name) + paths = merged_search_definitions.dig(name.to_sym, :paths) + paths[0] = 'local_class' if paths.first == 'class' + + paths + end + + def resource_matches_param?(resource, search_param_name, escaped_search_value, values_found = []) # rubocop:disable Metrics/CyclomaticComplexity + search_value = unescape_search_value(escaped_search_value) + paths = search_param_paths(search_param_name) + + match_found = false + + paths.each do |path| + type = merged_search_definitions.dig(search_param_name.to_sym, :type) + + resolve_path(resource, path).each do |value| + values_found << + if value.is_a? FHIR::Reference + value.reference + elsif value.is_a? Inferno::DSL::PrimitiveType + value.value + else + value + end + end + + values_found.compact! + match_found = + case type + when 'Period', 'date', 'instant', 'dateTime' + values_found.any? { |date| validate_date_search(search_value, date) } + when 'HumanName' + # When a string search parameter refers to the types HumanName and Address, + # the search covers the elements of type string, and does not cover elements such as use and period + # https://www.hl7.org/fhir/search.html#string + search_value_downcase = search_value.downcase + values_found.any? do |name| + name&.text&.downcase&.start_with?(search_value_downcase) || + name&.family&.downcase&.start_with?(search_value_downcase) || + name&.given&.any? { |given| given.downcase.start_with?(search_value_downcase) } || + name&.prefix&.any? { |prefix| prefix.downcase.start_with?(search_value_downcase) } || + name&.suffix&.any? { |suffix| suffix.downcase.start_with?(search_value_downcase) } + end + when 'Address' + search_value_downcase = search_value.downcase + values_found.any? do |address| + address&.text&.downcase&.start_with?(search_value_downcase) || + address&.city&.downcase&.start_with?(search_value_downcase) || + address&.state&.downcase&.start_with?(search_value_downcase) || + address&.postalCode&.downcase&.start_with?(search_value_downcase) || + address&.country&.downcase&.start_with?(search_value_downcase) + end + when 'CodeableConcept' + # FHIR token search (https://www.hl7.org/fhir/search.html#token): "When in doubt, servers SHOULD + # treat tokens in a case-insensitive manner, on the grounds that including undesired data has + # less safety implications than excluding desired behavior". + codings = values_found.flat_map(&:coding) + if search_value.include? '|' + system = search_value.split('|').first + code = search_value.split('|').last + codings&.any? { |coding| coding.system == system && coding.code&.casecmp?(code) } + else + codings&.any? { |coding| coding.code&.casecmp?(search_value) } + end + when 'Coding' + if search_value.include? '|' + system = search_value.split('|').first + code = search_value.split('|').last + values_found.any? { |coding| coding.system == system && coding.code&.casecmp?(code) } + else + values_found.any? { |coding| coding.code&.casecmp?(search_value) } + end + when 'Identifier' + if search_value.include? '|' + values_found.any? { |identifier| "#{identifier.system}|#{identifier.value}" == search_value } + else + values_found.any? { |identifier| identifier.value == search_value } + end + when 'string' + searched_values = search_value.downcase.split(/(?= target_range[:end] + when 'ne' # the range of the search value does not fully contain the range of the target value + target_range[:start].nil? || + target_range[:end].nil? || + search_range[:start] > target_range[:start] || + search_range[:end] < target_range[:end] + when 'gt' # the range above the search value intersects (i.e. overlaps) with the range of the target value + target_range[:end].nil? || + search_range[:end] < target_range[:end] || + (search_range[:end] < (target_range[:end] + 1) && extend_end) + when 'lt' # the range below the search value intersects (i.e. overlaps) with the range of the target value + target_range[:start].nil? || + search_range[:start] > target_range[:start] || + (search_range[:start] > (target_range[:start] - 1) && extend_start) + when 'ge' # the target end is at or after the search range start + target_range[:end].nil? || target_range[:end] >= search_range[:start] + when 'le' # the target start is at or before the search range end + target_range[:start].nil? || target_range[:start] <= search_range[:end] + when 'sa' # the range above the search value contains the range of the target value + !target_range[:start].nil? && search_range[:end] < target_range[:start] + when 'eb' # the range below the search value contains the range of the target value + !target_range[:end].nil? && search_range[:start] > target_range[:end] + when 'ap' # the range of the search value overlaps with the range of the target value + if target_range[:start].nil? || target_range[:end].nil? + (target_range[:start].nil? && search_range[:start] < target_range[:end]) || + (target_range[:end].nil? && search_range[:end] > target_range[:start]) + else + (search_range[:start] >= target_range[:start] && search_range[:start] <= target_range[:end]) || + (search_range[:end] >= target_range[:start] && search_range[:end] <= target_range[:end]) + end + end + end + + def validate_date_search(search_value, target_value) + if target_value.instance_of? FHIR::Period + validate_period_search(search_value, target_value) + else + validate_datetime_search(search_value, target_value) + end + end + + def validate_datetime_search(search_value, target_value) + comparator = search_value[0..1] + if ['eq', 'ge', 'gt', 'le', 'lt', 'ne', 'sa', 'eb', 'ap'].include? comparator + search_value = search_value[2..] + else + comparator = 'eq' + end + search_is_date = date?(search_value) + target_is_date = date?(target_value) + search_range = get_fhir_datetime_range(search_value) + target_range = get_fhir_datetime_range(target_value) + fhir_date_comparer(search_range, target_range, comparator, extend_start: !search_is_date && target_is_date, + extend_end: !search_is_date && target_is_date) + end + + def validate_period_search(search_value, target_value) + comparator = search_value[0..1] + if ['eq', 'ge', 'gt', 'le', 'lt', 'ne', 'sa', 'eb', 'ap'].include? comparator + search_value = search_value[2..] + else + comparator = 'eq' + end + search_is_date = date?(search_value) + search_range = get_fhir_datetime_range(search_value) + target_range = get_fhir_period_range(target_value) + fhir_date_comparer(search_range, target_range, comparator, + extend_start: !search_is_date && date?(target_value.start), + extend_end: !search_is_date && date?(target_value.end)) + end + + def date?(value) + /^\d{4}(-\d{2})?(-\d{2})?$/.match?(value) # YYYY or YYYY-MM or YYYY-MM-DD + end + + # --------------------------------------------------------------------------- + # _include logic + # --------------------------------------------------------------------------- + + def included_entry_list + @included_entry_list ||= begin + entries = [] + included_set = Set.new + matching_entry_list.each do |entry| + resource = entry.resource + next unless include_paths_by_resource_type.key?(resource.resourceType) + + include_paths_by_resource_type[resource.resourceType].each do |target_include_path| + resolve_path(resource, target_include_path).each do |reference| + evaluate_included_reference(reference, entries, included_set) + end + end + end + @included_entry_set = included_set + entries + end + end + + def included_entry_set + included_entry_list # ensure built, which populates @included_entry_set + @included_entry_set ||= Set.new + end + + def evaluate_included_reference(reference, included_entries, included_set) + return unless local_reference?(reference) + + resource_type, resource_id = reference.reference.split('/') + key = [resource_type, resource_id] + return if included_set.include?(key) || matching_entry_set.include?(key) + + included_entry = resolve_reference_to_entry_in_bundle(resource_type, resource_id) + return unless included_entry.present? + + included_entries << included_entry + included_set << key + end + + def include_paths_by_resource_type + @include_paths_by_resource_type ||= + supported_include_param_paths.values.each_with_object({}) do |include_paths, by_resource_type| + include_paths.each do |path_with_resource_type| + resource_type, path = path_with_resource_type.split('.', 2) + (by_resource_type[resource_type] ||= []) << path + end + end + end + + def local_reference?(reference) + reference.is_a?(FHIR::Reference) && + reference.reference.split('/').length == 2 # local reference + end + + def bundle_entry_index + @bundle_entry_index ||= mock_ehr_bundle.entry.each_with_object({}) do |entry, index| + next unless entry.resource.present? + + index[[entry.resource.resourceType, entry.resource.id]] = entry + end + end + + def resolve_reference_to_entry_in_bundle(resource_type, resource_id) + bundle_entry_index[[resource_type, resource_id]] + end + + # --------------------------------------------------------------------------- + # _revinclude logic + # --------------------------------------------------------------------------- + def revincluded_entry_list + @revincluded_entry_list ||= revinclude_provenance_target? ? build_revincluded_entry_list : [] + end + + def revincluded_entry_set + revincluded_entry_list # ensure built, which populates @revincluded_entry_set + @revincluded_entry_set ||= Set.new + end + + def build_revincluded_entry_list + entries = [] + revincluded_set = Set.new + mock_ehr_bundle.entry.each do |entry| + next unless candidate_provenance_for_revinclude?(entry, revincluded_set) + + resolve_path(entry.resource, 'target').each do |reference| + evaluate_revincluded_reference(entry, reference, entries, revincluded_set) + end + end + @revincluded_entry_set = revincluded_set + entries + end + + def candidate_provenance_for_revinclude?(entry, revincluded_set) + return false unless entry.resource.present? + return false unless entry.resource.resourceType == 'Provenance' + + key = [entry.resource.resourceType, entry.resource.id] + !revincluded_set.include?(key) && !included_entry_set.include?(key) && + !matching_entry_set.include?(key) + end + + def evaluate_revincluded_reference(referencing_entry, reference, revincluded_entries, revincluded_set) + return unless local_reference?(reference) + + resource_type, resource_id = reference.reference.split('/') + return unless matching_entry_set.include?([resource_type, resource_id]) || + included_entry_set.include?([resource_type, resource_id]) + + provenance_key = [referencing_entry.resource.resourceType, referencing_entry.resource.id] + return if revincluded_set.include?(provenance_key) + + # referenced instance is matched or included — add the referencing Provenance + revincluded_entries << referencing_entry + revincluded_set << provenance_key + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_update_endpoint.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_update_endpoint.rb new file mode 100644 index 00000000..4b31c443 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_update_endpoint.rb @@ -0,0 +1,24 @@ +require_relative 'fhir_request_handler' + +module DaVinciCRDTestKit + module MockEHR + class FHIRUpdateEndpoint < Inferno::DSL::SuiteEndpoint + include FHIRRequestHandler + + def make_response + prepare_response + return unless mock_ehr_bundle_present? + return unless resource_type_present? + return unless resource_id_present? + return unless provided_resource_valid? + + assign_id_to_provided_resource(target_id: resource_id) + update_target_resource_in_mock_ehr_bundle + + return_provided_resource(status: nil) # status set in update_target_resource_in_mock_ehr_bundle + rescue StandardError => e + return_unhandled_error(e) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json new file mode 100644 index 00000000..75ad5907 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr/stress-test-Bundle.json @@ -0,0 +1,54687 @@ +{ + "resourceType": "Bundle", + "entry": [ + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Patient/85", + "resource": { + "resourceType": "Patient", + "id": "85", + "meta": { + "versionId": "2", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient" + ] + }, + "text": { + "status": "generated", + "div": "
Generated by Synthea.Version identifier: v2.6.1-3-g50f4f58f\n . Person seed: -7901283747506674198 Population seed: 3
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", + "extension": [ + { + "url": "ombCategory", + "valueCoding": { + "system": "urn:oid:2.16.840.1.113883.6.238", + "code": "2106-3", + "display": "White" + } + }, + { + "url": "text", + "valueString": "White" + } + ] + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", + "extension": [ + { + "url": "ombCategory", + "valueCoding": { + "system": "urn:oid:2.16.840.1.113883.6.238", + "code": "2186-5" + } + }, + { + "url": "text", + "valueString": "Non Hispanic or Latino" + } + ] + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", + "valueCode": "M" + } + ], + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "d831ec91-c7a3-4a61-9312-7ff0c4a32134" + }, + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR", + "display": "Medical record number" + } + ], + "text": "Medical record number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "d831ec91-c7a3-4a61-9312-7ff0c4a32134" + }, + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "SS", + "display": "Social Security number" + } + ], + "text": "Social Security number" + }, + "system": "http://hl7.org/fhir/sid/us-ssn", + "value": "999-47-5768" + }, + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "DL", + "display": "Driver's license number" + } + ], + "text": "Driver's license number" + }, + "system": "urn:oid:2.16.840.1.113883.4.3.25", + "value": "S99921496" + } + ], + "name": [ + { + "use": "official", + "family": "Bosco882", + "given": [ + "Lucien408" + ], + "prefix": [ + "Mr." + ], + "suffix": [ + "PharmD" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "555-510-6254", + "use": "home" + } + ], + "gender": "male", + "_gender": { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/alternate-codes", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "248153007", + "display": "Male (finding)" + } + ] + } + } + ] + }, + "birthDate": "1940-03-29", + "deceasedDateTime": "1977-07-14T04:17:45-04:00", + "address": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 42.674176102041564 + }, + { + "url": "longitude", + "valueDecimal": -71.31980043648745 + } + ] + } + ], + "line": [ + "934 Olson Highlands" + ], + "city": "Lowell", + "state": "MA", + "postalCode": "01854", + "country": "US", + "period": { + "start": "1940-03-29" + } + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 42.081393355072365 + }, + { + "url": "longitude", + "valueDecimal": -71.67273379517337 + } + ] + } + ], + "use": "old", + "line": [ + "508 Rempel Wall Suite 64" + ], + "city": "Whitinsville", + "state": "MA", + "postalCode": "01588", + "country": "US" + } + ], + "maritalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", + "code": "M", + "display": "Married" + } + ], + "text": "Married" + }, + "multipleBirthBoolean": false, + "communication": [ + { + "language": { + "coding": [ + { + "system": "urn:ietf:bcp:47", + "code": "en-US", + "display": "English (United States)" + } + ], + "text": "English (United States)" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Group/combo-Group", + "resource": { + "resourceType": "Group", + "id": "combo-Group", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:43.148+00:00" + }, + "active": true, + "type": "person", + "actual": true, + "name": "Proxy Group for patient Export", + "quantity": 4, + "member": [ + { + "entity": { + "reference": "Patient/888" + } + }, + { + "entity": { + "reference": "Patient/999" + } + }, + { + "entity": { + "reference": "Patient/85" + } + }, + { + "entity": { + "reference": "Patient/355" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f62c2559-e3aa-4c89-86dc-498170fb040c", + "resource": { + "resourceType": "Encounter", + "id": "f62c2559-e3aa-4c89-86dc-498170fb040c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed", + "valueCoding": { + "system": "http://snomed.info/sct", + "version": "http://snomed.info/sct/731000124108", + "code": "373067005" + } + } + ], + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "09775519-5327-3bbf-cb95-66313dde54ee" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-03-29T00:11:45-05:00", + "end": "1940-03-29T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1940-03-29T00:11:45-05:00", + "end": "1940-03-29T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/cd59d22b-1f80-4f2e-b0ca-726609065d8e", + "resource": { + "resourceType": "Observation", + "id": "cd59d22b-1f80-4f2e-b0ca-726609065d8e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-head-circumference" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "9843-4", + "display": "Head Occipital-frontal circumference" + } + ], + "text": "Head Circumference" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2020-11-18T16:19:31-08:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "valueQuantity": { + "value": 51.2, + "unit": "cm", + "system": "http://unitsofmeasure.org", + "code": "cm" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/71a0cba2-01e6-47bc-af5b-66e65691cefd", + "resource": { + "resourceType": "Observation", + "id": "71a0cba2-01e6-47bc-af5b-66e65691cefd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00" + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "401201003", + "display": "Cigarette pack-years (observable entity)" + } + ], + "text": "Cigarette pack-years" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f62c2559-e3aa-4c89-86dc-498170fb040c" + }, + "effectiveDateTime": "1940-03-29T00:11:45-05:00", + "issued": "1940-03-29T00:11:45.131-05:00", + "valueQuantity": { + "value": 26, + "unit": "pack-years", + "system": "http://unitsofmeasure.org", + "code": "{pack-years}" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/43604cf2-7d4f-4adf-9375-06a3fc0ae08f", + "resource": { + "resourceType": "Encounter", + "id": "43604cf2-7d4f-4adf-9375-06a3fc0ae08f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "0a801acb-5ad8-d988-7168-89248882afa7" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-05-03T01:11:45-04:00", + "end": "1940-05-03T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1940-05-03T01:11:45-04:00", + "end": "1940-05-03T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e649ea40-f57b-4d5d-a6ad-14c86306ce65", + "resource": { + "resourceType": "Observation", + "id": "e649ea40-f57b-4d5d-a6ad-14c86306ce65", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/43604cf2-7d4f-4adf-9375-06a3fc0ae08f" + }, + "effectiveDateTime": "1940-05-03T01:11:45-04:00", + "issued": "1940-05-03T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/a552e1ad-edeb-44ab-a9f1-b67512c25b24", + "resource": { + "resourceType": "Encounter", + "id": "a552e1ad-edeb-44ab-a9f1-b67512c25b24", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "3a26d117-bb3c-6297-0e61-769191833f34" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-07-05T01:11:45-04:00", + "end": "1940-07-05T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1940-07-05T01:11:45-04:00", + "end": "1940-07-05T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/321f4d17-8ab9-453e-bec8-a988c9cafbb7", + "resource": { + "resourceType": "Observation", + "id": "321f4d17-8ab9-453e-bec8-a988c9cafbb7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/a552e1ad-edeb-44ab-a9f1-b67512c25b24" + }, + "effectiveDateTime": "1940-07-05T01:11:45-04:00", + "issued": "1940-07-05T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/349b13f0-5690-41f3-96de-a6aeeb7e9b89", + "resource": { + "resourceType": "Encounter", + "id": "349b13f0-5690-41f3-96de-a6aeeb7e9b89", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "0bb40726-2ce8-c94f-7123-aeaa7b25387a" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-09-06T01:11:45-04:00", + "end": "1940-09-06T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1940-09-06T01:11:45-04:00", + "end": "1940-09-06T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a602714c-bd1c-4a9e-aaf6-f6cc27dfafc0", + "resource": { + "resourceType": "Observation", + "id": "a602714c-bd1c-4a9e-aaf6-f6cc27dfafc0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/349b13f0-5690-41f3-96de-a6aeeb7e9b89" + }, + "effectiveDateTime": "1940-09-06T01:11:45-04:00", + "issued": "1940-09-06T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/f13ae6d6-fcde-4208-afda-a208245e699e", + "resource": { + "resourceType": "Procedure", + "id": "f13ae6d6-fcde-4208-afda-a208245e699e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/349b13f0-5690-41f3-96de-a6aeeb7e9b89" + }, + "performedPeriod": { + "start": "1940-09-06T01:11:45-04:00", + "end": "1940-09-06T01:26:45-04:00" + }, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/d847e009-97a0-4b2b-841e-40cce5217b62", + "resource": { + "resourceType": "DiagnosticReport", + "id": "d847e009-97a0-4b2b-841e-40cce5217b62", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/349b13f0-5690-41f3-96de-a6aeeb7e9b89" + }, + "effectiveDateTime": "1940-09-06T01:11:45-04:00", + "issued": "1940-09-06T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDAtMDktMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDUgbW9udGgtb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCk5vIEFjdGl2ZSBNZWRpY2F0aW9ucy4KCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/ebfea0d7-7100-467f-beef-ea7b61793e20", + "resource": { + "resourceType": "DocumentReference", + "id": "ebfea0d7-7100-467f-beef-ea7b61793e20", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:acc9d16d-da9b-9dc9-fbb4-9e6f950b11e6" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1940-09-06T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDAtMDktMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDUgbW9udGgtb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCk5vIEFjdGl2ZSBNZWRpY2F0aW9ucy4KCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/349b13f0-5690-41f3-96de-a6aeeb7e9b89" + } + ], + "period": { + "start": "1940-09-06T01:11:45-04:00", + "end": "1940-09-06T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/48ab08a5-8c4e-4b7a-bde4-f6bbe524d34e", + "resource": { + "resourceType": "Encounter", + "id": "48ab08a5-8c4e-4b7a-bde4-f6bbe524d34e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "7e819237-bfac-1f85-e105-43776b6e4dd6" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-12-06T00:11:45-05:00", + "end": "1940-12-06T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1940-12-06T00:11:45-05:00", + "end": "1940-12-06T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/be80d970-c0f8-40c9-bce3-4a6d7d01ed79", + "resource": { + "resourceType": "Observation", + "id": "be80d970-c0f8-40c9-bce3-4a6d7d01ed79", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/48ab08a5-8c4e-4b7a-bde4-f6bbe524d34e" + }, + "effectiveDateTime": "1940-12-06T00:11:45-05:00", + "issued": "1940-12-06T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/69a72195-466f-4653-96bc-08f35c8d4cd4", + "resource": { + "resourceType": "Encounter", + "id": "69a72195-466f-4653-96bc-08f35c8d4cd4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d763ee98-8663-70d9-567a-89c01a09a655" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-12-24T00:11:45-05:00", + "end": "1940-12-24T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1940-12-24T00:11:45-05:00", + "end": "1940-12-24T00:26:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "65363002", + "display": "Otitis media" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/a3696c0a-805b-4805-a493-46776aff7c9f", + "resource": { + "resourceType": "Condition", + "id": "a3696c0a-805b-4805-a493-46776aff7c9f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "65363002", + "display": "Otitis media" + } + ], + "text": "Otitis media" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/69a72195-466f-4653-96bc-08f35c8d4cd4" + }, + "onsetDateTime": "1940-12-24T00:11:45-05:00", + "abatementDateTime": "1941-03-07T00:11:45-05:00", + "recordedDate": "1940-12-24T00:11:45-05:00", + "recorder": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/2f5caf3b-0fef-48b6-a4cb-1a5ddac79e37", + "resource": { + "resourceType": "MedicationRequest", + "id": "2f5caf3b-0fef-48b6-a4cb-1a5ddac79e37", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", + "code": "community", + "display": "Community" + } + ], + "text": "Community" + } + ], + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "243670", + "display": "Aspirin 81 MG Oral Tablet" + } + ], + "text": "Aspirin 81 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/69a72195-466f-4653-96bc-08f35c8d4cd4" + }, + "authoredOn": "1940-12-24T00:11:45-05:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/46750323-6e73-47c9-a362-27f67240d967", + "resource": { + "resourceType": "Encounter", + "id": "46750323-6e73-47c9-a362-27f67240d967", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f8c9f157-c87e-9d2e-652e-eab639b60698" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-01-26T00:11:45-05:00", + "end": "1941-01-26T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1941-01-26T00:11:45-05:00", + "end": "1941-01-26T00:26:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/be7738c3-8477-476b-aaa8-c62adf4b9715", + "resource": { + "resourceType": "Condition", + "id": "be7738c3-8477-476b-aaa8-c62adf4b9715", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ], + "text": "Acute viral pharyngitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/46750323-6e73-47c9-a362-27f67240d967" + }, + "onsetDateTime": "1941-01-26T00:11:45-05:00", + "abatementDateTime": "1941-02-06T00:11:45-05:00", + "recordedDate": "1941-01-26T00:11:45-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/477bd866-f806-4904-8b4b-8ad5ebe87722", + "resource": { + "resourceType": "Encounter", + "id": "477bd866-f806-4904-8b4b-8ad5ebe87722", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f8212080-8461-49d6-c860-a29916573fbf" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-03-07T00:11:45-05:00", + "end": "1941-03-07T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1941-03-07T00:11:45-05:00", + "end": "1941-03-07T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b11ac552-89bf-4091-9e15-2e430bd2f7c8", + "resource": { + "resourceType": "Observation", + "id": "b11ac552-89bf-4091-9e15-2e430bd2f7c8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/477bd866-f806-4904-8b4b-8ad5ebe87722" + }, + "effectiveDateTime": "1941-03-07T00:11:45-05:00", + "issued": "1941-03-07T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/b8f5f25c-f3d1-435d-ba3a-cda4caa4a975", + "resource": { + "resourceType": "DiagnosticReport", + "id": "b8f5f25c-f3d1-435d-ba3a-cda4caa4a975", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/477bd866-f806-4904-8b4b-8ad5ebe87722" + }, + "effectiveDateTime": "1941-03-07T00:11:45-05:00", + "issued": "1941-03-07T00:11:45.131-05:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "resultsInterpreter": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "result": [ + { + "reference": "Observation/373d2aa4-d25e-44f2-886c-4fe378f71d78" + }, + { + "reference": "Observation/0a49d7f4-1769-45bc-91e1-7cb228116b1a" + }, + { + "reference": "Observation/9b65d94a-8ca9-48ca-a6b9-04ed21aaaa17" + } + ], + "media": [ + { + "link": { + "reference": "Media/cb686898-fdac-4232-a6db-403d8bccae60" + } + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDEtMDMtMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDExIG1vbnRoLW9sZCBub24taGlzcGFuaWMgd2hpdGUgbWFsZS4gUGF0aWVudCBoYXMgYSBoaXN0b3J5IG9mIG90aXRpcyBtZWRpYSwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKIFBhdGllbnQgaGFzIG5ldmVyIHNtb2tlZCBhbmQgaXMgYW4gYWxjb2hvbGljLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgaGlnaCBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/7e192fe5-eb25-43ef-a5a5-0586fc983f15", + "resource": { + "resourceType": "DocumentReference", + "id": "7e192fe5-eb25-43ef-a5a5-0586fc983f15", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:24db4298-fb15-5de3-455a-44711bdc808f" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1941-03-07T00:11:45.131-05:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDEtMDMtMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDExIG1vbnRoLW9sZCBub24taGlzcGFuaWMgd2hpdGUgbWFsZS4gUGF0aWVudCBoYXMgYSBoaXN0b3J5IG9mIG90aXRpcyBtZWRpYSwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKIFBhdGllbnQgaGFzIG5ldmVyIHNtb2tlZCBhbmQgaXMgYW4gYWxjb2hvbGljLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgaGlnaCBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/477bd866-f806-4904-8b4b-8ad5ebe87722" + } + ], + "period": { + "start": "1941-03-07T00:11:45-05:00", + "end": "1941-03-07T00:26:45-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/50aaf6d2-1739-4bfd-aa0d-da3e1e9a38d8", + "resource": { + "resourceType": "Encounter", + "id": "50aaf6d2-1739-4bfd-aa0d-da3e1e9a38d8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "103fdd53-7d43-edc7-e0be-e11d1d8b605b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-06-06T01:11:45-04:00", + "end": "1941-06-06T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1941-06-06T01:11:45-04:00", + "end": "1941-06-06T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/64c3f4cb-9a78-4376-9e5e-02856fa837bc", + "resource": { + "resourceType": "Observation", + "id": "64c3f4cb-9a78-4376-9e5e-02856fa837bc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/50aaf6d2-1739-4bfd-aa0d-da3e1e9a38d8" + }, + "effectiveDateTime": "1941-06-06T01:11:45-04:00", + "issued": "1941-06-06T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/fe9867e1-9549-4622-ae77-0f2af660cfa3", + "resource": { + "resourceType": "DiagnosticReport", + "id": "fe9867e1-9549-4622-ae77-0f2af660cfa3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/50aaf6d2-1739-4bfd-aa0d-da3e1e9a38d8" + }, + "effectiveDateTime": "1941-06-06T01:11:45-04:00", + "issued": "1941-06-06T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDEtMDYtMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDEgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgoK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/bc218a77-bf87-480b-bae3-8337f554ca64", + "resource": { + "resourceType": "DocumentReference", + "id": "bc218a77-bf87-480b-bae3-8337f554ca64", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:098c94c2-caa9-ffcb-04c9-509817b70513" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1941-06-06T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDEtMDYtMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDEgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgoK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/50aaf6d2-1739-4bfd-aa0d-da3e1e9a38d8" + } + ], + "period": { + "start": "1941-06-06T01:11:45-04:00", + "end": "1941-06-06T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b3abd327-7925-40ef-ab89-80977acdc094", + "resource": { + "resourceType": "Encounter", + "id": "b3abd327-7925-40ef-ab89-80977acdc094", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "fcb63f59-0312-1e8e-e3b7-466c50fc75e1" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-09-05T01:11:45-04:00", + "end": "1941-09-05T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1941-09-05T01:11:45-04:00", + "end": "1941-09-05T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4444b32d-2525-46bc-b5c0-0d911ea9966a", + "resource": { + "resourceType": "Observation", + "id": "4444b32d-2525-46bc-b5c0-0d911ea9966a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b3abd327-7925-40ef-ab89-80977acdc094" + }, + "effectiveDateTime": "1941-09-05T01:11:45-04:00", + "issued": "1941-09-05T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/200d8ba0-a2ba-4755-b286-7b3c92091472", + "resource": { + "resourceType": "Procedure", + "id": "200d8ba0-a2ba-4755-b286-7b3c92091472", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b3abd327-7925-40ef-ab89-80977acdc094" + }, + "performedPeriod": { + "start": "1941-09-05T01:11:45-04:00", + "end": "1941-09-05T01:26:45-04:00" + }, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/3da5c616-2ab8-49e3-9def-b7cd2d993283", + "resource": { + "resourceType": "DiagnosticReport", + "id": "3da5c616-2ab8-49e3-9def-b7cd2d993283", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b3abd327-7925-40ef-ab89-80977acdc094" + }, + "effectiveDateTime": "1941-09-05T01:11:45-04:00", + "issued": "1941-09-05T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDEtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDEgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/9ef88a97-1eed-4d21-8364-260bf2e222fa", + "resource": { + "resourceType": "DocumentReference", + "id": "9ef88a97-1eed-4d21-8364-260bf2e222fa", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:9e125219-b9c4-6697-307f-47337d7300f8" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1941-09-05T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDEtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDEgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/b3abd327-7925-40ef-ab89-80977acdc094" + } + ], + "period": { + "start": "1941-09-05T01:11:45-04:00", + "end": "1941-09-05T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/22405cc1-eb02-4490-b853-648155a6b3a5", + "resource": { + "resourceType": "Encounter", + "id": "22405cc1-eb02-4490-b853-648155a6b3a5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "73e7c691-33d7-89aa-c915-782d2eaf70db" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1942-03-06T01:11:45-04:00", + "end": "1942-03-06T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1942-03-06T01:11:45-04:00", + "end": "1942-03-06T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4fae149b-64b6-4d0e-8cfa-70ecc8c24f54", + "resource": { + "resourceType": "Observation", + "id": "4fae149b-64b6-4d0e-8cfa-70ecc8c24f54", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/22405cc1-eb02-4490-b853-648155a6b3a5" + }, + "effectiveDateTime": "1942-03-06T01:11:45-04:00", + "issued": "1942-03-06T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/a2594c00-9bf6-4782-915c-d342298b61d2", + "resource": { + "resourceType": "Procedure", + "id": "a2594c00-9bf6-4782-915c-d342298b61d2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/22405cc1-eb02-4490-b853-648155a6b3a5" + }, + "performedPeriod": { + "start": "1942-03-06T01:11:45-04:00", + "end": "1942-03-06T01:26:45-04:00" + }, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/9ed0a349-3894-4dd0-8cbb-59cf19ec5728", + "resource": { + "resourceType": "DiagnosticReport", + "id": "9ed0a349-3894-4dd0-8cbb-59cf19ec5728", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/22405cc1-eb02-4490-b853-648155a6b3a5" + }, + "effectiveDateTime": "1942-03-06T01:11:45-04:00", + "issued": "1942-03-06T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDItMDMtMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDEgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/ba33354f-11bb-4478-b39c-907606ecf019", + "resource": { + "resourceType": "DocumentReference", + "id": "ba33354f-11bb-4478-b39c-907606ecf019", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:5904ddbb-2755-44b6-8e39-92abe39f23cc" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1942-03-06T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDItMDMtMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDEgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/22405cc1-eb02-4490-b853-648155a6b3a5" + } + ], + "period": { + "start": "1942-03-06T01:11:45-04:00", + "end": "1942-03-06T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/dd52e03c-96ff-46b8-897c-7b98aff7f294", + "resource": { + "resourceType": "Encounter", + "id": "dd52e03c-96ff-46b8-897c-7b98aff7f294", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "e40f66d1-c8b2-a7d2-f699-1dc97f655419" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1942-09-04T01:11:45-04:00", + "end": "1942-09-04T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1942-09-04T01:11:45-04:00", + "end": "1942-09-04T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a3159aa2-d158-4e1b-beef-5d2a6f4ce89f", + "resource": { + "resourceType": "Observation", + "id": "a3159aa2-d158-4e1b-beef-5d2a6f4ce89f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/dd52e03c-96ff-46b8-897c-7b98aff7f294" + }, + "effectiveDateTime": "1942-09-04T01:11:45-04:00", + "issued": "1942-09-04T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/0e961f96-8256-4b8f-baf2-1b57de306b69", + "resource": { + "resourceType": "Encounter", + "id": "0e961f96-8256-4b8f-baf2-1b57de306b69", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "03f1caa5-9dde-0642-3f66-28c34a86f1f8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1943-03-05T01:11:45-04:00", + "end": "1943-03-05T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1943-03-05T01:11:45-04:00", + "end": "1943-03-05T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1bbc0da8-5f1d-4f0d-8902-944f9ab6c4d6", + "resource": { + "resourceType": "Observation", + "id": "1bbc0da8-5f1d-4f0d-8902-944f9ab6c4d6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/0e961f96-8256-4b8f-baf2-1b57de306b69" + }, + "effectiveDateTime": "1943-03-05T01:11:45-04:00", + "issued": "1943-03-05T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/888bc2e2-51e9-4c90-a024-d8635e634488", + "resource": { + "resourceType": "Procedure", + "id": "888bc2e2-51e9-4c90-a024-d8635e634488", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/0e961f96-8256-4b8f-baf2-1b57de306b69" + }, + "performedPeriod": { + "start": "1943-03-05T01:11:45-04:00", + "end": "1943-03-05T01:26:45-04:00" + }, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/e168ebba-8a74-419a-93e5-6e2a43de0ef8", + "resource": { + "resourceType": "Encounter", + "id": "e168ebba-8a74-419a-93e5-6e2a43de0ef8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "09ac70a8-466c-a8e7-4bdc-fa6aa4558f90" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1943-09-03T01:11:45-04:00", + "end": "1943-09-03T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1943-09-03T01:11:45-04:00", + "end": "1943-09-03T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b9b9d19d-0f2e-416a-b069-1c04437030f2", + "resource": { + "resourceType": "Observation", + "id": "b9b9d19d-0f2e-416a-b069-1c04437030f2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/e168ebba-8a74-419a-93e5-6e2a43de0ef8" + }, + "effectiveDateTime": "1943-09-03T01:11:45-04:00", + "issued": "1943-09-03T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/91064086-da1b-4952-8476-479124cef0c6", + "resource": { + "resourceType": "Encounter", + "id": "91064086-da1b-4952-8476-479124cef0c6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "8f3a4d64-17fa-215d-7f57-6e2c7eb045c0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1944-03-03T01:11:45-04:00", + "end": "1944-03-03T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1944-03-03T01:11:45-04:00", + "end": "1944-03-03T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/727fb39f-677e-45f8-bc75-39c1869ddfc8", + "resource": { + "resourceType": "Observation", + "id": "727fb39f-677e-45f8-bc75-39c1869ddfc8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/91064086-da1b-4952-8476-479124cef0c6" + }, + "effectiveDateTime": "1944-03-03T01:11:45-04:00", + "issued": "1944-03-03T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/7e574f38-80af-4351-96ff-ab2bad7e3e87", + "resource": { + "resourceType": "Encounter", + "id": "7e574f38-80af-4351-96ff-ab2bad7e3e87", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "760b3795-c5af-92ab-6731-05ec47a0898b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1945-03-09T01:11:45-04:00", + "end": "1945-03-09T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1945-03-09T01:11:45-04:00", + "end": "1945-03-09T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0c1954cb-f065-43b1-8e13-0a7e416f7fec", + "resource": { + "resourceType": "Observation", + "id": "0c1954cb-f065-43b1-8e13-0a7e416f7fec", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/7e574f38-80af-4351-96ff-ab2bad7e3e87" + }, + "effectiveDateTime": "1945-03-09T01:11:45-04:00", + "issued": "1945-03-09T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/57b6534a-009d-4a9e-9952-58696b53cba7", + "resource": { + "resourceType": "Immunization", + "id": "57b6534a-009d-4a9e-9952-58696b53cba7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/7e574f38-80af-4351-96ff-ab2bad7e3e87" + }, + "occurrenceDateTime": "1945-03-09T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/346b986e-e67b-4ae1-bd72-d6533f4ab1f4", + "resource": { + "resourceType": "Encounter", + "id": "346b986e-e67b-4ae1-bd72-d6533f4ab1f4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f15d3dab-d608-40b3-dd2e-ebc17a622d09" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1946-03-15T00:11:45-05:00", + "end": "1946-03-15T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1946-03-15T00:11:45-05:00", + "end": "1946-03-15T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "resource": { + "resourceType": "Location", + "id": "023e8559-6c0a-47bc-9007-21f5039e3bb9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-location" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:690866aa-d2fd-8074-b448-3b7b0f1c84ad" + } + ], + "status": "active", + "name": "PCP87052", + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "ORTHO", + "display": "Orthopedics clinic" + } + ], + "text": "Orthopedics clinic" + } + ], + "telecom": [ + { + "system": "phone", + "value": "(555) 555-5555" + } + ], + "address": { + "line": [ + "1540 BRIDGE ST" + ], + "city": "DRACUT", + "state": "MA", + "postalCode": "01826-2611", + "country": "US" + }, + "position": { + "longitude": -71.30068, + "latitude": 42.679722999999996 + }, + "managingOrganization": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "resource": { + "resourceType": "Organization", + "id": "cfc1c7c6-55a8-4837-8cac-530420162033", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "56090ab7-1f97-37ff-a434-194f9c6e5510" + }, + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1144221847" + }, + { + "system": "urn:oid:2.16.840.1.113883.4.7", + "value": "12D4567890" + } + ], + "active": true, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/organization-type", + "code": "prov", + "display": "Healthcare Provider" + } + ], + "text": "Healthcare Provider" + } + ], + "name": "PCP87052", + "telecom": [ + { + "system": "phone", + "value": "(555) 555-5555" + } + ], + "address": [ + { + "line": [ + "1540 BRIDGE ST" + ], + "city": "DRACUT", + "state": "MA", + "postalCode": "01826-2611", + "country": "US" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "resource": { + "resourceType": "Practitioner", + "id": "cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "c38e2d6b-b2d5-3f8e-acae-3044eeb5edbb" + }, + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "9941339100" + } + ], + "active": true, + "name": [ + { + "family": "Torp761", + "given": [ + "Melvin857" + ], + "prefix": [ + "Dr." + ] + } + ], + "telecom": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-direct", + "valueBoolean": true + } + ], + "system": "email", + "value": "Melvin857.Torp761@example.com", + "use": "work" + } + ], + "address": [ + { + "line": [ + "1540 BRIDGE ST" + ], + "city": "DRACUT", + "state": "MA", + "postalCode": "01826-2611", + "country": "US" + } + ], + "gender": "female" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "resource": { + "resourceType": "Location", + "id": "61ecf12f-0c7b-4629-9bc0-82c284630028", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-location" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "8944e7cf-1482-b552-11a3-d3063d712d51" + } + ], + "status": "active", + "name": "LOWELL GENERAL HOSPITAL", + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP", + "display": "Hospital" + } + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "9789376000" + } + ], + "address": { + "line": [ + "295 VARNUM AVENUE" + ], + "city": "LOWELL", + "state": "MA", + "postalCode": "01854", + "country": "US" + }, + "position": { + "longitude": -71.32210699999997, + "latitude": 42.638893 + }, + "managingOrganization": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "resource": { + "resourceType": "Organization", + "id": "b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "b0e04623-b02c-3f8b-92ea-943fc4db60da" + } + ], + "active": true, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/organization-type", + "code": "prov", + "display": "Healthcare Provider" + } + ], + "text": "Healthcare Provider" + } + ], + "name": "LOWELL GENERAL HOSPITAL", + "telecom": [ + { + "system": "phone", + "value": "9789376000" + } + ], + "address": [ + { + "line": [ + "295 VARNUM AVENUE" + ], + "city": "LOWELL", + "state": "MA", + "postalCode": "01854", + "country": "US" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "resource": { + "resourceType": "Practitioner", + "id": "0e7372cc-565d-4dd0-818e-bff630254a34", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner" + ] + }, + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1250905357" + } + ], + "active": true, + "name": [ + { + "family": "Oberbrunner298", + "given": [ + "Willena258" + ], + "prefix": [ + "Dr." + ] + } + ], + "telecom": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-direct", + "valueBoolean": true + } + ], + "system": "email", + "value": "Willena258.Oberbrunner298@example.com", + "use": "work" + } + ], + "address": [ + { + "line": [ + "295 VARNUM AVENUE" + ], + "city": "LOWELL", + "state": "MA", + "postalCode": "01854", + "country": "US" + } + ], + "gender": "female" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/373d2aa4-d25e-44f2-886c-4fe378f71d78", + "resource": { + "resourceType": "Observation", + "id": "373d2aa4-d25e-44f2-886c-4fe378f71d78", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "Laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "20454-5", + "display": "Protein [Presence] in Urine by Test strip" + } + ], + "text": "PROTEIN" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2005-07-05", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "260385009", + "display": "Negative" + } + ], + "text": "Negative" + }, + "referenceRange": [ + { + "text": "Negative" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0a49d7f4-1769-45bc-91e1-7cb228116b1a", + "resource": { + "resourceType": "Observation", + "id": "0a49d7f4-1769-45bc-91e1-7cb228116b1a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-test" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-observation-category", + "code": "clinical-test", + "display": "Clinical Test" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "64098-7", + "display": "Six minute walk test" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "effectivePeriod": { + "start": "2022-07-14T21:09:46-05:00", + "end": "2022-07-14T21:24:46-05:00" + }, + "valueQuantity": { + "value": 426, + "unit": "m/(6.min)", + "system": "http://unitsofmeasure.org", + "code": "m/(6.min)" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9b65d94a-8ca9-48ca-a6b9-04ed21aaaa17", + "resource": { + "resourceType": "Observation", + "id": "9b65d94a-8ca9-48ca-a6b9-04ed21aaaa17", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-result", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-imaging" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "0485fc9e-752e-75ac-76b5-c067747bb76f" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "imaging", + "display": "imaging" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "33728-7", + "display": "Size.maximum dimension in Tumor" + } + ], + "text": "Size.maximum dimension in Tumor" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2018-08-17T17:44:25-05:00", + "issued": "2018-08-17T17:44:25.961-05:00", + "valueQuantity": { + "value": 1.7742, + "unit": "cm", + "system": "http://unitsofmeasure.org", + "code": "cm" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Media/cb686898-fdac-4232-a6db-403d8bccae60", + "resource": { + "resourceType": "Media", + "id": "cb686898-fdac-4232-a6db-403d8bccae60", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00" + }, + "basedOn": [ + { + "identifier": { + "system": "http://someclinic.org/fhir/NamingSystem/imaging-orders", + "value": "111222", + "assigner": { + "display": "XYZ Medical Clinic" + } + } + } + ], + "status": "completed", + "modality": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "39714003", + "display": "Skeletal X-ray of wrist and hand" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/477bd866-f806-4904-8b4b-8ad5ebe87722" + }, + "createdDateTime": "2016-03-15", + "bodySite": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "85151006", + "display": "Structure of left hand (body structure)" + } + ] + }, + "height": 432, + "width": 640, + "content": { + "id": "a1", + "contentType": "image/jpeg", + "url": "http://someimagingcenter.org/fhir/Binary/A12345", + "creation": "2016-03-15" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/3192fba4-ce89-41ab-ba19-0605b749bc8f", + "resource": { + "resourceType": "Observation", + "id": "3192fba4-ce89-41ab-ba19-0605b749bc8f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/346b986e-e67b-4ae1-bd72-d6533f4ab1f4" + }, + "effectiveDateTime": "1946-03-15T00:11:45-05:00", + "issued": "1946-03-15T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/249f54a2-86cb-41c3-9aa6-da83ea321872", + "resource": { + "resourceType": "Immunization", + "id": "249f54a2-86cb-41c3-9aa6-da83ea321872", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/346b986e-e67b-4ae1-bd72-d6533f4ab1f4" + }, + "occurrenceDateTime": "1946-03-15T00:11:45-05:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f90ffd70-b5e2-4aed-b0ad-0f7b96bb1cea", + "resource": { + "resourceType": "Encounter", + "id": "f90ffd70-b5e2-4aed-b0ad-0f7b96bb1cea", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ac532a0f-fba8-71bd-f448-39c8a4fcd09d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "50849002", + "display": "Emergency room admission (procedure)" + } + ], + "text": "Emergency room admission (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1946-11-23T00:11:45-05:00", + "end": "1946-11-23T01:11:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1946-11-23T00:11:45-05:00", + "end": "1946-11-23T01:11:45-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/bdb8b183-a83a-4db3-9ed4-7cda6a8f1e68", + "resource": { + "resourceType": "Condition", + "id": "bdb8b183-a83a-4db3-9ed4-7cda6a8f1e68", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "58150001", + "display": "Fracture of clavicle" + } + ], + "text": "Fracture of clavicle" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f90ffd70-b5e2-4aed-b0ad-0f7b96bb1cea" + }, + "onsetDateTime": "1946-11-23T00:11:45-05:00", + "abatementDateTime": "1947-01-22T01:11:45-05:00", + "recordedDate": "1946-11-23T00:11:45-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/6658e599-3970-4a70-acb2-c0f0f15affe7", + "resource": { + "resourceType": "MedicationRequest", + "id": "6658e599-3970-4a70-acb2-c0f0f15affe7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "243670", + "display": "Aspirin 81 MG Oral Tablet" + } + ], + "text": "Aspirin 81 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f90ffd70-b5e2-4aed-b0ad-0f7b96bb1cea" + }, + "authoredOn": "1946-11-23T01:11:45-05:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/308b3f9d-e6c1-4405-aead-e8ffb14a942d", + "resource": { + "resourceType": "CareTeam", + "id": "308b3f9d-e6c1-4405-aead-e8ffb14a942d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f90ffd70-b5e2-4aed-b0ad-0f7b96bb1cea" + }, + "period": { + "start": "1946-11-23T01:11:45-05:00", + "end": "1947-01-22T01:11:45-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "58150001", + "display": "Fracture of clavicle" + } + ], + "text": "Fracture of clavicle" + } + ], + "managingOrganization": [ + { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/ce76a752-6d41-4180-a487-f3b30c39f502", + "resource": { + "resourceType": "CarePlan", + "id": "ce76a752-6d41-4180-a487-f3b30c39f502", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Fracture care.
Activities:
  • Fracture care
  • Fracture care

Care plan is meant to treat Fracture of clavicle.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "385691007", + "display": "Fracture care" + } + ], + "text": "Fracture care" + } + ], + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f90ffd70-b5e2-4aed-b0ad-0f7b96bb1cea" + }, + "period": { + "start": "1946-11-23T01:11:45-05:00", + "end": "1947-01-22T01:11:45-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/308b3f9d-e6c1-4405-aead-e8ffb14a942d" + } + ], + "addresses": [ + { + "reference": "Condition/bdb8b183-a83a-4db3-9ed4-7cda6a8f1e68" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "183051005", + "display": "Recommendation to rest" + } + ], + "text": "Recommendation to rest" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "408580007", + "display": "Physical activity target light exercise" + } + ], + "text": "Physical activity target light exercise" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/a5e2bffe-1dae-4fba-a907-5cc6bad9556b", + "resource": { + "resourceType": "Encounter", + "id": "a5e2bffe-1dae-4fba-a907-5cc6bad9556b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ceb68662-91fb-d7d9-5829-f10cba60bac4" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up" + } + ], + "text": "Encounter for check up" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1947-01-22T01:11:45-05:00", + "end": "1947-01-22T01:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1947-01-22T01:11:45-05:00", + "end": "1947-01-22T01:26:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "58150001", + "display": "Fracture of clavicle" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/cee1edd4-492c-400e-b043-ec1ba1798988", + "resource": { + "resourceType": "DiagnosticReport", + "id": "cee1edd4-492c-400e-b043-ec1ba1798988", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/a5e2bffe-1dae-4fba-a907-5cc6bad9556b" + }, + "effectiveDateTime": "1947-01-22T01:11:45-05:00", + "issued": "1947-01-22T01:11:45.131-05:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDctMDEtMjIKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCmFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/41ad13be-e0e0-4cb6-9f3e-54d8a2326ce9", + "resource": { + "resourceType": "DocumentReference", + "id": "41ad13be-e0e0-4cb6-9f3e-54d8a2326ce9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:95f2314e-8bd2-bb55-dc66-6d733185d60e" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1947-01-22T01:11:45.131-05:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDctMDEtMjIKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCmFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/a5e2bffe-1dae-4fba-a907-5cc6bad9556b" + } + ], + "period": { + "start": "1947-01-22T01:11:45-05:00", + "end": "1947-01-22T01:26:45-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6f5a00ba-8f00-4267-8710-587e6162b0cf", + "resource": { + "resourceType": "Encounter", + "id": "6f5a00ba-8f00-4267-8710-587e6162b0cf", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "5c32d4f0-adf2-1f1d-d4f5-e3ad3c3a1d37" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1947-03-21T00:11:45-05:00", + "end": "1947-03-21T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1947-03-21T00:11:45-05:00", + "end": "1947-03-21T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b53bd0ff-3395-4e19-a210-df17172c8a25", + "resource": { + "resourceType": "Observation", + "id": "b53bd0ff-3395-4e19-a210-df17172c8a25", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6f5a00ba-8f00-4267-8710-587e6162b0cf" + }, + "effectiveDateTime": "1947-03-21T00:11:45-05:00", + "issued": "1947-03-21T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/c98a9d8a-91bb-47ef-b67a-8d2ae393fb13", + "resource": { + "resourceType": "DiagnosticReport", + "id": "c98a9d8a-91bb-47ef-b67a-8d2ae393fb13", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6f5a00ba-8f00-4267-8710-587e6162b0cf" + }, + "effectiveDateTime": "1947-03-21T00:11:45-05:00", + "issued": "1947-03-21T00:11:45.131-05:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDctMDMtMjEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCmFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/1a0bf6f9-b975-4284-82f5-2520f2765e64", + "resource": { + "resourceType": "DocumentReference", + "id": "1a0bf6f9-b975-4284-82f5-2520f2765e64", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:d7130c41-5c6c-b632-dd67-1ba7468f17c2" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1947-03-21T00:11:45.131-05:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDctMDMtMjEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCmFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/6f5a00ba-8f00-4267-8710-587e6162b0cf" + } + ], + "period": { + "start": "1947-03-21T00:11:45-05:00", + "end": "1947-03-21T00:26:45-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8d55bfb6-24df-4baa-91de-855c5e6b1a80", + "resource": { + "resourceType": "Encounter", + "id": "8d55bfb6-24df-4baa-91de-855c5e6b1a80", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "8924e4de-8410-65fc-0e18-cb0da82fc8f8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1947-11-01T00:11:45-05:00", + "end": "1947-11-01T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1947-11-01T00:11:45-05:00", + "end": "1947-11-01T00:26:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "65363002", + "display": "Otitis media" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/3dbf5872-5720-4f3e-887d-0a550b2208da", + "resource": { + "resourceType": "Condition", + "id": "3dbf5872-5720-4f3e-887d-0a550b2208da", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "65363002", + "display": "Otitis media" + } + ], + "text": "Otitis media" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/8d55bfb6-24df-4baa-91de-855c5e6b1a80" + }, + "onsetDateTime": "1947-11-01T00:11:45-05:00", + "abatementDateTime": "1948-03-26T00:11:45-05:00", + "recordedDate": "1947-11-01T00:11:45-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/1915a092-3d25-4c10-aeff-b9607255b9b7", + "resource": { + "resourceType": "MedicationRequest", + "id": "1915a092-3d25-4c10-aeff-b9607255b9b7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "1d8ed63d-3d0e-8b03-4f1d-5a2d86abe786" + } + ], + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "105078", + "display": "Penicillin G 375 MG/ML Injectable Solution" + } + ], + "text": "Penicillin G 375 MG/ML Injectable Solution" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/8d55bfb6-24df-4baa-91de-855c5e6b1a80" + }, + "authoredOn": "1947-11-01T00:11:45-05:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take at regular intervals. Complete the prescribed course unless otherwise directed.\n", + "additionalInstruction": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "418577003", + "display": "Take at regular intervals. Complete the prescribed course unless otherwise directed" + } + ], + "text": "Take at regular intervals. Complete the prescribed course unless otherwise directed" + } + ], + "timing": { + "repeat": { + "frequency": 4, + "period": 1.0, + "periodUnit": "d" + } + }, + "asNeededBoolean": false, + "doseAndRate": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", + "code": "ordered", + "display": "Ordered" + } + ] + }, + "doseQuantity": { + "value": 1.0 + } + } + ] + } + ], + "dispenseRequest": { + "numberOfRepeatsAllowed": 1, + "quantity": { + "value": 1.0 + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/6ef8e02e-043f-4cc5-a528-2902c82b9dda", + "resource": { + "resourceType": "MedicationRequest", + "id": "6ef8e02e-043f-4cc5-a528-2902c82b9dda", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication-adherence", + "extension": [ + { + "url": "medicationAdherence", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "275928001", + "display": "Drugs - partial non-compliance (finding)" + } + ] + } + }, + { + "url": "dateAsserted", + "valueDateTime": "2023-08-11T08:15:49.449Z" + }, + { + "url": "informationSource", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient (person)" + } + ] + } + } + ] + } + ], + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "243670", + "display": "Aspirin 81 MG Oral Tablet" + } + ], + "text": "Aspirin 81 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/8d55bfb6-24df-4baa-91de-855c5e6b1a80" + }, + "authoredOn": "1947-11-01T00:11:45-05:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/40dcf515-cebe-42f1-8e0d-3a8dc8a13146", + "resource": { + "resourceType": "DiagnosticReport", + "id": "40dcf515-cebe-42f1-8e0d-3a8dc8a13146", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/8d55bfb6-24df-4baa-91de-855c5e6b1a80" + }, + "effectiveDateTime": "1947-11-01T00:11:45-05:00", + "issued": "1947-11-01T00:11:45.131-05:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDctMTEtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCmFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBvdGl0aXMgbWVkaWEuIAoKIyMgUGxhbgoKVGhlIHBhdGllbnQgd2FzIHByZXNjcmliZWQgdGhlIGZvbGxvd2luZyBtZWRpY2F0aW9uczoKLSBwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb24KLSBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0Cg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/e763523b-81df-41ff-b5b2-739431c58ad9", + "resource": { + "resourceType": "DocumentReference", + "id": "e763523b-81df-41ff-b5b2-739431c58ad9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:2469bdd9-fd38-8ff4-1110-5b59ee783ea3" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1947-11-01T00:11:45.131-05:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDctMTEtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCmFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBvdGl0aXMgbWVkaWEuIAoKIyMgUGxhbgoKVGhlIHBhdGllbnQgd2FzIHByZXNjcmliZWQgdGhlIGZvbGxvd2luZyBtZWRpY2F0aW9uczoKLSBwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb24KLSBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0Cg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/8d55bfb6-24df-4baa-91de-855c5e6b1a80" + } + ], + "period": { + "start": "1947-11-01T00:11:45-05:00", + "end": "1947-11-01T00:26:45-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/bfd99b5d-31da-4673-82ed-97c90f1b61e3", + "resource": { + "resourceType": "Encounter", + "id": "bfd99b5d-31da-4673-82ed-97c90f1b61e3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "1b72789d-e119-83b8-db54-06cc4f385384" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1948-03-26T00:11:45-05:00", + "end": "1948-03-26T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1948-03-26T00:11:45-05:00", + "end": "1948-03-26T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4f7680d2-6101-48ca-88a7-c44dc5e55b26", + "resource": { + "resourceType": "Observation", + "id": "4f7680d2-6101-48ca-88a7-c44dc5e55b26", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/bfd99b5d-31da-4673-82ed-97c90f1b61e3" + }, + "effectiveDateTime": "1948-03-26T00:11:45-05:00", + "issued": "1948-03-26T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1ad5e166-35b4-4804-9f05-a5dcec718387", + "resource": { + "resourceType": "Encounter", + "id": "1ad5e166-35b4-4804-9f05-a5dcec718387", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "602d505f-d86c-89d7-94db-96e1037131b8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1949-04-01T00:11:45-05:00", + "end": "1949-04-01T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1949-04-01T00:11:45-05:00", + "end": "1949-04-01T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/94864a8f-5ed6-4f98-8130-a93973735bd4", + "resource": { + "resourceType": "Observation", + "id": "94864a8f-5ed6-4f98-8130-a93973735bd4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/1ad5e166-35b4-4804-9f05-a5dcec718387" + }, + "effectiveDateTime": "1949-04-01T00:11:45-05:00", + "issued": "1949-04-01T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/85902c1c-9aa6-4511-ac17-d506c73edadd", + "resource": { + "resourceType": "DiagnosticReport", + "id": "85902c1c-9aa6-4511-ac17-d506c73edadd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/1ad5e166-35b4-4804-9f05-a5dcec718387" + }, + "effectiveDateTime": "1949-04-01T00:11:45-05:00", + "issued": "1949-04-01T00:11:45.131-05:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDktMDQtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDkgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCnBlbmljaWxsaW4gZyAzNzUgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/4cc1a273-649c-46ad-8a87-25bc3631df39", + "resource": { + "resourceType": "DocumentReference", + "id": "4cc1a273-649c-46ad-8a87-25bc3631df39", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:2536ace1-6f55-5495-bd52-3937e0f63a13" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1949-04-01T00:11:45.131-05:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDktMDQtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDkgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLgoKIyBTb2NpYWwgSGlzdG9yeQogUGF0aWVudCBoYXMgbmV2ZXIgc21va2VkIGFuZCBpcyBhbiBhbGNvaG9saWMuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBoaWdoIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEJsdWUgQ3Jvc3MgQmx1ZSBTaGllbGQuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCnBlbmljaWxsaW4gZyAzNzUgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/1ad5e166-35b4-4804-9f05-a5dcec718387" + } + ], + "period": { + "start": "1949-04-01T00:11:45-05:00", + "end": "1949-04-01T00:26:45-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/02efc673-f971-4971-beb6-0828aab5bbca", + "resource": { + "resourceType": "Encounter", + "id": "02efc673-f971-4971-beb6-0828aab5bbca", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "84ad4dfb-a358-79fe-fe26-04e9d0815d3a" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1950-04-07T00:11:45-05:00", + "end": "1950-04-07T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1950-04-07T00:11:45-05:00", + "end": "1950-04-07T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/eaeb07b9-3d24-42d1-9822-b6baf456ba07", + "resource": { + "resourceType": "Observation", + "id": "eaeb07b9-3d24-42d1-9822-b6baf456ba07", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/02efc673-f971-4971-beb6-0828aab5bbca" + }, + "effectiveDateTime": "1950-04-07T00:11:45-05:00", + "issued": "1950-04-07T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/3175ce72-b234-46cc-a110-147c0c71e77a", + "resource": { + "resourceType": "Immunization", + "id": "3175ce72-b234-46cc-a110-147c0c71e77a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/02efc673-f971-4971-beb6-0828aab5bbca" + }, + "occurrenceDateTime": "1950-04-07T00:11:45-05:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/24a0ba44-95f0-465c-bb61-bafc47093c92", + "resource": { + "resourceType": "Encounter", + "id": "24a0ba44-95f0-465c-bb61-bafc47093c92", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "22c28531-1b1f-b2ec-efdb-6695a14d97f1" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1951-04-13T00:11:45-05:00", + "end": "1951-04-13T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1951-04-13T00:11:45-05:00", + "end": "1951-04-13T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/73c4b758-57c8-4f6a-8fc7-cbd59dad97d4", + "resource": { + "resourceType": "Observation", + "id": "73c4b758-57c8-4f6a-8fc7-cbd59dad97d4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/24a0ba44-95f0-465c-bb61-bafc47093c92" + }, + "effectiveDateTime": "1951-04-13T00:11:45-05:00", + "issued": "1951-04-13T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/69511544-0177-4ad0-a034-59b29c376a7b", + "resource": { + "resourceType": "Immunization", + "id": "69511544-0177-4ad0-a034-59b29c376a7b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/24a0ba44-95f0-465c-bb61-bafc47093c92" + }, + "occurrenceDateTime": "1951-04-13T00:11:45-05:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/c5467385-f631-4334-94a3-e31df2db3247", + "resource": { + "resourceType": "Encounter", + "id": "c5467385-f631-4334-94a3-e31df2db3247", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "bde6e071-1c97-02ad-7e10-6d3102876755" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1951-09-04T01:11:45-04:00", + "end": "1951-09-04T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1951-09-04T01:11:45-04:00", + "end": "1951-09-04T01:26:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/d6639940-7194-4186-8678-e5d82ee3e0b8", + "resource": { + "resourceType": "Condition", + "id": "d6639940-7194-4186-8678-e5d82ee3e0b8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/c5467385-f631-4334-94a3-e31df2db3247" + }, + "onsetDateTime": "1951-09-04T01:11:45-04:00", + "abatementDateTime": "1951-09-18T01:11:45-04:00", + "recordedDate": "1951-09-04T01:11:45-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d2beae4c-8340-4cce-b712-548c088342e1", + "resource": { + "resourceType": "Observation", + "id": "d2beae4c-8340-4cce-b712-548c088342e1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/c5467385-f631-4334-94a3-e31df2db3247" + }, + "effectiveDateTime": "1951-09-07T01:11:45-04:00", + "issued": "1951-09-07T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/991e0bcb-753e-4d87-9c3d-bfef64f0a241", + "resource": { + "resourceType": "MedicationRequest", + "id": "991e0bcb-753e-4d87-9c3d-bfef64f0a241", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "562251", + "display": "Amoxicillin 250 MG / Clavulanate 125 MG Oral Tablet" + } + ], + "text": "Amoxicillin 250 MG / Clavulanate 125 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/c5467385-f631-4334-94a3-e31df2db3247" + }, + "authoredOn": "1951-09-04T01:11:45-04:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "reasonReference": [ + { + "reference": "Condition/d6639940-7194-4186-8678-e5d82ee3e0b8" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/8dba919d-23e3-48a4-af97-3c445015e42f", + "resource": { + "resourceType": "DiagnosticReport", + "id": "8dba919d-23e3-48a4-af97-3c445015e42f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/c5467385-f631-4334-94a3-e31df2db3247" + }, + "effectiveDateTime": "1951-09-04T01:11:45-04:00", + "issued": "1951-09-04T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NTEtMDktMDQKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDExIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZS4KCiMgU29jaWFsIEhpc3RvcnkKIFBhdGllbnQgaGFzIG5ldmVyIHNtb2tlZCBhbmQgaXMgYW4gYWxjb2hvbGljLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgaGlnaCBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb247IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4gCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gbWVkaWNhdGlvbiByZWNvbmNpbGlhdGlvbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/1aed525e-a4d8-4f99-9fe8-98ba82e34be2", + "resource": { + "resourceType": "DocumentReference", + "id": "1aed525e-a4d8-4f99-9fe8-98ba82e34be2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:4fcadab6-9d33-a2f7-1657-9b1fdf79b7bf" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1951-09-04T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NTEtMDktMDQKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDExIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZS4KCiMgU29jaWFsIEhpc3RvcnkKIFBhdGllbnQgaGFzIG5ldmVyIHNtb2tlZCBhbmQgaXMgYW4gYWxjb2hvbGljLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgaGlnaCBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb247IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4gCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gbWVkaWNhdGlvbiByZWNvbmNpbGlhdGlvbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/c5467385-f631-4334-94a3-e31df2db3247" + } + ], + "period": { + "start": "1951-09-04T01:11:45-04:00", + "end": "1951-09-04T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b764c11b-255c-4eea-842e-832fee4f609e", + "resource": { + "resourceType": "Encounter", + "id": "b764c11b-255c-4eea-842e-832fee4f609e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d8f12ae3-1255-62fd-3d0e-5d7d11857207" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1952-04-18T00:11:45-05:00", + "end": "1952-04-18T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1952-04-18T00:11:45-05:00", + "end": "1952-04-18T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9e5daee9-19c5-4078-b21e-5ee062effeaa", + "resource": { + "resourceType": "Observation", + "id": "9e5daee9-19c5-4078-b21e-5ee062effeaa", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b764c11b-255c-4eea-842e-832fee4f609e" + }, + "effectiveDateTime": "1952-04-18T00:11:45-05:00", + "issued": "1952-04-18T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/640f4299-4746-43a4-ba51-7925cb08a652", + "resource": { + "resourceType": "Immunization", + "id": "640f4299-4746-43a4-ba51-7925cb08a652", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b764c11b-255c-4eea-842e-832fee4f609e" + }, + "occurrenceDateTime": "1952-04-18T00:11:45-05:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/408ac402-c883-4274-9908-6d7f62f6ae8d", + "resource": { + "resourceType": "Encounter", + "id": "408ac402-c883-4274-9908-6d7f62f6ae8d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "6073a575-d101-ab75-ba28-01593cb70b20" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1953-04-24T00:11:45-05:00", + "end": "1953-04-24T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1953-04-24T00:11:45-05:00", + "end": "1953-04-24T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c24d4a8b-d0f3-41b5-9670-e79b58b68ac9", + "resource": { + "resourceType": "Observation", + "id": "c24d4a8b-d0f3-41b5-9670-e79b58b68ac9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/408ac402-c883-4274-9908-6d7f62f6ae8d" + }, + "effectiveDateTime": "1953-04-24T00:11:45-05:00", + "issued": "1953-04-24T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/d4cf040b-0f66-49dd-af12-3c06a55e7402", + "resource": { + "resourceType": "Immunization", + "id": "d4cf040b-0f66-49dd-af12-3c06a55e7402", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/408ac402-c883-4274-9908-6d7f62f6ae8d" + }, + "occurrenceDateTime": "1953-04-24T00:11:45-05:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/ed985bae-f2cc-4561-9756-19353fd9787d", + "resource": { + "resourceType": "Encounter", + "id": "ed985bae-f2cc-4561-9756-19353fd9787d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "09896cce-74a7-9f8c-b80c-caa91cddc53a" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1954-04-30T01:11:45-04:00", + "end": "1954-04-30T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1954-04-30T01:11:45-04:00", + "end": "1954-04-30T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/91714b81-eca3-40cb-9942-f1055c896295", + "resource": { + "resourceType": "Observation", + "id": "91714b81-eca3-40cb-9942-f1055c896295", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/ed985bae-f2cc-4561-9756-19353fd9787d" + }, + "effectiveDateTime": "1954-04-30T01:11:45-04:00", + "issued": "1954-04-30T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/da210cde-8a24-48c1-b566-eaf916e7cdb6", + "resource": { + "resourceType": "Immunization", + "id": "da210cde-8a24-48c1-b566-eaf916e7cdb6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/ed985bae-f2cc-4561-9756-19353fd9787d" + }, + "occurrenceDateTime": "1954-04-30T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/82cc00f5-fedd-406a-a48b-810303f08dca", + "resource": { + "resourceType": "DiagnosticReport", + "id": "82cc00f5-fedd-406a-a48b-810303f08dca", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/ed985bae-f2cc-4561-9756-19353fd9787d" + }, + "effectiveDateTime": "1954-04-30T01:11:45-04:00", + "issued": "1954-04-30T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NTQtMDQtMzAKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE0IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/178f4693-fcc4-4a14-a3a5-138e0ada2d6a", + "resource": { + "resourceType": "DocumentReference", + "id": "178f4693-fcc4-4a14-a3a5-138e0ada2d6a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:e4e2aab9-251f-1d8b-58ad-9793adccb28d" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1954-04-30T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NTQtMDQtMzAKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE0IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/ed985bae-f2cc-4561-9756-19353fd9787d" + } + ], + "period": { + "start": "1954-04-30T01:11:45-04:00", + "end": "1954-04-30T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/e1dfee8a-664f-45c1-b61e-6f4aa176f4f2", + "resource": { + "resourceType": "Encounter", + "id": "e1dfee8a-664f-45c1-b61e-6f4aa176f4f2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "5c2fb1b4-7643-d6b4-0174-a1d26d1cade7" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1955-05-06T01:11:45-04:00", + "end": "1955-05-06T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1955-05-06T01:11:45-04:00", + "end": "1955-05-06T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/95bcff1a-a6c7-4f92-80c8-c31ed4d544b9", + "resource": { + "resourceType": "Observation", + "id": "95bcff1a-a6c7-4f92-80c8-c31ed4d544b9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/e1dfee8a-664f-45c1-b61e-6f4aa176f4f2" + }, + "effectiveDateTime": "1955-05-06T01:11:45-04:00", + "issued": "1955-05-06T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/c3e17b3a-10de-411b-9110-24131a76115a", + "resource": { + "resourceType": "Immunization", + "id": "c3e17b3a-10de-411b-9110-24131a76115a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/e1dfee8a-664f-45c1-b61e-6f4aa176f4f2" + }, + "occurrenceDateTime": "1955-05-06T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/423ac92b-782f-43b9-ae0c-3bbdef07f670", + "resource": { + "resourceType": "Encounter", + "id": "423ac92b-782f-43b9-ae0c-3bbdef07f670", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "b2e94c67-c8d5-e42d-ea7c-b9130c07aa68" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1956-05-11T01:11:45-04:00", + "end": "1956-05-11T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1956-05-11T01:11:45-04:00", + "end": "1956-05-11T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/73d31e9f-3733-4808-9f4f-1e5d78876b64", + "resource": { + "resourceType": "Observation", + "id": "73d31e9f-3733-4808-9f4f-1e5d78876b64", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/423ac92b-782f-43b9-ae0c-3bbdef07f670" + }, + "effectiveDateTime": "1956-05-11T01:11:45-04:00", + "issued": "1956-05-11T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/41833abd-dc0c-4963-b381-012ae7f7e23c", + "resource": { + "resourceType": "DiagnosticReport", + "id": "41833abd-dc0c-4963-b381-012ae7f7e23c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/423ac92b-782f-43b9-ae0c-3bbdef07f670" + }, + "effectiveDateTime": "1956-05-11T01:11:45-04:00", + "issued": "1956-05-11T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NTYtMDUtMTEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE2IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/12ca1a93-f774-4ff2-8423-5cb2161be671", + "resource": { + "resourceType": "DocumentReference", + "id": "12ca1a93-f774-4ff2-8423-5cb2161be671", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:393d97e4-f301-e7d8-9332-778dbc75e751" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1956-05-11T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NTYtMDUtMTEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE2IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/423ac92b-782f-43b9-ae0c-3bbdef07f670" + } + ], + "period": { + "start": "1956-05-11T01:11:45-04:00", + "end": "1956-05-11T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b089244d-90ef-472f-a2cf-1ad0e89f5b2e", + "resource": { + "resourceType": "Encounter", + "id": "b089244d-90ef-472f-a2cf-1ad0e89f5b2e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "6a865564-01a2-b6d4-aa95-0e3bfe4792c0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1957-05-17T01:11:45-04:00", + "end": "1957-05-17T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1957-05-17T01:11:45-04:00", + "end": "1957-05-17T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/26676879-d811-482a-8b88-a421e3fa362c", + "resource": { + "resourceType": "Observation", + "id": "26676879-d811-482a-8b88-a421e3fa362c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b089244d-90ef-472f-a2cf-1ad0e89f5b2e" + }, + "effectiveDateTime": "1957-05-17T01:11:45-04:00", + "issued": "1957-05-17T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/63459952-808f-487f-937b-31e194a2a82e", + "resource": { + "resourceType": "Immunization", + "id": "63459952-808f-487f-937b-31e194a2a82e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b089244d-90ef-472f-a2cf-1ad0e89f5b2e" + }, + "occurrenceDateTime": "1957-05-17T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6bf8c4a6-3f57-40cd-b371-cc16a5f074bc", + "resource": { + "resourceType": "Encounter", + "id": "6bf8c4a6-3f57-40cd-b371-cc16a5f074bc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f3a71d9a-67bd-756f-2de7-db59e6788457" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1958-05-23T01:11:45-04:00", + "end": "1958-05-23T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1958-05-23T01:11:45-04:00", + "end": "1958-05-23T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a7815c19-d3b2-4794-bff1-6eca07cfbb33", + "resource": { + "resourceType": "Observation", + "id": "a7815c19-d3b2-4794-bff1-6eca07cfbb33", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6bf8c4a6-3f57-40cd-b371-cc16a5f074bc" + }, + "effectiveDateTime": "1958-05-23T01:11:45-04:00", + "issued": "1958-05-23T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/21ef1297-4e62-4c45-a748-5dbc09652684", + "resource": { + "resourceType": "Immunization", + "id": "21ef1297-4e62-4c45-a748-5dbc09652684", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6bf8c4a6-3f57-40cd-b371-cc16a5f074bc" + }, + "occurrenceDateTime": "1958-05-23T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/cdecb527-03e0-42ee-ad96-16006d9c96d1", + "resource": { + "resourceType": "DiagnosticReport", + "id": "cdecb527-03e0-42ee-ad96-16006d9c96d1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6bf8c4a6-3f57-40cd-b371-cc16a5f074bc" + }, + "effectiveDateTime": "1958-05-23T01:11:45-04:00", + "issued": "1958-05-23T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NTgtMDUtMjMKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE4IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb247IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/b7d12e2a-2376-422e-b3b3-0705cbf8655a", + "resource": { + "resourceType": "DocumentReference", + "id": "b7d12e2a-2376-422e-b3b3-0705cbf8655a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:eb75e932-f3b5-1482-e142-0e31c97b4f95" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1958-05-23T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NTgtMDUtMjMKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE4IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb247IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/6bf8c4a6-3f57-40cd-b371-cc16a5f074bc" + } + ], + "period": { + "start": "1958-05-23T01:11:45-04:00", + "end": "1958-05-23T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc", + "resource": { + "resourceType": "Encounter", + "id": "efbc99e9-8089-4b1f-b285-1ec3a57e44dc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "730ff08d-870e-b48b-518a-7efff8813772" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1958-12-21T00:11:45-05:00", + "end": "1958-12-21T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1958-12-21T00:11:45-05:00", + "end": "1958-12-21T00:26:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/cac6d266-b341-4a03-bca6-33b9ca4ad4c3", + "resource": { + "resourceType": "Condition", + "id": "cac6d266-b341-4a03-bca6-33b9ca4ad4c3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc" + }, + "onsetDateTime": "1958-12-21T00:11:45-05:00", + "abatementDateTime": "1958-12-28T00:11:45-05:00", + "recordedDate": "1958-12-21T00:11:45-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/12e9fb15-c441-45e8-a4af-bf93518e634a", + "resource": { + "resourceType": "MedicationRequest", + "id": "12e9fb15-c441-45e8-a4af-bf93518e634a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "1043400", + "display": "Acetaminophen 21.7 MG/ML / Dextromethorphan Hydrobromide 1 MG/ML / doxylamine succinate 0.417 MG/ML Oral Solution" + } + ], + "text": "Acetaminophen 21.7 MG/ML / Dextromethorphan Hydrobromide 1 MG/ML / doxylamine succinate 0.417 MG/ML Oral Solution" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc" + }, + "authoredOn": "1958-12-21T00:11:45-05:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "reasonReference": [ + { + "reference": "Condition/cac6d266-b341-4a03-bca6-33b9ca4ad4c3" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/8844e3d2-7985-4a41-b08c-94f3ac13f72f", + "resource": { + "resourceType": "CareTeam", + "id": "8844e3d2-7985-4a41-b08c-94f3ac13f72f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc" + }, + "period": { + "start": "1958-12-21T00:11:45-05:00", + "end": "1959-05-29T01:11:45-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/8f76d57c-6c33-4e51-a542-67c77ab86624", + "resource": { + "resourceType": "CarePlan", + "id": "8f76d57c-6c33-4e51-a542-67c77ab86624", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc" + }, + "period": { + "start": "1958-12-21T00:11:45-05:00", + "end": "1959-05-29T01:11:45-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/8844e3d2-7985-4a41-b08c-94f3ac13f72f" + } + ], + "addresses": [ + { + "reference": "Condition/cac6d266-b341-4a03-bca6-33b9ca4ad4c3" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/f0a51490-f427-4518-91b2-036dfaeb0055", + "resource": { + "resourceType": "DiagnosticReport", + "id": "f0a51490-f427-4518-91b2-036dfaeb0055", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc" + }, + "effectiveDateTime": "1958-12-21T00:11:45-05:00", + "issued": "1958-12-21T00:11:45.131-05:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NTgtMTItMjEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE4IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb247IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuClBhdGllbnQgaXMgcHJlc2VudGluZyB3aXRoIGFjdXRlIGJyb25jaGl0aXMgKGRpc29yZGVyKS4gCgojIyBQbGFuCgpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGFjZXRhbWlub3BoZW4gMjEuNyBtZy9tbCAvIGRleHRyb21ldGhvcnBoYW4gaHlkcm9icm9taWRlIDEgbWcvbWwgLyBkb3h5bGFtaW5lIHN1Y2NpbmF0ZSAwLjQxNyBtZy9tbCBvcmFsIHNvbHV0aW9uClRoZSBwYXRpZW50IHdhcyBwbGFjZWQgb24gYSBjYXJlcGxhbjoKLSByZXNwaXJhdG9yeSB0aGVyYXB5Cg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/a740be42-62fd-4a80-8de3-c816667dc483", + "resource": { + "resourceType": "DocumentReference", + "id": "a740be42-62fd-4a80-8de3-c816667dc483", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:a6e8a4af-1c5b-8034-1c20-d3c873abd066" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1958-12-21T00:11:45.131-05:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NTgtMTItMjEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE4IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2Ygb3RpdGlzIG1lZGlhLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBmcmFjdHVyZSBvZiBjbGF2aWNsZSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpwZW5pY2lsbGluIGcgMzc1IG1nL21sIGluamVjdGFibGUgc29sdXRpb247IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuClBhdGllbnQgaXMgcHJlc2VudGluZyB3aXRoIGFjdXRlIGJyb25jaGl0aXMgKGRpc29yZGVyKS4gCgojIyBQbGFuCgpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGFjZXRhbWlub3BoZW4gMjEuNyBtZy9tbCAvIGRleHRyb21ldGhvcnBoYW4gaHlkcm9icm9taWRlIDEgbWcvbWwgLyBkb3h5bGFtaW5lIHN1Y2NpbmF0ZSAwLjQxNyBtZy9tbCBvcmFsIHNvbHV0aW9uClRoZSBwYXRpZW50IHdhcyBwbGFjZWQgb24gYSBjYXJlcGxhbjoKLSByZXNwaXJhdG9yeSB0aGVyYXB5Cg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc" + } + ], + "period": { + "start": "1958-12-21T00:11:45-05:00", + "end": "1958-12-21T00:26:45-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/68f29c74-805a-49e3-8796-137b8d4083eb", + "resource": { + "resourceType": "Encounter", + "id": "68f29c74-805a-49e3-8796-137b8d4083eb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a1c67797-2089-fbe3-9e8d-09adf7b31148" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1959-05-29T01:11:45-04:00", + "end": "1959-05-29T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1959-05-29T01:11:45-04:00", + "end": "1959-05-29T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/044966b5-0b58-40e3-84a4-b71a417ffba6", + "resource": { + "resourceType": "Observation", + "id": "044966b5-0b58-40e3-84a4-b71a417ffba6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/68f29c74-805a-49e3-8796-137b8d4083eb" + }, + "effectiveDateTime": "1959-05-29T01:11:45-04:00", + "issued": "1959-05-29T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/0f58ccac-3853-4298-8153-c549e9216082", + "resource": { + "resourceType": "Immunization", + "id": "0f58ccac-3853-4298-8153-c549e9216082", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/68f29c74-805a-49e3-8796-137b8d4083eb" + }, + "occurrenceDateTime": "1959-05-29T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/34b6a606-06c3-46c5-a1f6-cabc1e39ea63", + "resource": { + "resourceType": "DiagnosticReport", + "id": "34b6a606-06c3-46c5-a1f6-cabc1e39ea63", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/68f29c74-805a-49e3-8796-137b8d4083eb" + }, + "effectiveDateTime": "1959-05-29T01:11:45-04:00", + "issued": "1959-05-29T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NTktMDUtMjkKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE5IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/cf3d40d5-42d4-4737-8375-903d8dd55fbb", + "resource": { + "resourceType": "DocumentReference", + "id": "cf3d40d5-42d4-4737-8375-903d8dd55fbb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:3a79a6cf-302f-32b5-42f7-44f471c2cbbc" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1959-05-29T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NTktMDUtMjkKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDE5IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/68f29c74-805a-49e3-8796-137b8d4083eb" + } + ], + "period": { + "start": "1959-05-29T01:11:45-04:00", + "end": "1959-05-29T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/9edd5abd-c7f5-489f-8ae7-8509ec132ee9", + "resource": { + "resourceType": "Encounter", + "id": "9edd5abd-c7f5-489f-8ae7-8509ec132ee9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "8c42de09-10d9-4dff-8042-708a3899ae10" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1961-06-25T01:11:45-04:00", + "end": "1961-06-25T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1961-06-25T01:11:45-04:00", + "end": "1961-06-25T01:26:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/38e03acd-3203-48ef-bc89-b19e2e07c8eb", + "resource": { + "resourceType": "Condition", + "id": "38e03acd-3203-48ef-bc89-b19e2e07c8eb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason", + "valueCode": "unknown" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ], + "text": "Acute viral pharyngitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/9edd5abd-c7f5-489f-8ae7-8509ec132ee9" + }, + "onsetDateTime": "1961-06-25T01:11:45-04:00", + "abatementDateTime": "1961-07-07T01:11:45-04:00", + "recordedDate": "1961-06-25T01:11:45-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/d73dd470-7723-4b6d-8d35-c56ee2804ae3", + "resource": { + "resourceType": "DiagnosticReport", + "id": "d73dd470-7723-4b6d-8d35-c56ee2804ae3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/9edd5abd-c7f5-489f-8ae7-8509ec132ee9" + }, + "effectiveDateTime": "1961-06-25T01:11:45-04:00", + "issued": "1961-06-25T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NjEtMDYtMjUKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDIxIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLiAKCiMjIFBsYW4KCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/e030f1ba-a738-4d06-a6c9-88a6a86ab563", + "resource": { + "resourceType": "DocumentReference", + "id": "e030f1ba-a738-4d06-a6c9-88a6a86ab563", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:62a8663b-52c1-14f1-3902-cdb5ef1545a7" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1961-06-25T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NjEtMDYtMjUKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDIxIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLiAKCiMjIFBsYW4KCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/9edd5abd-c7f5-489f-8ae7-8509ec132ee9" + } + ], + "period": { + "start": "1961-06-25T01:11:45-04:00", + "end": "1961-06-25T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8", + "resource": { + "resourceType": "Encounter", + "id": "a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a34a17af-87f4-0147-b6c1-12e47a727731" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1962-06-01T01:11:45-04:00", + "end": "1962-06-01T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1962-06-01T01:11:45-04:00", + "end": "1962-06-01T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/31aadc61-aa73-4e4d-8678-2eae63b567cc", + "resource": { + "resourceType": "Observation", + "id": "31aadc61-aa73-4e4d-8678-2eae63b567cc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8" + }, + "effectiveDateTime": "1962-06-01T01:11:45-04:00", + "issued": "1962-06-01T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/2e098f7d-a191-4f8b-a85d-82086d981c7e", + "resource": { + "resourceType": "Procedure", + "id": "2e098f7d-a191-4f8b-a85d-82086d981c7e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8" + }, + "performedPeriod": { + "start": "1962-06-01T01:11:45-04:00", + "end": "1962-06-01T01:26:45-04:00" + }, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/50180635-e85f-41b2-a2c8-3631bb3c8054", + "resource": { + "resourceType": "Immunization", + "id": "50180635-e85f-41b2-a2c8-3631bb3c8054", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8" + }, + "occurrenceDateTime": "1962-06-01T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/bdcf4e64-e9c3-4643-91a2-4c63a52dadf8", + "resource": { + "resourceType": "DiagnosticReport", + "id": "bdcf4e64-e9c3-4643-91a2-4c63a52dadf8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8" + }, + "effectiveDateTime": "1962-06-01T01:11:45-04:00", + "issued": "1962-06-01T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NjItMDYtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDIyIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/1a73cc79-10ae-49e6-ae4d-8c49dff086f6", + "resource": { + "resourceType": "DocumentReference", + "id": "1a73cc79-10ae-49e6-ae4d-8c49dff086f6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:ec5b8793-b7cf-bd2f-0da6-48a3fd9f4367" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1962-06-01T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NjItMDYtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDIyIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8" + } + ], + "period": { + "start": "1962-06-01T01:11:45-04:00", + "end": "1962-06-01T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/83f71c13-0dda-43fd-bd85-d06b3f461c96", + "resource": { + "resourceType": "Encounter", + "id": "83f71c13-0dda-43fd-bd85-d06b3f461c96", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "261ded39-3b97-663c-1cc4-6cd91ba6a536" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1962-09-03T01:11:45-04:00", + "end": "1962-09-03T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1962-09-03T01:11:45-04:00", + "end": "1962-09-03T01:26:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/77ad0a1b-d7d3-46e9-9842-8650a0c79e4a", + "resource": { + "resourceType": "Condition", + "id": "77ad0a1b-d7d3-46e9-9842-8650a0c79e4a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ], + "text": "Acute viral pharyngitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/83f71c13-0dda-43fd-bd85-d06b3f461c96" + }, + "onsetDateTime": "1962-09-03T01:11:45-04:00", + "abatementDateTime": "1962-09-12T01:11:45-04:00", + "recordedDate": "1962-09-03T01:11:45-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936", + "resource": { + "resourceType": "Encounter", + "id": "5ec9bca5-7a63-4160-a820-88ef497c5936", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "729f208d-6ad2-6503-48a0-4ef5427c8d3e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1964-02-03T00:11:45-05:00", + "end": "1964-02-03T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1964-02-03T00:11:45-05:00", + "end": "1964-02-03T00:26:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/5bbcd836-1618-4691-ab7d-bdf18bbbb4f1", + "resource": { + "resourceType": "Condition", + "id": "5bbcd836-1618-4691-ab7d-bdf18bbbb4f1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936" + }, + "onsetDateTime": "1964-02-03T00:11:45-05:00", + "abatementDateTime": "1964-02-17T00:17:45-05:00", + "recordedDate": "1964-02-03T00:11:45-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/04d13851-33cb-4d2c-99cf-123ea19d03eb", + "resource": { + "resourceType": "MedicationRequest", + "id": "04d13851-33cb-4d2c-99cf-123ea19d03eb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313782", + "display": "Acetaminophen 325 MG Oral Tablet" + } + ], + "text": "Acetaminophen 325 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936" + }, + "authoredOn": "1964-02-03T00:17:45-05:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "reasonReference": [ + { + "reference": "Condition/cac6d266-b341-4a03-bca6-33b9ca4ad4c3" + }, + { + "reference": "Condition/5bbcd836-1618-4691-ab7d-bdf18bbbb4f1" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/2aaed795-9fa5-4bf0-b070-22e7fd38c58e", + "resource": { + "resourceType": "CareTeam", + "id": "2aaed795-9fa5-4bf0-b070-22e7fd38c58e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936" + }, + "period": { + "start": "1964-02-03T00:17:45-05:00", + "end": "1965-06-04T01:11:45-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/0ccad2e9-6157-4d74-ab64-b960223aca75", + "resource": { + "resourceType": "CarePlan", + "id": "0ccad2e9-6157-4d74-ab64-b960223aca75", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936" + }, + "period": { + "start": "1964-02-03T00:17:45-05:00", + "end": "1965-06-04T01:11:45-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/2aaed795-9fa5-4bf0-b070-22e7fd38c58e" + } + ], + "addresses": [ + { + "reference": "Condition/cac6d266-b341-4a03-bca6-33b9ca4ad4c3" + }, + { + "reference": "Condition/5bbcd836-1618-4691-ab7d-bdf18bbbb4f1" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/a21585a5-c136-4f22-9890-37b7f6abaa62", + "resource": { + "resourceType": "DiagnosticReport", + "id": "a21585a5-c136-4f22-9890-37b7f6abaa62", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936" + }, + "effectiveDateTime": "1964-02-03T00:11:45-05:00", + "issued": "1964-02-03T00:11:45.131-05:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NjQtMDItMDMKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDIzIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBhY3V0ZSBicm9uY2hpdGlzIChkaXNvcmRlcikuIAoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIHNwdXR1bSBleGFtaW5hdGlvbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGFjZXRhbWlub3BoZW4gMzI1IG1nIG9yYWwgdGFibGV0ClRoZSBwYXRpZW50IHdhcyBwbGFjZWQgb24gYSBjYXJlcGxhbjoKLSByZXNwaXJhdG9yeSB0aGVyYXB5Cg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/b0db2fe0-0206-42fb-9dd6-08cf7ebee59c", + "resource": { + "resourceType": "DocumentReference", + "id": "b0db2fe0-0206-42fb-9dd6-08cf7ebee59c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:cdfc0fc1-cb61-c04d-6720-834f2ef5a356" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1964-02-03T00:11:45.131-05:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NjQtMDItMDMKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDIzIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDIxLjcgbWcvbWwgLyBkZXh0cm9tZXRob3JwaGFuIGh5ZHJvYnJvbWlkZSAxIG1nL21sIC8gZG94eWxhbWluZSBzdWNjaW5hdGUgMC40MTcgbWcvbWwgb3JhbCBzb2x1dGlvbjsgcGVuaWNpbGxpbiBnIDM3NSBtZy9tbCBpbmplY3RhYmxlIHNvbHV0aW9uOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0OyBhbW94aWNpbGxpbiAyNTAgbWcgLyBjbGF2dWxhbmF0ZSAxMjUgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBhY3V0ZSBicm9uY2hpdGlzIChkaXNvcmRlcikuIAoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIHNwdXR1bSBleGFtaW5hdGlvbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGFjZXRhbWlub3BoZW4gMzI1IG1nIG9yYWwgdGFibGV0ClRoZSBwYXRpZW50IHdhcyBwbGFjZWQgb24gYSBjYXJlcGxhbjoKLSByZXNwaXJhdG9yeSB0aGVyYXB5Cg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936" + } + ], + "period": { + "start": "1964-02-03T00:11:45-05:00", + "end": "1964-02-03T00:26:45-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/179334f9-0484-4699-ba4f-4d0989ac8487", + "resource": { + "resourceType": "Encounter", + "id": "179334f9-0484-4699-ba4f-4d0989ac8487", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "e014fcd2-5cea-12a2-a25d-8a47c677e884" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ], + "text": "Encounter for check up (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1964-02-14T00:11:45-05:00", + "end": "1964-02-14T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1964-02-14T00:11:45-05:00", + "end": "1964-02-14T00:26:45-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1583596d-ef20-41e9-a11a-410753e948c0", + "resource": { + "resourceType": "Observation", + "id": "1583596d-ef20-41e9-a11a-410753e948c0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/179334f9-0484-4699-ba4f-4d0989ac8487" + }, + "effectiveDateTime": "1964-02-14T00:11:45-05:00", + "issued": "1964-02-14T00:11:45.131-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/4f941c6a-aa69-415f-bc53-8581cbe0a436", + "resource": { + "resourceType": "Immunization", + "id": "4f941c6a-aa69-415f-bc53-8581cbe0a436", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/179334f9-0484-4699-ba4f-4d0989ac8487" + }, + "occurrenceDateTime": "1964-02-14T00:11:45-05:00", + "primarySource": true, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/4c31a373-562d-4103-9ebf-5e6cf7dc362e", + "resource": { + "resourceType": "Encounter", + "id": "4c31a373-562d-4103-9ebf-5e6cf7dc362e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "7e2aeb74-6719-f91f-fd32-0f62ed678331" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1965-06-04T01:11:45-04:00", + "end": "1965-06-04T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1965-06-04T01:11:45-04:00", + "end": "1965-06-04T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/2ddb0a5a-df51-4eeb-877a-fcc10dba77e9", + "resource": { + "resourceType": "Observation", + "id": "2ddb0a5a-df51-4eeb-877a-fcc10dba77e9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/4c31a373-562d-4103-9ebf-5e6cf7dc362e" + }, + "effectiveDateTime": "1965-06-04T01:11:45-04:00", + "issued": "1965-06-04T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/a283ffa3-d380-43d2-8234-863ea100ec19", + "resource": { + "resourceType": "Immunization", + "id": "a283ffa3-d380-43d2-8234-863ea100ec19", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/4c31a373-562d-4103-9ebf-5e6cf7dc362e" + }, + "occurrenceDateTime": "1965-06-04T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/deaf25c3-b974-4f5b-9d42-46defef167f4", + "resource": { + "resourceType": "Encounter", + "id": "deaf25c3-b974-4f5b-9d42-46defef167f4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "fc0d2cbc-b9ee-4539-f2aa-6540ea24d4a0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1968-06-07T01:11:45-04:00", + "end": "1968-06-07T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1968-06-07T01:11:45-04:00", + "end": "1968-06-07T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/21589da7-db83-42b7-b8d0-919d57896175", + "resource": { + "resourceType": "Observation", + "id": "21589da7-db83-42b7-b8d0-919d57896175", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/deaf25c3-b974-4f5b-9d42-46defef167f4" + }, + "effectiveDateTime": "1968-06-07T01:11:45-04:00", + "issued": "1968-06-07T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/4395111d-545c-477d-b0af-45826670e714", + "resource": { + "resourceType": "Procedure", + "id": "4395111d-545c-477d-b0af-45826670e714", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/deaf25c3-b974-4f5b-9d42-46defef167f4" + }, + "performedPeriod": { + "start": "1968-06-07T01:11:45-04:00", + "end": "1968-06-07T01:26:45-04:00" + }, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/9ddbc0ca-1113-46cf-a9e9-cb6fb7822b87", + "resource": { + "resourceType": "Immunization", + "id": "9ddbc0ca-1113-46cf-a9e9-cb6fb7822b87", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/deaf25c3-b974-4f5b-9d42-46defef167f4" + }, + "occurrenceDateTime": "1968-06-07T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/e7ee4f64-3db5-4935-9d03-5c416b14db21", + "resource": { + "resourceType": "Encounter", + "id": "e7ee4f64-3db5-4935-9d03-5c416b14db21", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "7d568ada-d65d-4ff8-2603-e529c6caf518" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1969-06-22T01:11:45-04:00", + "end": "1969-06-22T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1969-06-22T01:11:45-04:00", + "end": "1969-06-22T01:26:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/6cf69605-6267-4a67-b757-fd270bcd711c", + "resource": { + "resourceType": "Condition", + "id": "6cf69605-6267-4a67-b757-fd270bcd711c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/e7ee4f64-3db5-4935-9d03-5c416b14db21" + }, + "onsetDateTime": "1969-06-22T01:11:45-04:00", + "abatementDateTime": "1969-07-06T01:11:45-04:00", + "recordedDate": "1969-06-22T01:11:45-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/e3b4846b-fba8-4357-b729-fef4cb0164e3", + "resource": { + "resourceType": "Encounter", + "id": "e3b4846b-fba8-4357-b729-fef4cb0164e3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "dd6ee77d-6202-e6e9-fddd-3222e5474875" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1969-10-08T01:11:45-04:00", + "end": "1969-10-08T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1969-10-08T01:11:45-04:00", + "end": "1969-10-08T01:26:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/2c963716-6cd8-49e5-b22d-2c737231806b", + "resource": { + "resourceType": "Condition", + "id": "2c963716-6cd8-49e5-b22d-2c737231806b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ], + "text": "Acute viral pharyngitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/e3b4846b-fba8-4357-b729-fef4cb0164e3" + }, + "onsetDateTime": "1969-10-08T01:11:45-04:00", + "abatementDateTime": "1969-10-15T01:11:45-04:00", + "recordedDate": "1969-10-08T01:11:45-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1", + "resource": { + "resourceType": "Encounter", + "id": "6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "aa24e14a-051d-b4b9-d8fb-f15ac189d7a8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1971-06-11T01:11:45-04:00", + "end": "1971-06-11T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1971-06-11T01:11:45-04:00", + "end": "1971-06-11T01:26:45-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4b08120b-cf0b-4281-afc0-c05cc5678066", + "resource": { + "resourceType": "Observation", + "id": "4b08120b-cf0b-4281-afc0-c05cc5678066", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1" + }, + "effectiveDateTime": "1971-06-11T01:11:45-04:00", + "issued": "1971-06-11T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/e774751b-ac79-4dc4-9bc8-9dbf9efdbf68", + "resource": { + "resourceType": "Immunization", + "id": "e774751b-ac79-4dc4-9bc8-9dbf9efdbf68", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1" + }, + "occurrenceDateTime": "1971-06-11T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/151d0ea7-959b-4164-a2eb-32e48ec17b7c", + "resource": { + "resourceType": "DiagnosticReport", + "id": "151d0ea7-959b-4164-a2eb-32e48ec17b7c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1" + }, + "effectiveDateTime": "1971-06-11T01:11:45-04:00", + "issued": "1971-06-11T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NzEtMDYtMTEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDMxIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgYWNldGFtaW5vcGhlbiAyMS43IG1nL21sIC8gZGV4dHJvbWV0aG9ycGhhbiBoeWRyb2Jyb21pZGUgMSBtZy9tbCAvIGRveHlsYW1pbmUgc3VjY2luYXRlIDAuNDE3IG1nL21sIG9yYWwgc29sdXRpb247IHBlbmljaWxsaW4gZyAzNzUgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldDsgYW1veGljaWxsaW4gMjUwIG1nIC8gY2xhdnVsYW5hdGUgMTI1IG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUuIApUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gbWVkaWNhdGlvbiByZWNvbmNpbGlhdGlvbiAocHJvY2VkdXJlKQo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/89cdbef2-ed63-4c8f-b34f-9112dc737b4a", + "resource": { + "resourceType": "DocumentReference", + "id": "89cdbef2-ed63-4c8f-b34f-9112dc737b4a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:15ad0f57-f7c3-2dec-0db4-feccdc3245d2" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1971-06-11T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NzEtMDYtMTEKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDMxIHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgYWNldGFtaW5vcGhlbiAyMS43IG1nL21sIC8gZGV4dHJvbWV0aG9ycGhhbiBoeWRyb2Jyb21pZGUgMSBtZy9tbCAvIGRveHlsYW1pbmUgc3VjY2luYXRlIDAuNDE3IG1nL21sIG9yYWwgc29sdXRpb247IHBlbmljaWxsaW4gZyAzNzUgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldDsgYW1veGljaWxsaW4gMjUwIG1nIC8gY2xhdnVsYW5hdGUgMTI1IG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUuIApUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gbWVkaWNhdGlvbiByZWNvbmNpbGlhdGlvbiAocHJvY2VkdXJlKQo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1" + } + ], + "period": { + "start": "1971-06-11T01:11:45-04:00", + "end": "1971-06-11T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/c67490c9-5799-4de5-9753-8b21250f1b6a", + "resource": { + "resourceType": "Encounter", + "id": "c67490c9-5799-4de5-9753-8b21250f1b6a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "854eb6eb-7d5b-77ff-0cc8-94de7a739101" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1972-03-05T00:11:45-05:00", + "end": "1972-03-05T00:26:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1972-03-05T00:11:45-05:00", + "end": "1972-03-05T00:26:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/2ce3d17d-9925-4a2a-b830-abb15ac3e5a2", + "resource": { + "resourceType": "Condition", + "id": "2ce3d17d-9925-4a2a-b830-abb15ac3e5a2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ], + "text": "Acute viral pharyngitis (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/c67490c9-5799-4de5-9753-8b21250f1b6a" + }, + "onsetDateTime": "1972-03-05T00:11:45-05:00", + "abatementDateTime": "1972-03-13T00:11:45-05:00", + "recordedDate": "1972-03-05T00:11:45-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1e8048ed-e44a-4d28-863e-7b851b42b21b", + "resource": { + "resourceType": "Encounter", + "id": "1e8048ed-e44a-4d28-863e-7b851b42b21b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "1904f534-2ec3-d480-dc4b-caf634416a57" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1974-03-29T01:11:45-04:00", + "end": "1974-03-29T02:42:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1974-03-29T01:11:45-04:00", + "end": "1974-03-29T02:42:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/60497591-83b7-4d03-9c86-0163c6dc083e", + "resource": { + "resourceType": "Condition", + "id": "60497591-83b7-4d03-9c86-0163c6dc083e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ], + "text": "Chronic congestive heart failure (disorder)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/1e8048ed-e44a-4d28-863e-7b851b42b21b" + }, + "onsetDateTime": "1974-03-29T01:11:45-04:00", + "recordedDate": "1974-03-29T01:11:45-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/96437588-5174-478d-b2a6-8c5ffc5a6354", + "resource": { + "resourceType": "Procedure", + "id": "96437588-5174-478d-b2a6-8c5ffc5a6354", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "399208008", + "display": "Plain X-ray of chest (procedure)" + } + ], + "text": "Plain X-ray of chest (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/1e8048ed-e44a-4d28-863e-7b851b42b21b" + }, + "performedPeriod": { + "start": "1974-03-29T02:13:45-04:00", + "end": "1974-03-29T02:43:45-04:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/6a67194c-1b2f-4fe5-8759-a2f11e4fac2b", + "resource": { + "resourceType": "Procedure", + "id": "6a67194c-1b2f-4fe5-8759-a2f11e4fac2b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "762998009", + "display": "Assessment using New York Heart Association Classification (procedure)" + } + ], + "text": "Assessment using New York Heart Association Classification (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/1e8048ed-e44a-4d28-863e-7b851b42b21b" + }, + "performedPeriod": { + "start": "1974-03-29T02:13:45-04:00", + "end": "1974-03-29T02:42:45-04:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e", + "display": "Chronic congestive heart failure (disorder)" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/77142479-92e2-4b0f-b2b2-1e90dfc8f33a", + "resource": { + "resourceType": "Encounter", + "id": "77142479-92e2-4b0f-b2b2-1e90dfc8f33a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "083634fd-9bac-f5d6-e4c2-a866188714b5" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1974-04-12T02:42:45-04:00", + "end": "1974-04-12T02:57:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1974-04-12T02:42:45-04:00", + "end": "1974-04-12T02:57:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/b3f4be36-8b72-4d25-a40c-60f76a0a7aba", + "resource": { + "resourceType": "Procedure", + "id": "b3f4be36-8b72-4d25-a40c-60f76a0a7aba", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/77142479-92e2-4b0f-b2b2-1e90dfc8f33a" + }, + "performedPeriod": { + "start": "1974-04-12T02:42:45-04:00", + "end": "1974-04-12T02:57:45-04:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/ec88d024-d986-46b9-bace-29f0b72061f2", + "resource": { + "resourceType": "MedicationRequest", + "id": "ec88d024-d986-46b9-bace-29f0b72061f2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313988", + "display": "Furosemide 40 MG Oral Tablet" + } + ], + "text": "Furosemide 40 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/77142479-92e2-4b0f-b2b2-1e90dfc8f33a" + }, + "authoredOn": "1974-04-12T02:42:45-04:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/3872d222-cfcb-4dde-a049-546aab6bd4bd", + "resource": { + "resourceType": "CareTeam", + "id": "3872d222-cfcb-4dde-a049-546aab6bd4bd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "active", + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/77142479-92e2-4b0f-b2b2-1e90dfc8f33a" + }, + "period": { + "start": "1974-04-12T02:42:45-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "133932002", + "display": "Caregiver (person)" + } + ], + "text": "Caregiver (person)" + } + ], + "member": { + "reference": "RelatedPerson/b8a4920a-cd9c-4f44-ab71-00ea706ee79d" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ], + "text": "Chronic congestive heart failure (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/2b6d9309-dbfb-48ff-95c5-19d3637dd897", + "resource": { + "resourceType": "CarePlan", + "id": "2b6d9309-dbfb-48ff-95c5-19d3637dd897", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Heart failure self management plan.
Activities:
  • Heart failure self management plan
  • Heart failure self management plan

Care plan is meant to treat Chronic congestive heart failure (disorder).
" + }, + "status": "active", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "735984001", + "display": "Heart failure self management plan" + } + ], + "text": "Heart failure self management plan" + } + ], + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/77142479-92e2-4b0f-b2b2-1e90dfc8f33a" + }, + "period": { + "start": "1974-04-12T02:42:45-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/3872d222-cfcb-4dde-a049-546aab6bd4bd" + } + ], + "addresses": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "183063000", + "display": "low salt diet education" + } + ], + "text": "low salt diet education" + }, + "status": "in-progress", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "183301007", + "display": "Physical exercises" + } + ], + "text": "Physical exercises" + }, + "status": "in-progress", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/00ee3d86-5b96-4f48-ab39-aba3cea33821", + "resource": { + "resourceType": "Encounter", + "id": "00ee3d86-5b96-4f48-ab39-aba3cea33821", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "64c666af-7053-4d4f-f69f-270d0ec17cbe" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1974-04-26T01:11:45-04:00", + "end": "1974-04-26T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1974-04-26T01:11:45-04:00", + "end": "1974-04-26T01:26:45-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/2939fa8a-72be-4f18-a990-1bffe12f58b8", + "resource": { + "resourceType": "Observation", + "id": "2939fa8a-72be-4f18-a990-1bffe12f58b8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/00ee3d86-5b96-4f48-ab39-aba3cea33821" + }, + "effectiveDateTime": "1974-04-26T01:11:45-04:00", + "issued": "1974-04-26T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/20834586-3ec0-4868-9e51-58fcbbcb9a9f", + "resource": { + "resourceType": "MedicationRequest", + "id": "20834586-3ec0-4868-9e51-58fcbbcb9a9f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313988", + "display": "Furosemide 40 MG Oral Tablet" + } + ], + "text": "Furosemide 40 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/00ee3d86-5b96-4f48-ab39-aba3cea33821" + }, + "authoredOn": "1974-04-26T01:11:45-04:00", + "requester": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/1eb545b7-c60d-492d-96c9-0ef939f2f8a0", + "resource": { + "resourceType": "Immunization", + "id": "1eb545b7-c60d-492d-96c9-0ef939f2f8a0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/00ee3d86-5b96-4f48-ab39-aba3cea33821" + }, + "occurrenceDateTime": "1974-04-26T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/17e45950-6cdd-4f5c-96c4-e81f75cf023b", + "resource": { + "resourceType": "Encounter", + "id": "17e45950-6cdd-4f5c-96c4-e81f75cf023b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "cf4b2b63-ed93-0ef4-a8a0-443834870074" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1974-10-09T02:42:45-04:00", + "end": "1974-10-09T02:57:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1974-10-09T02:42:45-04:00", + "end": "1974-10-09T02:57:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/82da7eb8-fb01-4375-8909-70df373b63af", + "resource": { + "resourceType": "Encounter", + "id": "82da7eb8-fb01-4375-8909-70df373b63af", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "518313f8-aa06-9cae-ee0c-e10ffccce4b6" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for Problem" + } + ], + "text": "Encounter for Problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-07T03:42:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-07T03:42:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/bd1b737f-0845-4229-96b5-7a13bc1160af", + "resource": { + "resourceType": "Procedure", + "id": "bd1b737f-0845-4229-96b5-7a13bc1160af", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "399208008", + "display": "Plain X-ray of chest (procedure)" + } + ], + "text": "Plain X-ray of chest (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/82da7eb8-fb01-4375-8909-70df373b63af" + }, + "performedPeriod": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-07T03:12:45-04:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/2b5e7e94-a3c2-453a-855e-c6bf99e05f27", + "resource": { + "resourceType": "DiagnosticReport", + "id": "2b5e7e94-a3c2-453a-855e-c6bf99e05f27", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/82da7eb8-fb01-4375-8909-70df373b63af" + }, + "effectiveDateTime": "1975-04-07T02:42:45-04:00", + "issued": "1975-04-07T02:42:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NzUtMDQtMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDM1IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgYWNldGFtaW5vcGhlbiAyMS43IG1nL21sIC8gZGV4dHJvbWV0aG9ycGhhbiBoeWRyb2Jyb21pZGUgMSBtZy9tbCAvIGRveHlsYW1pbmUgc3VjY2luYXRlIDAuNDE3IG1nL21sIG9yYWwgc29sdXRpb247IHBlbmljaWxsaW4gZyAzNzUgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldDsgZnVyb3NlbWlkZSA0MCBtZyBvcmFsIHRhYmxldDsgYW1veGljaWxsaW4gMjUwIG1nIC8gY2xhdnVsYW5hdGUgMTI1IG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gb3h5Z2VuIGFkbWluaXN0cmF0aW9uIGJ5IG1hc2sgKHByb2NlZHVyZSkKLSBwbGFjaW5nIHN1YmplY3QgaW4gcHJvbmUgcG9zaXRpb24gKHByb2NlZHVyZSkKLSBwbGFpbiBjaGVzdCB4LXJheSAocHJvY2VkdXJlKQo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/d29a3a9c-0c45-4172-be04-c753b03da024", + "resource": { + "resourceType": "DocumentReference", + "id": "d29a3a9c-0c45-4172-be04-c753b03da024", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:6f01c40c-3b4d-bb63-d997-950dc7f43ab9" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1975-04-07T02:42:45.131-04:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NzUtMDQtMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDM1IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGNsYXZpY2xlLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGhhcyBjb21wbGV0ZWQgc29tZSBjb2xsZWdlIGNvdXJzZXMuIFBhdGllbnQgY3VycmVudGx5IGhhcyBCbHVlIENyb3NzIEJsdWUgU2hpZWxkLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgYWNldGFtaW5vcGhlbiAyMS43IG1nL21sIC8gZGV4dHJvbWV0aG9ycGhhbiBoeWRyb2Jyb21pZGUgMSBtZy9tbCAvIGRveHlsYW1pbmUgc3VjY2luYXRlIDAuNDE3IG1nL21sIG9yYWwgc29sdXRpb247IHBlbmljaWxsaW4gZyAzNzUgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldDsgZnVyb3NlbWlkZSA0MCBtZyBvcmFsIHRhYmxldDsgYW1veGljaWxsaW4gMjUwIG1nIC8gY2xhdnVsYW5hdGUgMTI1IG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gb3h5Z2VuIGFkbWluaXN0cmF0aW9uIGJ5IG1hc2sgKHByb2NlZHVyZSkKLSBwbGFjaW5nIHN1YmplY3QgaW4gcHJvbmUgcG9zaXRpb24gKHByb2NlZHVyZSkKLSBwbGFpbiBjaGVzdCB4LXJheSAocHJvY2VkdXJlKQo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/82da7eb8-fb01-4375-8909-70df373b63af" + } + ], + "period": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-07T03:42:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/0259ad0e-521c-41f8-b69f-98ef229c7791", + "resource": { + "resourceType": "DocumentReference", + "id": "0259ad0e-521c-41f8-b69f-98ef229c7791", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:c7207b52-2f09-11ed-a261-0242ac120002" + } + ], + "status": "current", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18748-4", + "display": "Diagnostic imaging study" + } + ], + "text": "Diagnostic imaging study" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1975-04-07T02:42:45.131-04:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMjItMDUtMTQKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkFseXNoYTYzMCBDYXJhODQ1CiBpcyBhIDQ0IHllYXItb2xkIG5vbi1oaXNwYW5pYyB3aGl0ZSBmZW1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBub3JtYWwgcHJlZ25hbmN5LCBhY3V0ZSBiYWN0ZXJpYWwgc2ludXNpdGlzIChkaXNvcmRlciksIHBhcnQtdGltZSBlbXBsb3ltZW50IChmaW5kaW5nKSwgbm90IGluIGxhYm9yIGZvcmNlIChmaW5kaW5nKSwgZnVsbC10aW1lIGVtcGxveW1lbnQgKGZpbmRpbmcpLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBtaXN1c2VzIGRydWdzIChmaW5kaW5nKSwgc3RyZXNzIChmaW5kaW5nKSwgc29jaWFsIGlzb2xhdGlvbiAoZmluZGluZykuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuCiBQYXRpZW50IGlkZW50aWZpZXMgYXMgaGV0ZXJvc2V4dWFsLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgbWlkZGxlIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4KIFBhdGllbnQgaXMgYSBjb2xsZWdlIGdyYWR1YXRlLgpQYXRpZW50IGN1cnJlbnRseSBoYXMgVW5pdGVkSGVhbHRoY2FyZS4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKcmlib2NpY2xpYiAyMDAgbWcgb3JhbCB0YWJsZXQ7IGpvbGl2ZXR0ZSAyOCBkYXkgcGFjazsgc2Vhc29uaXF1ZSA5MSBkYXkgcGFjazsgY2FyYm9wbGF0aW4gMTAgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgdGFtb3hpZmVuIDEwIG1nIG9yYWwgdGFibGV0OyB5YXogMjggZGF5IHBhY2s7IDUgbWwgaHlhbHVyb25pZGFzZS1veXNrIDIwMDAgdW50L21sIC8gdHJhc3R1enVtYWIgMTIwIG1nL21sIGluamVjdGlvbjsgY2FtaWxhIDI4IGRheSBwYWNrCgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gZXZhbHVhdGlvbiBvZiB1dGVyaW5lIGZ1bmRhbCBoZWlnaHQKLSBhdXNjdWx0YXRpb24gb2YgdGhlIGZldGFsIGhlYXJ0Ci0gc2NyZWVuaW5nIGZvciBjaHJvbW9zb21hbCBhbmV1cGxvaWR5IGluIHByZW5hdGFsIGFtbmlvdGljIGZsdWlkCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/72a9d0a0-7b14-4f44-9743-278203f903f6" + } + ], + "period": { + "start": "1975-10-05T03:25:45-04:00", + "end": "1975-10-05T03:40:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/b45ad5a2-c12d-4ac4-b230-48efad944cba", + "resource": { + "resourceType": "DocumentReference", + "id": "b45ad5a2-c12d-4ac4-b230-48efad944cba", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:335aec12-2f0a-11ed-a261-0242ac120002" + } + ], + "status": "current", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11502-2", + "display": "Laboratory report" + } + ], + "text": "Laboratory report" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1971-06-11T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain; charset=utf-8", + "data": "CjIwMTktMDEtMTcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIEF0dGVudGl2ZW5lc3MKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkNlbGVuYTczNAogaXMgYSA2NiB5ZWFyLW9sZCBub24taGlzcGFuaWMgd2hpdGUgZmVtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsaW1pdGVkIHNvY2lhbCBjb250YWN0IChmaW5kaW5nKSwgbm90IGluIGxhYm9yIGZvcmNlIChmaW5kaW5nKSwgc2ludXNpdGlzIChkaXNvcmRlciksIGZ1bGwtdGltZSBlbXBsb3ltZW50IChmaW5kaW5nKSwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIHdyaXN0LCBzdHJlc3MgKGZpbmRpbmcpLCBzZXZlcmUgYW54aWV0eSAocGFuaWMpIChmaW5kaW5nLCBzb2NpYWwgaXNvbGF0aW9uIChmaW5kaW5nKS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4KIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLgogUGF0aWVudCBoYXMgYSBoaWdoIHNjaG9vbCBlZHVjYXRpb24uClBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IGFtbG9kaXBpbmUgNSBtZyBvcmFsIHRhYmxldDsgc2ltdmFzdGF0aW4gMjAgbWcgb3JhbCB0YWJsZXQ7IGNsb3BpZG9ncmVsIDc1IG1nIG9yYWwgdGFibGV0OyBuaXRyb2dseWNlcmluIDAuNCBtZy9hY3R1YXQgbXVjb3NhbCBzcHJheQoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuClBhdGllbnQgaXMgcHJlc2VudGluZyB3aXRoIG5vdCBpbiBsYWJvciBmb3JjZSAoZmluZGluZykuIAoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLCBwbmV1bW9jb2NjYWwgcG9seXNhY2NoYXJpZGUgdmFjY2luZSwgMjMgdmFsZW50LiAKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIGFzc2Vzc21lbnQgb2YgaGVhbHRoIGFuZCBzb2NpYWwgY2FyZSBuZWVkcyAocHJvY2VkdXJlKQotIGFzc2Vzc21lbnQgb2YgYW54aWV0eSAocHJvY2VkdXJlKQotIGFzc2Vzc21lbnQgdXNpbmcgbW9yc2UgZmFsbCBzY2FsZSAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIGNsb3BpZG9ncmVsIDc1IG1nIG9yYWwgdGFibGV0Ci0gbml0cm9nbHljZXJpbiAwLjQgbWcvYWN0dWF0IG11Y29zYWwgc3ByYXkKLSBzaW12YXN0YXRpbiAyMCBtZyBvcmFsIHRhYmxldAotIGFtbG9kaXBpbmUgNSBtZyBvcmFsIHRhYmxldAo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1" + } + ], + "period": { + "start": "1971-06-11T01:11:45-04:00", + "end": "1971-06-11T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/a0ec8ae7-e8c0-457e-a4ef-e526d8785784", + "resource": { + "resourceType": "DocumentReference", + "id": "a0ec8ae7-e8c0-457e-a4ef-e526d8785784", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:868b6f6a-2f0a-11ed-a261-0242ac120002" + } + ], + "status": "current", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11526-1", + "display": "Pathology study" + } + ], + "text": "Pathology study" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1974-03-29T02:42:45.131-04:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "custodian": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMjEtMDEtMjgKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIEF0dGVudGl2ZW5lc3MKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkNlbGVuYTczNAogaXMgYSA2OCB5ZWFyLW9sZCBub24taGlzcGFuaWMgd2hpdGUgZmVtYWxlLiBQYXRpZW50IGhhcyBhIGhpc3Rvcnkgb2YgZmF0aWd1ZSAoZmluZGluZyksIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHNwcmFpbiBvZiB3cmlzdCwgc3VzcGVjdGVkIGNvdmlkLTE5LCBzZXZlcmUgYW54aWV0eSAocGFuaWMpIChmaW5kaW5nLCBjb3ZpZC0xOSwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBmZXZlciAoZmluZGluZyksIGxpbWl0ZWQgc29jaWFsIGNvbnRhY3QgKGZpbmRpbmcpLCBub3QgaW4gbGFib3IgZm9yY2UgKGZpbmRpbmcpLCBzaW51c2l0aXMgKGRpc29yZGVyKSwgZnVsbC10aW1lIGVtcGxveW1lbnQgKGZpbmRpbmcpLCBsb3NzIG9mIHRhc3RlIChmaW5kaW5nKSwgc3RyZXNzIChmaW5kaW5nKSwgc29jaWFsIGlzb2xhdGlvbiAoZmluZGluZykuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuCiBQYXRpZW50IGlkZW50aWZpZXMgYXMgaGV0ZXJvc2V4dWFsLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgbWlkZGxlIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4KIFBhdGllbnQgaGFzIGEgaGlnaCBzY2hvb2wgZWR1Y2F0aW9uLgpQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpObyBLbm93biBBbGxlcmdpZXMuCgojIE1lZGljYXRpb25zCmFjZXRhbWlub3BoZW4gMzI1IG1nIG9yYWwgdGFibGV0OyBhbWxvZGlwaW5lIDUgbWcgb3JhbCB0YWJsZXQ7IHNpbXZhc3RhdGluIDIwIG1nIG9yYWwgdGFibGV0OyBjbG9waWRvZ3JlbCA3NSBtZyBvcmFsIHRhYmxldDsgbml0cm9nbHljZXJpbiAwLjQgbWcvYWN0dWF0IG11Y29zYWwgc3ByYXkKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBmdWxsLXRpbWUgZW1wbG95bWVudCAoZmluZGluZykuIAoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIGFzc2Vzc21lbnQgb2YgaGVhbHRoIGFuZCBzb2NpYWwgY2FyZSBuZWVkcyAocHJvY2VkdXJlKQotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkKLSBkZXByZXNzaW9uIHNjcmVlbmluZyAocHJvY2VkdXJlKQotIGRlcHJlc3Npb24gc2NyZWVuaW5nIHVzaW5nIHBhdGllbnQgaGVhbHRoIHF1ZXN0aW9ubmFpcmUgdHdvLWl0ZW0gc2NvcmUgKHByb2NlZHVyZSkKLSBhc3Nlc3NtZW50IG9mIHN1YnN0YW5jZSB1c2UgKHByb2NlZHVyZSkKLSBzY3JlZW5pbmcgZm9yIGRydWcgYWJ1c2UgKHByb2NlZHVyZSkKVGhlIHBhdGllbnQgd2FzIHByZXNjcmliZWQgdGhlIGZvbGxvd2luZyBtZWRpY2F0aW9uczoKLSBjbG9waWRvZ3JlbCA3NSBtZyBvcmFsIHRhYmxldAotIG5pdHJvZ2x5Y2VyaW4gMC40IG1nL2FjdHVhdCBtdWNvc2FsIHNwcmF5Ci0gc2ltdmFzdGF0aW4gMjAgbWcgb3JhbCB0YWJsZXQKLSBhbWxvZGlwaW5lIDUgbWcgb3JhbCB0YWJsZXQK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/1e8048ed-e44a-4d28-863e-7b851b42b21b" + } + ], + "period": { + "start": "1974-03-29T01:11:45-04:00", + "end": "1974-03-29T02:42:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226", + "resource": { + "resourceType": "Encounter", + "id": "f641d56a-c17b-4d76-97fa-9f2e85f8a226", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "73d083ce-bf6a-8a3a-d56b-2349f23049bc" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "IMP" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "305351004", + "display": "Admission to intensive care unit (procedure)" + } + ], + "text": "Admission to intensive care unit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-08T03:25:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-08T03:25:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c0ab8044-34ed-48c4-ba07-d94f3eb0f3c3", + "resource": { + "resourceType": "Observation", + "id": "c0ab8044-34ed-48c4-ba07-d94f3eb0f3c3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "2708-6", + "display": "Oxygen saturation in Arterial blood" + }, + { + "system": "http://loinc.org", + "code": "59408-5", + "display": "Oxygen saturation in Arterial blood by Pulse oximetry" + } + ], + "text": "Oxygen saturation in Arterial blood" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "effectivePeriod": { + "start": "1975-04-07T02:51:45-04:00", + "end": "1975-04-07T03:51:45-04:00" + }, + "issued": "1975-04-07T02:51:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "valueQuantity": { + "value": 77, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/b584df3c-3970-45dd-a711-724bd5ce5d91", + "resource": { + "resourceType": "Procedure", + "id": "b584df3c-3970-45dd-a711-724bd5ce5d91", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371908008", + "display": "Oxygen administration by mask (procedure)" + } + ], + "text": "Oxygen administration by mask (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "performedPeriod": { + "start": "1975-04-07T02:51:45-04:00", + "end": "1975-04-07T03:06:45-04:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/a411e4be-486d-4224-a2e5-d2a1d63701cd", + "resource": { + "resourceType": "Procedure", + "id": "a411e4be-486d-4224-a2e5-d2a1d63701cd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "423475008", + "display": "Heart failure education (procedure)" + } + ], + "text": "Heart failure education (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "performedPeriod": { + "start": "1975-04-19T02:57:49-04:00", + "end": "1975-04-19T03:25:55-04:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e", + "display": "Chronic congestive heart failure (disorder)" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/c352dc5a-83f8-4016-b162-7b82d6642cca", + "resource": { + "resourceType": "MedicationRequest", + "id": "c352dc5a-83f8-4016-b162-7b82d6642cca", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "active", + "intent": "order", + "medicationReference": { + "reference": "Medication/1d084750-b9da-43a9-b0b3-3ce1ff7ed3a5" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "authoredOn": "1975-04-07T02:51:45-04:00", + "requester": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/fca9c28a-dcea-40de-b314-092612d46ec4", + "resource": { + "resourceType": "CareTeam", + "id": "fca9c28a-dcea-40de-b314-092612d46ec4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "period": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-08T03:25:45-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ], + "text": "Chronic congestive heart failure (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/bcbbabd0-c349-4122-9edd-17fe2729ddc1", + "resource": { + "resourceType": "CarePlan", + "id": "bcbbabd0-c349-4122-9edd-17fe2729ddc1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Inpatient care plan (record artifact).
Activities:
  • Inpatient care plan (record artifact)
  • Inpatient care plan (record artifact)

Care plan is meant to treat Chronic congestive heart failure (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "736353004", + "display": "Inpatient care plan (record artifact)" + } + ], + "text": "Inpatient care plan (record artifact)" + } + ], + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "period": { + "start": "1975-04-07T02:42:45-04:00", + "end": "1975-04-08T03:25:45-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/fca9c28a-dcea-40de-b314-092612d46ec4" + } + ], + "addresses": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "385715006", + "display": "Cardiac care (regime/therapy)" + } + ], + "text": "Cardiac care (regime/therapy)" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "386619000", + "display": "Low sodium diet (finding)" + } + ], + "text": "Low sodium diet (finding)" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8cf413f9-1d0b-4d15-aeac-f9aba813d043", + "resource": { + "resourceType": "Encounter", + "id": "8cf413f9-1d0b-4d15-aeac-f9aba813d043", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d09874e2-0ea0-9a99-95b6-d7908e5acc35" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1975-05-02T01:11:45-04:00", + "end": "1975-05-02T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1975-05-02T01:11:45-04:00", + "end": "1975-05-02T01:26:45-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d6c2db07-b5dc-4dec-88c5-e6292b30a3d4", + "resource": { + "resourceType": "Observation", + "id": "d6c2db07-b5dc-4dec-88c5-e6292b30a3d4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/8cf413f9-1d0b-4d15-aeac-f9aba813d043" + }, + "effectiveDateTime": "1975-05-02T01:11:45-04:00", + "issued": "1975-05-02T01:11:45.131-04:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/0d85a2f4-5aaf-4a51-bc65-d3efdd9777a4", + "resource": { + "resourceType": "MedicationRequest", + "id": "0d85a2f4-5aaf-4a51-bc65-d3efdd9777a4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313988", + "display": "Furosemide 40 MG Oral Tablet" + } + ], + "text": "Furosemide 40 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/8cf413f9-1d0b-4d15-aeac-f9aba813d043" + }, + "authoredOn": "1975-05-02T01:11:45-04:00", + "requester": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/bef7fc9d-4097-429e-b6bd-7fa0cc291108", + "resource": { + "resourceType": "Immunization", + "id": "bef7fc9d-4097-429e-b6bd-7fa0cc291108", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/8cf413f9-1d0b-4d15-aeac-f9aba813d043" + }, + "occurrenceDateTime": "1975-05-02T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/72a9d0a0-7b14-4f44-9743-278203f903f6", + "resource": { + "resourceType": "Encounter", + "id": "72a9d0a0-7b14-4f44-9743-278203f903f6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "887bc47f-4fae-3a26-0109-ae92af659da9" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1975-10-05T03:25:45-04:00", + "end": "1975-10-05T03:40:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1975-10-05T03:25:45-04:00", + "end": "1975-10-05T03:40:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1e3520c2-efcd-4f94-ae1f-8ff254ccc200", + "resource": { + "resourceType": "Encounter", + "id": "1e3520c2-efcd-4f94-ae1f-8ff254ccc200", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ac6f34bc-3f9e-5fae-ca06-47848f30fed9" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1976-04-02T02:25:45-05:00", + "end": "1976-04-02T02:40:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1976-04-02T02:25:45-05:00", + "end": "1976-04-02T02:40:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/08b682e1-cea6-4d5e-bde9-2db85c77d2a3", + "resource": { + "resourceType": "Procedure", + "id": "08b682e1-cea6-4d5e-bde9-2db85c77d2a3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/1e3520c2-efcd-4f94-ae1f-8ff254ccc200" + }, + "performedPeriod": { + "start": "1976-04-02T02:25:45-05:00", + "end": "1976-04-02T02:40:45-05:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/06276bc1-1df8-4e26-aede-4592382b2213", + "resource": { + "resourceType": "Encounter", + "id": "06276bc1-1df8-4e26-aede-4592382b2213", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "bab204b1-0438-7c9a-cdab-f1f038c66bfc" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1976-05-07T01:11:45-04:00", + "end": "1976-05-07T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1976-05-07T01:11:45-04:00", + "end": "1976-05-07T01:26:45-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/fbbbdd63-360b-45db-9e14-18e4c6a4ffe1", + "resource": { + "resourceType": "Observation", + "id": "fbbbdd63-360b-45db-9e14-18e4c6a4ffe1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/06276bc1-1df8-4e26-aede-4592382b2213" + }, + "effectiveDateTime": "1976-05-07T01:11:45-04:00", + "issued": "1976-05-07T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/9ceb6657-25d8-47a0-8206-694013e844c0", + "resource": { + "resourceType": "MedicationRequest", + "id": "9ceb6657-25d8-47a0-8206-694013e844c0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313988", + "display": "Furosemide 40 MG Oral Tablet" + } + ], + "text": "Furosemide 40 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/06276bc1-1df8-4e26-aede-4592382b2213" + }, + "authoredOn": "1976-05-07T01:11:45-04:00", + "requester": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/8b53a9e0-0555-44f4-b2e4-0957f94b033b", + "resource": { + "resourceType": "Immunization", + "id": "8b53a9e0-0555-44f4-b2e4-0957f94b033b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/06276bc1-1df8-4e26-aede-4592382b2213" + }, + "occurrenceDateTime": "1976-05-07T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/aa44a2e9-8ffd-4240-94a9-58e8090e541e", + "resource": { + "resourceType": "Encounter", + "id": "aa44a2e9-8ffd-4240-94a9-58e8090e541e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "00c420ae-5ab9-975d-483f-ec15698cb9fb" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1976-09-29T03:25:45-04:00", + "end": "1976-09-29T03:40:45-04:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1976-09-29T03:25:45-04:00", + "end": "1976-09-29T03:40:45-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/14748aa9-e8ea-4c51-b5e5-67b3b299e4d5", + "resource": { + "resourceType": "Procedure", + "id": "14748aa9-e8ea-4c51-b5e5-67b3b299e4d5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "40701008", + "display": "Echocardiography (procedure)" + } + ], + "text": "Echocardiography (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/aa44a2e9-8ffd-4240-94a9-58e8090e541e" + }, + "performedPeriod": { + "start": "1976-09-29T03:25:45-04:00", + "end": "1976-09-29T03:55:45-04:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/ffe69e0e-65d3-4564-aea2-19c9b00d5e76", + "resource": { + "resourceType": "Encounter", + "id": "ffe69e0e-65d3-4564-aea2-19c9b00d5e76", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "1caa11a9-b3aa-d045-556e-f8bd0d63374d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for Problem" + } + ], + "text": "Encounter for Problem" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-28T03:25:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-28T03:25:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/36b24096-dd13-445f-ac46-5313d50422af", + "resource": { + "resourceType": "Procedure", + "id": "36b24096-dd13-445f-ac46-5313d50422af", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371908008", + "display": "Oxygen administration by mask (procedure)" + } + ], + "text": "Oxygen administration by mask (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/ffe69e0e-65d3-4564-aea2-19c9b00d5e76" + }, + "performedPeriod": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-28T02:40:45-05:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/4182bcb1-156b-46f0-8bf7-52d772e48d7e", + "resource": { + "resourceType": "Procedure", + "id": "4182bcb1-156b-46f0-8bf7-52d772e48d7e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "431182000", + "display": "Placing subject in prone position (procedure)" + } + ], + "text": "Placing subject in prone position (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/ffe69e0e-65d3-4564-aea2-19c9b00d5e76" + }, + "performedPeriod": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-28T02:40:45-05:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66", + "resource": { + "resourceType": "Encounter", + "id": "12012eac-3d0d-43f6-9107-f2d3bde56c66", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "373c3332-146c-d375-3fbb-4f9085948cfd" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "IMP" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "305351004", + "display": "Admission to intensive care unit (procedure)" + } + ], + "text": "Admission to intensive care unit (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-30T03:17:45-05:00" + }, + "individual": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + } + ], + "period": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-30T03:17:45-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "serviceProvider": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/b3cf4fe9-e4b7-457d-9d56-c7831733c605", + "resource": { + "resourceType": "Procedure", + "id": "b3cf4fe9-e4b7-457d-9d56-c7831733c605", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66" + }, + "performedPeriod": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-28T02:40:45-05:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/1c4d5a52-13b1-4bfb-b872-6671a78632e3", + "resource": { + "resourceType": "Procedure", + "id": "1c4d5a52-13b1-4bfb-b872-6671a78632e3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371908008", + "display": "Oxygen administration by mask (procedure)" + } + ], + "text": "Oxygen administration by mask (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66" + }, + "performedPeriod": { + "start": "1977-03-28T02:33:45-05:00", + "end": "1977-03-28T02:48:45-05:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/5aacd243-6383-461f-a4b0-fa6e06b13fb6", + "resource": { + "resourceType": "Procedure", + "id": "5aacd243-6383-461f-a4b0-fa6e06b13fb6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371908008", + "display": "Oxygen administration by mask (procedure)" + } + ], + "text": "Oxygen administration by mask (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66" + }, + "performedPeriod": { + "start": "1977-03-29T02:33:45-05:00", + "end": "1977-03-29T02:48:45-05:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/d88de38c-8095-4ab7-8caa-34ea0bb64737", + "resource": { + "resourceType": "Procedure", + "id": "d88de38c-8095-4ab7-8caa-34ea0bb64737", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "431182000", + "display": "Placing subject in prone position (procedure)" + } + ], + "text": "Placing subject in prone position (procedure)" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66" + }, + "performedPeriod": { + "start": "1977-03-29T02:33:45-05:00", + "end": "1977-03-29T02:48:45-05:00" + }, + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/0d11b17f-58cc-479d-9369-46703af4891d", + "resource": { + "resourceType": "CareTeam", + "id": "0d11b17f-58cc-479d-9369-46703af4891d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66" + }, + "period": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-30T03:17:45-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "88805009", + "display": "Chronic congestive heart failure (disorder)" + } + ], + "text": "Chronic congestive heart failure (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/8f7cb4e2-e785-48d0-bcf6-2e321b4c8632", + "resource": { + "resourceType": "CarePlan", + "id": "8f7cb4e2-e785-48d0-bcf6-2e321b4c8632", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Inpatient care plan (record artifact).
Activities:
  • Inpatient care plan (record artifact)
  • Inpatient care plan (record artifact)

Care plan is meant to treat Chronic congestive heart failure (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "736353004", + "display": "Inpatient care plan (record artifact)" + } + ], + "text": "Inpatient care plan (record artifact)" + } + ], + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66" + }, + "period": { + "start": "1977-03-28T02:25:45-05:00", + "end": "1977-03-30T03:17:45-05:00" + }, + "contributor": [ + { + "reference": "CareTeam/0d11b17f-58cc-479d-9369-46703af4891d" + } + ], + "careTeam": [ + { + "reference": "CareTeam/0d11b17f-58cc-479d-9369-46703af4891d" + } + ], + "addresses": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "385715006", + "display": "Cardiac care (regime/therapy)" + } + ], + "text": "Cardiac care (regime/therapy)" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "386619000", + "display": "Low sodium diet (finding)" + } + ], + "text": "Low sodium diet (finding)" + }, + "status": "completed", + "location": { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b83434db-f62f-4650-abde-ba16cb330143", + "resource": { + "resourceType": "Encounter", + "id": "b83434db-f62f-4650-abde-ba16cb330143", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "6ddb7da9-ea34-8bed-1b3d-ca7014f62d79" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/85", + "display": "Mr. Lucien408 Bosco882" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1977-05-13T01:11:45-04:00", + "end": "1977-05-13T01:26:45-04:00" + }, + "individual": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + } + ], + "period": { + "start": "1977-05-13T01:11:45-04:00", + "end": "1977-05-13T01:26:45-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + } + ], + "serviceProvider": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c32f91ce-63e0-46ab-9fde-9b910ecb9fa5", + "resource": { + "resourceType": "Observation", + "id": "c32f91ce-63e0-46ab-9fde-9b910ecb9fa5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b83434db-f62f-4650-abde-ba16cb330143" + }, + "effectiveDateTime": "1977-05-13T01:11:45-04:00", + "issued": "1977-05-13T01:11:45.131-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "449868002", + "display": "Smokes tobacco daily (finding)" + } + ], + "text": "Smokes tobacco daily (finding)" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/c6fed83c-61b4-4da5-b04e-c77938533617", + "resource": { + "resourceType": "MedicationRequest", + "id": "c6fed83c-61b4-4da5-b04e-c77938533617", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "active", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313988", + "display": "Furosemide 40 MG Oral Tablet" + } + ], + "text": "Furosemide 40 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b83434db-f62f-4650-abde-ba16cb330143" + }, + "authoredOn": "1977-05-13T01:11:45-04:00", + "requester": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + }, + "reasonReference": [ + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/15c070f7-582e-4658-95fd-85eaf567f633", + "resource": { + "resourceType": "Immunization", + "id": "15c070f7-582e-4658-95fd-85eaf567f633", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/b83434db-f62f-4650-abde-ba16cb330143" + }, + "occurrenceDateTime": "1977-05-13T01:11:45-04:00", + "primarySource": true, + "location": { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Provenance/893d711d-6bb7-4448-87e3-0b272b3acd43", + "resource": { + "resourceType": "Provenance", + "id": "893d711d-6bb7-4448-87e3-0b272b3acd43", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance" + ] + }, + "target": [ + { + "reference": "Patient/85" + }, + { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9" + }, + { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033" + }, + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927" + }, + { + "reference": "PractitionerRole/f1ce27f4-4e4c-4d23-ba5d-93e1c1af9653" + }, + { + "reference": "Encounter/f62c2559-e3aa-4c89-86dc-498170fb040c" + }, + { + "reference": "Observation/71a0cba2-01e6-47bc-af5b-66e65691cefd" + }, + { + "reference": "Encounter/43604cf2-7d4f-4adf-9375-06a3fc0ae08f" + }, + { + "reference": "Observation/e649ea40-f57b-4d5d-a6ad-14c86306ce65" + }, + { + "reference": "Encounter/a552e1ad-edeb-44ab-a9f1-b67512c25b24" + }, + { + "reference": "Observation/321f4d17-8ab9-453e-bec8-a988c9cafbb7" + }, + { + "reference": "Encounter/349b13f0-5690-41f3-96de-a6aeeb7e9b89" + }, + { + "reference": "Observation/a602714c-bd1c-4a9e-aaf6-f6cc27dfafc0" + }, + { + "reference": "Procedure/f13ae6d6-fcde-4208-afda-a208245e699e" + }, + { + "reference": "DiagnosticReport/d847e009-97a0-4b2b-841e-40cce5217b62" + }, + { + "reference": "DocumentReference/ebfea0d7-7100-467f-beef-ea7b61793e20" + }, + { + "reference": "Encounter/48ab08a5-8c4e-4b7a-bde4-f6bbe524d34e" + }, + { + "reference": "Observation/be80d970-c0f8-40c9-bce3-4a6d7d01ed79" + }, + { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028" + }, + { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5" + }, + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34" + }, + { + "reference": "PractitionerRole/dccac836-b051-411b-a4e3-da1be2f34d4a" + }, + { + "reference": "Encounter/69a72195-466f-4653-96bc-08f35c8d4cd4" + }, + { + "reference": "Condition/a3696c0a-805b-4805-a493-46776aff7c9f" + }, + { + "reference": "MedicationRequest/2f5caf3b-0fef-48b6-a4cb-1a5ddac79e37" + }, + { + "reference": "Encounter/46750323-6e73-47c9-a362-27f67240d967" + }, + { + "reference": "Condition/be7738c3-8477-476b-aaa8-c62adf4b9715" + }, + { + "reference": "Encounter/477bd866-f806-4904-8b4b-8ad5ebe87722" + }, + { + "reference": "Observation/b11ac552-89bf-4091-9e15-2e430bd2f7c8" + }, + { + "reference": "DiagnosticReport/b8f5f25c-f3d1-435d-ba3a-cda4caa4a975" + }, + { + "reference": "DocumentReference/7e192fe5-eb25-43ef-a5a5-0586fc983f15" + }, + { + "reference": "Encounter/50aaf6d2-1739-4bfd-aa0d-da3e1e9a38d8" + }, + { + "reference": "Observation/64c3f4cb-9a78-4376-9e5e-02856fa837bc" + }, + { + "reference": "DiagnosticReport/fe9867e1-9549-4622-ae77-0f2af660cfa3" + }, + { + "reference": "DocumentReference/bc218a77-bf87-480b-bae3-8337f554ca64" + }, + { + "reference": "Encounter/b3abd327-7925-40ef-ab89-80977acdc094" + }, + { + "reference": "Observation/4444b32d-2525-46bc-b5c0-0d911ea9966a" + }, + { + "reference": "Procedure/200d8ba0-a2ba-4755-b286-7b3c92091472" + }, + { + "reference": "DiagnosticReport/3da5c616-2ab8-49e3-9def-b7cd2d993283" + }, + { + "reference": "DocumentReference/9ef88a97-1eed-4d21-8364-260bf2e222fa" + }, + { + "reference": "Encounter/22405cc1-eb02-4490-b853-648155a6b3a5" + }, + { + "reference": "Observation/4fae149b-64b6-4d0e-8cfa-70ecc8c24f54" + }, + { + "reference": "Procedure/a2594c00-9bf6-4782-915c-d342298b61d2" + }, + { + "reference": "DiagnosticReport/9ed0a349-3894-4dd0-8cbb-59cf19ec5728" + }, + { + "reference": "DocumentReference/ba33354f-11bb-4478-b39c-907606ecf019" + }, + { + "reference": "Encounter/dd52e03c-96ff-46b8-897c-7b98aff7f294" + }, + { + "reference": "Observation/a3159aa2-d158-4e1b-beef-5d2a6f4ce89f" + }, + { + "reference": "Encounter/0e961f96-8256-4b8f-baf2-1b57de306b69" + }, + { + "reference": "Observation/1bbc0da8-5f1d-4f0d-8902-944f9ab6c4d6" + }, + { + "reference": "Procedure/888bc2e2-51e9-4c90-a024-d8635e634488" + }, + { + "reference": "Encounter/e168ebba-8a74-419a-93e5-6e2a43de0ef8" + }, + { + "reference": "Observation/b9b9d19d-0f2e-416a-b069-1c04437030f2" + }, + { + "reference": "Encounter/91064086-da1b-4952-8476-479124cef0c6" + }, + { + "reference": "Observation/727fb39f-677e-45f8-bc75-39c1869ddfc8" + }, + { + "reference": "Encounter/7e574f38-80af-4351-96ff-ab2bad7e3e87" + }, + { + "reference": "Observation/0c1954cb-f065-43b1-8e13-0a7e416f7fec" + }, + { + "reference": "Immunization/57b6534a-009d-4a9e-9952-58696b53cba7" + }, + { + "reference": "Encounter/346b986e-e67b-4ae1-bd72-d6533f4ab1f4" + }, + { + "reference": "Observation/3192fba4-ce89-41ab-ba19-0605b749bc8f" + }, + { + "reference": "Immunization/249f54a2-86cb-41c3-9aa6-da83ea321872" + }, + { + "reference": "Encounter/f90ffd70-b5e2-4aed-b0ad-0f7b96bb1cea" + }, + { + "reference": "Condition/bdb8b183-a83a-4db3-9ed4-7cda6a8f1e68" + }, + { + "reference": "MedicationRequest/6658e599-3970-4a70-acb2-c0f0f15affe7" + }, + { + "reference": "CareTeam/308b3f9d-e6c1-4405-aead-e8ffb14a942d" + }, + { + "reference": "CarePlan/ce76a752-6d41-4180-a487-f3b30c39f502" + }, + { + "reference": "Encounter/a5e2bffe-1dae-4fba-a907-5cc6bad9556b" + }, + { + "reference": "DiagnosticReport/cee1edd4-492c-400e-b043-ec1ba1798988" + }, + { + "reference": "DocumentReference/41ad13be-e0e0-4cb6-9f3e-54d8a2326ce9" + }, + { + "reference": "Encounter/6f5a00ba-8f00-4267-8710-587e6162b0cf" + }, + { + "reference": "Observation/b53bd0ff-3395-4e19-a210-df17172c8a25" + }, + { + "reference": "DiagnosticReport/c98a9d8a-91bb-47ef-b67a-8d2ae393fb13" + }, + { + "reference": "DocumentReference/1a0bf6f9-b975-4284-82f5-2520f2765e64" + }, + { + "reference": "Encounter/8d55bfb6-24df-4baa-91de-855c5e6b1a80" + }, + { + "reference": "Condition/3dbf5872-5720-4f3e-887d-0a550b2208da" + }, + { + "reference": "MedicationRequest/1915a092-3d25-4c10-aeff-b9607255b9b7" + }, + { + "reference": "MedicationRequest/6ef8e02e-043f-4cc5-a528-2902c82b9dda" + }, + { + "reference": "DiagnosticReport/40dcf515-cebe-42f1-8e0d-3a8dc8a13146" + }, + { + "reference": "DocumentReference/e763523b-81df-41ff-b5b2-739431c58ad9" + }, + { + "reference": "Encounter/bfd99b5d-31da-4673-82ed-97c90f1b61e3" + }, + { + "reference": "Observation/4f7680d2-6101-48ca-88a7-c44dc5e55b26" + }, + { + "reference": "Encounter/1ad5e166-35b4-4804-9f05-a5dcec718387" + }, + { + "reference": "Observation/94864a8f-5ed6-4f98-8130-a93973735bd4" + }, + { + "reference": "DiagnosticReport/85902c1c-9aa6-4511-ac17-d506c73edadd" + }, + { + "reference": "DocumentReference/4cc1a273-649c-46ad-8a87-25bc3631df39" + }, + { + "reference": "Encounter/02efc673-f971-4971-beb6-0828aab5bbca" + }, + { + "reference": "Observation/eaeb07b9-3d24-42d1-9822-b6baf456ba07" + }, + { + "reference": "Immunization/3175ce72-b234-46cc-a110-147c0c71e77a" + }, + { + "reference": "Encounter/24a0ba44-95f0-465c-bb61-bafc47093c92" + }, + { + "reference": "Observation/73c4b758-57c8-4f6a-8fc7-cbd59dad97d4" + }, + { + "reference": "Immunization/69511544-0177-4ad0-a034-59b29c376a7b" + }, + { + "reference": "Encounter/c5467385-f631-4334-94a3-e31df2db3247" + }, + { + "reference": "Condition/d6639940-7194-4186-8678-e5d82ee3e0b8" + }, + { + "reference": "Observation/d2beae4c-8340-4cce-b712-548c088342e1" + }, + { + "reference": "MedicationRequest/991e0bcb-753e-4d87-9c3d-bfef64f0a241" + }, + { + "reference": "DiagnosticReport/8dba919d-23e3-48a4-af97-3c445015e42f" + }, + { + "reference": "DocumentReference/1aed525e-a4d8-4f99-9fe8-98ba82e34be2" + }, + { + "reference": "Encounter/b764c11b-255c-4eea-842e-832fee4f609e" + }, + { + "reference": "Observation/9e5daee9-19c5-4078-b21e-5ee062effeaa" + }, + { + "reference": "Immunization/640f4299-4746-43a4-ba51-7925cb08a652" + }, + { + "reference": "Encounter/408ac402-c883-4274-9908-6d7f62f6ae8d" + }, + { + "reference": "Observation/c24d4a8b-d0f3-41b5-9670-e79b58b68ac9" + }, + { + "reference": "Immunization/d4cf040b-0f66-49dd-af12-3c06a55e7402" + }, + { + "reference": "Encounter/ed985bae-f2cc-4561-9756-19353fd9787d" + }, + { + "reference": "Observation/91714b81-eca3-40cb-9942-f1055c896295" + }, + { + "reference": "Immunization/da210cde-8a24-48c1-b566-eaf916e7cdb6" + }, + { + "reference": "DiagnosticReport/82cc00f5-fedd-406a-a48b-810303f08dca" + }, + { + "reference": "DocumentReference/178f4693-fcc4-4a14-a3a5-138e0ada2d6a" + }, + { + "reference": "Encounter/e1dfee8a-664f-45c1-b61e-6f4aa176f4f2" + }, + { + "reference": "Observation/95bcff1a-a6c7-4f92-80c8-c31ed4d544b9" + }, + { + "reference": "Immunization/c3e17b3a-10de-411b-9110-24131a76115a" + }, + { + "reference": "Encounter/423ac92b-782f-43b9-ae0c-3bbdef07f670" + }, + { + "reference": "Observation/73d31e9f-3733-4808-9f4f-1e5d78876b64" + }, + { + "reference": "DiagnosticReport/41833abd-dc0c-4963-b381-012ae7f7e23c" + }, + { + "reference": "DocumentReference/12ca1a93-f774-4ff2-8423-5cb2161be671" + }, + { + "reference": "Encounter/b089244d-90ef-472f-a2cf-1ad0e89f5b2e" + }, + { + "reference": "Observation/26676879-d811-482a-8b88-a421e3fa362c" + }, + { + "reference": "Immunization/63459952-808f-487f-937b-31e194a2a82e" + }, + { + "reference": "Encounter/6bf8c4a6-3f57-40cd-b371-cc16a5f074bc" + }, + { + "reference": "Observation/a7815c19-d3b2-4794-bff1-6eca07cfbb33" + }, + { + "reference": "Immunization/21ef1297-4e62-4c45-a748-5dbc09652684" + }, + { + "reference": "DiagnosticReport/cdecb527-03e0-42ee-ad96-16006d9c96d1" + }, + { + "reference": "DocumentReference/b7d12e2a-2376-422e-b3b3-0705cbf8655a" + }, + { + "reference": "Encounter/efbc99e9-8089-4b1f-b285-1ec3a57e44dc" + }, + { + "reference": "Condition/cac6d266-b341-4a03-bca6-33b9ca4ad4c3" + }, + { + "reference": "MedicationRequest/12e9fb15-c441-45e8-a4af-bf93518e634a" + }, + { + "reference": "CareTeam/8844e3d2-7985-4a41-b08c-94f3ac13f72f" + }, + { + "reference": "CarePlan/8f76d57c-6c33-4e51-a542-67c77ab86624" + }, + { + "reference": "DiagnosticReport/f0a51490-f427-4518-91b2-036dfaeb0055" + }, + { + "reference": "DocumentReference/a740be42-62fd-4a80-8de3-c816667dc483" + }, + { + "reference": "Encounter/68f29c74-805a-49e3-8796-137b8d4083eb" + }, + { + "reference": "Observation/044966b5-0b58-40e3-84a4-b71a417ffba6" + }, + { + "reference": "Immunization/0f58ccac-3853-4298-8153-c549e9216082" + }, + { + "reference": "DiagnosticReport/34b6a606-06c3-46c5-a1f6-cabc1e39ea63" + }, + { + "reference": "DocumentReference/cf3d40d5-42d4-4737-8375-903d8dd55fbb" + }, + { + "reference": "Encounter/9edd5abd-c7f5-489f-8ae7-8509ec132ee9" + }, + { + "reference": "Condition/38e03acd-3203-48ef-bc89-b19e2e07c8eb" + }, + { + "reference": "DiagnosticReport/d73dd470-7723-4b6d-8d35-c56ee2804ae3" + }, + { + "reference": "DocumentReference/e030f1ba-a738-4d06-a6c9-88a6a86ab563" + }, + { + "reference": "Encounter/a51613a2-c6dd-43a3-aa3a-9f9a7a37cff8" + }, + { + "reference": "Observation/31aadc61-aa73-4e4d-8678-2eae63b567cc" + }, + { + "reference": "Procedure/2e098f7d-a191-4f8b-a85d-82086d981c7e" + }, + { + "reference": "Immunization/50180635-e85f-41b2-a2c8-3631bb3c8054" + }, + { + "reference": "DiagnosticReport/bdcf4e64-e9c3-4643-91a2-4c63a52dadf8" + }, + { + "reference": "DocumentReference/1a73cc79-10ae-49e6-ae4d-8c49dff086f6" + }, + { + "reference": "Encounter/83f71c13-0dda-43fd-bd85-d06b3f461c96" + }, + { + "reference": "Condition/77ad0a1b-d7d3-46e9-9842-8650a0c79e4a" + }, + { + "reference": "Encounter/5ec9bca5-7a63-4160-a820-88ef497c5936" + }, + { + "reference": "Condition/5bbcd836-1618-4691-ab7d-bdf18bbbb4f1" + }, + { + "reference": "MedicationRequest/04d13851-33cb-4d2c-99cf-123ea19d03eb" + }, + { + "reference": "CareTeam/2aaed795-9fa5-4bf0-b070-22e7fd38c58e" + }, + { + "reference": "CarePlan/0ccad2e9-6157-4d74-ab64-b960223aca75" + }, + { + "reference": "DiagnosticReport/a21585a5-c136-4f22-9890-37b7f6abaa62" + }, + { + "reference": "DocumentReference/b0db2fe0-0206-42fb-9dd6-08cf7ebee59c" + }, + { + "reference": "Encounter/179334f9-0484-4699-ba4f-4d0989ac8487" + }, + { + "reference": "Observation/1583596d-ef20-41e9-a11a-410753e948c0" + }, + { + "reference": "Immunization/4f941c6a-aa69-415f-bc53-8581cbe0a436" + }, + { + "reference": "Encounter/4c31a373-562d-4103-9ebf-5e6cf7dc362e" + }, + { + "reference": "Observation/2ddb0a5a-df51-4eeb-877a-fcc10dba77e9" + }, + { + "reference": "Immunization/a283ffa3-d380-43d2-8234-863ea100ec19" + }, + { + "reference": "Encounter/deaf25c3-b974-4f5b-9d42-46defef167f4" + }, + { + "reference": "Observation/21589da7-db83-42b7-b8d0-919d57896175" + }, + { + "reference": "Procedure/4395111d-545c-477d-b0af-45826670e714" + }, + { + "reference": "Immunization/9ddbc0ca-1113-46cf-a9e9-cb6fb7822b87" + }, + { + "reference": "Encounter/e7ee4f64-3db5-4935-9d03-5c416b14db21" + }, + { + "reference": "Condition/6cf69605-6267-4a67-b757-fd270bcd711c" + }, + { + "reference": "Encounter/e3b4846b-fba8-4357-b729-fef4cb0164e3" + }, + { + "reference": "Condition/2c963716-6cd8-49e5-b22d-2c737231806b" + }, + { + "reference": "Encounter/6c6cc909-1ed8-4fce-b06e-eac9ddc04ee1" + }, + { + "reference": "Observation/4b08120b-cf0b-4281-afc0-c05cc5678066" + }, + { + "reference": "Immunization/e774751b-ac79-4dc4-9bc8-9dbf9efdbf68" + }, + { + "reference": "DiagnosticReport/151d0ea7-959b-4164-a2eb-32e48ec17b7c" + }, + { + "reference": "DocumentReference/89cdbef2-ed63-4c8f-b34f-9112dc737b4a" + }, + { + "reference": "Encounter/c67490c9-5799-4de5-9753-8b21250f1b6a" + }, + { + "reference": "Condition/2ce3d17d-9925-4a2a-b830-abb15ac3e5a2" + }, + { + "reference": "Encounter/1e8048ed-e44a-4d28-863e-7b851b42b21b" + }, + { + "reference": "Condition/60497591-83b7-4d03-9c86-0163c6dc083e" + }, + { + "reference": "Procedure/96437588-5174-478d-b2a6-8c5ffc5a6354" + }, + { + "reference": "Procedure/6a67194c-1b2f-4fe5-8759-a2f11e4fac2b" + }, + { + "reference": "Encounter/77142479-92e2-4b0f-b2b2-1e90dfc8f33a" + }, + { + "reference": "Procedure/b3f4be36-8b72-4d25-a40c-60f76a0a7aba" + }, + { + "reference": "MedicationRequest/ec88d024-d986-46b9-bace-29f0b72061f2" + }, + { + "reference": "CareTeam/3872d222-cfcb-4dde-a049-546aab6bd4bd" + }, + { + "reference": "CarePlan/2b6d9309-dbfb-48ff-95c5-19d3637dd897" + }, + { + "reference": "Encounter/00ee3d86-5b96-4f48-ab39-aba3cea33821" + }, + { + "reference": "Observation/2939fa8a-72be-4f18-a990-1bffe12f58b8" + }, + { + "reference": "MedicationRequest/20834586-3ec0-4868-9e51-58fcbbcb9a9f" + }, + { + "reference": "Immunization/1eb545b7-c60d-492d-96c9-0ef939f2f8a0" + }, + { + "reference": "Encounter/17e45950-6cdd-4f5c-96c4-e81f75cf023b" + }, + { + "reference": "Encounter/82da7eb8-fb01-4375-8909-70df373b63af" + }, + { + "reference": "Procedure/bd1b737f-0845-4229-96b5-7a13bc1160af" + }, + { + "reference": "DiagnosticReport/2b5e7e94-a3c2-453a-855e-c6bf99e05f27" + }, + { + "reference": "DocumentReference/d29a3a9c-0c45-4172-be04-c753b03da024" + }, + { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + { + "reference": "Observation/c0ab8044-34ed-48c4-ba07-d94f3eb0f3c3" + }, + { + "reference": "Procedure/b584df3c-3970-45dd-a711-724bd5ce5d91" + }, + { + "reference": "Procedure/a411e4be-486d-4224-a2e5-d2a1d63701cd" + }, + { + "reference": "Medication/1d084750-b9da-43a9-b0b3-3ce1ff7ed3a5" + }, + { + "reference": "MedicationRequest/c352dc5a-83f8-4016-b162-7b82d6642cca" + }, + { + "reference": "CareTeam/fca9c28a-dcea-40de-b314-092612d46ec4" + }, + { + "reference": "CarePlan/bcbbabd0-c349-4122-9edd-17fe2729ddc1" + }, + { + "reference": "Encounter/8cf413f9-1d0b-4d15-aeac-f9aba813d043" + }, + { + "reference": "Observation/d6c2db07-b5dc-4dec-88c5-e6292b30a3d4" + }, + { + "reference": "MedicationRequest/0d85a2f4-5aaf-4a51-bc65-d3efdd9777a4" + }, + { + "reference": "Immunization/bef7fc9d-4097-429e-b6bd-7fa0cc291108" + }, + { + "reference": "Encounter/72a9d0a0-7b14-4f44-9743-278203f903f6" + }, + { + "reference": "Encounter/1e3520c2-efcd-4f94-ae1f-8ff254ccc200" + }, + { + "reference": "Procedure/08b682e1-cea6-4d5e-bde9-2db85c77d2a3" + }, + { + "reference": "Encounter/06276bc1-1df8-4e26-aede-4592382b2213" + }, + { + "reference": "Observation/fbbbdd63-360b-45db-9e14-18e4c6a4ffe1" + }, + { + "reference": "MedicationRequest/9ceb6657-25d8-47a0-8206-694013e844c0" + }, + { + "reference": "Immunization/8b53a9e0-0555-44f4-b2e4-0957f94b033b" + }, + { + "reference": "Encounter/aa44a2e9-8ffd-4240-94a9-58e8090e541e" + }, + { + "reference": "Procedure/14748aa9-e8ea-4c51-b5e5-67b3b299e4d5" + }, + { + "reference": "Encounter/ffe69e0e-65d3-4564-aea2-19c9b00d5e76" + }, + { + "reference": "Procedure/36b24096-dd13-445f-ac46-5313d50422af" + }, + { + "reference": "Procedure/4182bcb1-156b-46f0-8bf7-52d772e48d7e" + }, + { + "reference": "Encounter/12012eac-3d0d-43f6-9107-f2d3bde56c66" + }, + { + "reference": "Procedure/b3cf4fe9-e4b7-457d-9d56-c7831733c605" + }, + { + "reference": "Procedure/1c4d5a52-13b1-4bfb-b872-6671a78632e3" + }, + { + "reference": "Procedure/5aacd243-6383-461f-a4b0-fa6e06b13fb6" + }, + { + "reference": "Procedure/d88de38c-8095-4ab7-8caa-34ea0bb64737" + }, + { + "reference": "CareTeam/0d11b17f-58cc-479d-9369-46703af4891d" + }, + { + "reference": "CarePlan/8f7cb4e2-e785-48d0-bcf6-2e321b4c8632" + }, + { + "reference": "Encounter/b83434db-f62f-4650-abde-ba16cb330143" + }, + { + "reference": "Observation/c32f91ce-63e0-46ab-9fde-9b910ecb9fa5" + }, + { + "reference": "MedicationRequest/c6fed83c-61b4-4da5-b04e-c77938533617" + }, + { + "reference": "Immunization/15c070f7-582e-4658-95fd-85eaf567f633" + }, + { + "reference": "Observation/b6c66873-602c-4d26-8bc4-d0b0c4a4ec6b" + }, + { + "reference": "Observation/cd59d22b-1f80-4f2e-b0ca-726609065d8e" + }, + { + "reference": "DocumentReference/0259ad0e-521c-41f8-b69f-98ef229c7791" + }, + { + "reference": "DocumentReference/b45ad5a2-c12d-4ac4-b230-48efad944cba" + }, + { + "reference": "DocumentReference/a0ec8ae7-e8c0-457e-a4ef-e526d8785784" + }, + { + "reference": "Observation/373d2aa4-d25e-44f2-886c-4fe378f71d78" + }, + { + "reference": "Observation/e6530a30-3922-4b09-91ea-74ed9afd1c75" + }, + { + "reference": "RelatedPerson/b8a4920a-cd9c-4f44-ab71-00ea706ee79d" + }, + { + "reference": "Observation/0a49d7f4-1769-45bc-91e1-7cb228116b1a" + }, + { + "reference": "Observation/5f6cd7a2-5287-44c4-8aa4-2a82a9083df8" + }, + { + "reference": "Observation/9b65d94a-8ca9-48ca-a6b9-04ed21aaaa17" + }, + { + "reference": "Observation/e761cca8-5bcb-4574-9233-1bb4c5a170c8" + }, + { + "reference": "Media/cb686898-fdac-4232-a6db-403d8bccae60" + }, + { + "reference": "Observation/0bf0c1b1-df0f-4c6b-bd14-35a8aa61d82e" + }, + { + "reference": "Observation/eb0e7530-e1a3-4fee-9c3d-5e6a78de47c3" + }, + { + "reference": "Observation/39f837dc-9b64-4f1f-b0dc-1896897c8d93" + }, + { + "reference": "Observation/2b122d41-0763-4502-a3c9-6d42541bb98e" + }, + { + "reference": "Observation/3c5de76b-9fcf-4181-8019-aec784bd0626" + }, + { + "reference": "Coverage/d5917a31-1489-4596-b819-6300900c7d70" + }, + { + "reference": "Observation/0725b70d-54bd-453b-b65a-6a430d9fc39a" + }, + { + "reference": "Observation/639f417d-bd48-4cd1-9c3d-6537ee9b4900" + }, + { + "reference": "Observation/e816c1f3-5d2d-42a6-95db-c9ca317b18e4" + }, + { + "reference": "Specimen/b1ab2cd4-196d-4b91-bc4a-e4a0c9e643f4" + }, + { + "reference": "MedicationDispense/1d44f243-b56c-4b9f-a916-5849fe8976b0" + }, + { + "reference": "MedicationDispense/64827dd6-26a1-4ae7-a121-3bbef7364a76" + }, + { + "reference": "Observation/1cbb004a-cfa2-4c17-b615-bdec58a2b34e" + }, + { + "reference": "Observation/70b6a7ec-1f95-45aa-9da9-03c566c789bf" + }, + { + "reference": "Observation/0bed35a2-3cc6-4b38-879c-d4083fd7ad95" + }, + { + "reference": "Observation/9624647d-32b8-4e6c-bf6f-58bd0673930f" + }, + { + "reference": "Observation/444fb82c-302d-41f5-bb66-dd3e681fc447" + }, + { + "reference": "Observation/1496ddbc-4153-448c-b06d-dfe65cca6b91" + }, + { + "reference": "Observation/bcd1b5aa-8569-4d6b-8e0d-8512a50ea09c" + }, + { + "reference": "Observation/2ea1ce85-fa3c-4191-9364-2ca37abe76c3" + }, + { + "reference": "Endpoint/e6a74f8c-522d-4526-b3c3-b59892fe92b6" + }, + { + "reference": "DocumentReference/57c4a624-437e-4daf-bc2e-b46c7ee334cd" + }, + { + "reference": "Observation/c1c17c57-04b6-42d9-ac9d-d5c5f2c389ad" + }, + { + "reference": "DocumentReference/dbcba291-9ed7-4a5e-a92c-cded82165460" + } + ], + "recorded": "1977-07-15T01:11:45.131-04:00", + "agent": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", + "code": "author", + "display": "Author" + } + ], + "text": "Author" + }, + "who": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + }, + { + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type", + "code": "transmitter", + "display": "Transmitter" + } + ], + "text": "Transmitter" + }, + "who": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "onBehalfOf": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f189a524-49cb-4675-a0d5-1b63011e2e13", + "resource": { + "resourceType": "Observation", + "id": "f189a524-49cb-4675-a0d5-1b63011e2e13", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "2708-6", + "display": "Oxygen saturation in Arterial blood" + }, + { + "system": "http://loinc.org", + "code": "59408-5", + "display": "Oxygen saturation in Arterial blood by Pulse oximetry" + } + ], + "text": "Oxygen saturation in Arterial blood" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "effectiveDateTime": "1975-04-07T02:51:45-04:00", + "issued": "1975-04-07T02:51:45.131-04:00", + "valueQuantity": { + "value": 77, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + }, + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "3151-8", + "display": "Inhaled oxygen flow rate" + } + ], + "text": "Inhaled oxygen flow rate" + }, + "valueQuantity": { + "value": 6, + "unit": "L/min", + "system": "http://unitsofmeasure.org", + "code": "L/min" + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "3150-0", + "display": "Inhaled oxygen concentration" + } + ], + "text": "Inhaled oxygen concentration" + }, + "valueQuantity": { + "value": 40, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/70672dc9-dae7-4956-961b-5973f719252e", + "resource": { + "resourceType": "Observation", + "id": "70672dc9-dae7-4956-961b-5973f719252e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "2708-6", + "display": "Oxygen saturation in Arterial blood" + }, + { + "system": "http://loinc.org", + "code": "59408-5", + "display": "Oxygen saturation in Arterial blood by Pulse oximetry" + } + ], + "text": "Oxygen saturation in Arterial blood" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "effectiveDateTime": "1975-04-07T02:51:45-04:00", + "issued": "1975-04-07T02:51:45.131-04:00", + "valueQuantity": { + "value": 77, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + }, + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "3151-8", + "display": "Inhaled oxygen flow rate" + } + ], + "text": "Inhaled oxygen flow rate" + }, + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "3150-0", + "display": "Inhaled oxygen concentration" + } + ], + "text": "Inhaled oxygen concentration" + }, + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b6c66873-602c-4d26-8bc4-d0b0c4a4ec6b", + "resource": { + "resourceType": "Observation", + "id": "b6c66873-602c-4d26-8bc4-d0b0c4a4ec6b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-pulse-oximetry" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "2708-6", + "display": "Oxygen saturation in Arterial blood" + }, + { + "system": "http://loinc.org", + "code": "59408-5", + "display": "Oxygen saturation in Arterial blood by Pulse oximetry" + } + ], + "text": "Oxygen saturation in Arterial blood" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/f641d56a-c17b-4d76-97fa-9f2e85f8a226" + }, + "effectiveDateTime": "1975-04-07T02:51:45-04:00", + "issued": "1975-04-07T02:51:45.131-04:00", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e6530a30-3922-4b09-91ea-74ed9afd1c75", + "resource": { + "resourceType": "Observation", + "id": "e6530a30-3922-4b09-91ea-74ed9afd1c75", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "0254bd52-2ef9-11ed-a261-0242ac120002" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "Laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11279-7", + "display": "Urine sediment comments by Light microscopy Narrative" + } + ], + "text": "COMMENT" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2005-07-05", + "valueString": "Recommend Urine Culture", + "specimen": { + "reference": "Specimen/b1ab2cd4-196d-4b91-bc4a-e4a0c9e643f4" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/RelatedPerson/b8a4920a-cd9c-4f44-ab71-00ea706ee79d", + "resource": { + "resourceType": "RelatedPerson", + "id": "b8a4920a-cd9c-4f44-ab71-00ea706ee79d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-relatedperson" + ] + }, + "active": false, + "patient": { + "reference": "Patient/85" + }, + "relationship": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "ROOM", + "display": "Roommate" + } + ] + } + ], + "name": [ + { + "use": "official", + "family": "Jefferson174", + "given": [ + "Ronald408", + "MacGyver246" + ], + "prefix": [ + "Mr." + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "555-164-3435", + "use": "home" + } + ], + "address": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 42.33734137767395 + }, + { + "url": "longitude", + "valueDecimal": -71.0633497363917 + } + ] + } + ], + "line": [ + "445 Braun Mews" + ], + "city": "Boston", + "state": "MA", + "postalCode": "02110", + "country": "US", + "period": { + "start": "2019-02-07" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/5f6cd7a2-5287-44c4-8aa4-2a82a9083df8", + "resource": { + "resourceType": "Observation", + "id": "5f6cd7a2-5287-44c4-8aa4-2a82a9083df8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-test" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-observation-category", + "code": "clinical-test", + "display": "Clinical Test" + } + ], + "text": "Clinical Test" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "44967-8", + "display": "EKG lead" + } + ], + "text": "EKG lead" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2021-11-10T16:48:57.246958-08:00", + "valueString": "II" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e761cca8-5bcb-4574-9233-1bb4c5a170c8", + "resource": { + "resourceType": "Observation", + "id": "e761cca8-5bcb-4574-9233-1bb4c5a170c8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-result", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-imaging" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "64472760-6ad8-eaf7-e91f-1fdd7776d724" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "imaging", + "display": "imaging" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "44667-4", + "display": "Site of distant metastasis in Breast tumor" + } + ], + "text": "Site of distant metastasis in Breast tumor" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2018-08-17T17:44:25-05:00", + "issued": "2018-08-17T17:44:25.961-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "260413007", + "display": "None (qualifier value)" + } + ], + "text": "None (qualifier value)" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0bf0c1b1-df0f-4c6b-bd14-35a8aa61d82e", + "resource": { + "resourceType": "Observation", + "id": "0bf0c1b1-df0f-4c6b-bd14-35a8aa61d82e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-screening-assessment", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-sdoh-assessment", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-simple-observation" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "86744768-f16e-4582-b5b4-d598cb9497ce" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-tags", + "code": "sdoh", + "display": "SDOH" + }, + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "sdoh", + "display": "SDOH" + } + ] + }, + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "44250-9", + "display": "Little interest or pleasure in doing things in last 2 weeks" + } + ], + "text": "Little interest or pleasure in doing things?" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-03-29T22:38:59.084000+00:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "LA6568-5", + "display": "Not at all" + } + ], + "text": "Not at all" + }, + "hasMember": [ + { + "reference": "Observation/eb0e7530-e1a3-4fee-9c3d-5e6a78de47c3" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/eb0e7530-e1a3-4fee-9c3d-5e6a78de47c3", + "resource": { + "resourceType": "Observation", + "id": "eb0e7530-e1a3-4fee-9c3d-5e6a78de47c3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-screening-assessment", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-sdoh-assessment", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-simple-observation" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "8d0f6cc9-eae0-49f2-84b8-993dc7ad4afb" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-tags", + "code": "sdoh", + "display": "SDOH" + }, + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "sdoh", + "display": "SDOH" + } + ] + }, + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "44250-9", + "display": "Little interest or pleasure in doing things in last 2 weeks" + } + ], + "text": "Little interest or pleasure in doing things?" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-03-29T22:38:59.084000+00:00", + "performer": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927" + } + ], + "valueString": "Not at all", + "derivedFrom": [ + { + "reference": "Observation/0bf0c1b1-df0f-4c6b-bd14-35a8aa61d82e" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/39f837dc-9b64-4f1f-b0dc-1896897c8d93", + "resource": { + "resourceType": "Observation", + "id": "39f837dc-9b64-4f1f-b0dc-1896897c8d93", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00" + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "survey" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "55758-7", + "display": "Patient Health Questionnaire 2 item (PHQ-2) total score [Reported]" + } + ], + "text": "Patient Health Questionnaire 2 item (PHQ-2) total score [Reported]" + }, + "subject": { + "reference": "Patient/85" + }, + "encounter": { + "reference": "Encounter/bfd99b5d-31da-4673-82ed-97c90f1b61e3" + }, + "effectiveDateTime": "2018-02-11T23:45:12-06:00", + "issued": "2018-02-11T23:45:12.675-06:00", + "valueQuantity": { + "value": 2, + "unit": "{score}", + "system": "http://unitsofmeasure.org", + "code": "{score}" + }, + "derivedFrom": [ + { + "reference": "Observation/0bf0c1b1-df0f-4c6b-bd14-35a8aa61d82e" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/2b122d41-0763-4502-a3c9-6d42541bb98e", + "resource": { + "resourceType": "Observation", + "id": "2b122d41-0763-4502-a3c9-6d42541bb98e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00" + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "survey" + } + ] + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-tags", + "code": "sdoh", + "display": "SDOH" + }, + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "sdoh", + "display": "SDOH" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "75626-2", + "display": "Total score [AUDIT-C]" + } + ], + "text": "Total score [AUDIT-C]" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2018-02-11T23:45:12-06:00", + "issued": "2018-02-11T23:45:12.675-06:00", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown" + } + ] + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/3c5de76b-9fcf-4181-8019-aec784bd0626", + "resource": { + "resourceType": "Observation", + "id": "3c5de76b-9fcf-4181-8019-aec784bd0626", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-sexual-orientation" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "010e9fbf-26a7-47fb-866c-d742d29a423a" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "76690-7", + "display": "Sexual orientation" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2020-05-18T10:17:51-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-NullFlavor", + "code": "UNK", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Coverage/d5917a31-1489-4596-b819-6300900c7d70", + "resource": { + "resourceType": "Coverage", + "id": "d5917a31-1489-4596-b819-6300900c7d70", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-coverage" + ] + }, + "identifier": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MB" + } + ] + }, + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "f4a375d2-4e53-4f81-ba95-345e7573b550" + } + ], + "status": "active", + "type": { + "coding": [ + { + "system": "https://nahdo.org/sopt", + "code": "3712", + "display": "PPO" + }, + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "PPO", + "display": "preferred provider organization policy" + } + ], + "text": "PPO" + }, + "subscriberId": "888009335", + "beneficiary": { + "reference": "Patient/85" + }, + "relationship": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship", + "code": "self" + } + ], + "text": "Self" + }, + "period": { + "start": "2020-01-01" + }, + "payor": [ + { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + ], + "class": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/coverage-class", + "code": "group", + "display": "Group" + } + ], + "text": "An employee group" + }, + "value": "xyz", + "name": "XYZ employee Group Plan" + }, + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/coverage-class", + "code": "plan", + "display": "Plan" + } + ], + "text": "A specific suite of benefits." + }, + "value": "gold", + "name": "Acme Gold Plan" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0725b70d-54bd-453b-b65a-6a430d9fc39a", + "resource": { + "resourceType": "Observation", + "id": "0725b70d-54bd-453b-b65a-6a430d9fc39a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-pregnancyintent" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "a24de725-699a-49a4-87d3-0a4cbf964a9f" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ], + "text": "Social History" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "86645-9", + "display": "Pregnancy intention in the next year - Reported" + } + ], + "text": "Pregnancy Intent" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-09-23T22:39:43Z", + "performer": [ + { + "reference": "Patient/85" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "version": "http://snomed.info/sct/731000124108", + "code": "454381000124105", + "display": "Not sure of desire to become pregnant (finding)" + } + ] + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/639f417d-bd48-4cd1-9c3d-6537ee9b4900", + "resource": { + "resourceType": "Observation", + "id": "639f417d-bd48-4cd1-9c3d-6537ee9b4900", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-occupation" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "8bef174a-00eb-41d6-9cfd-27945c91a43a" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11341-5", + "display": "History of Occupation" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "effectivePeriod": { + "start": "2015-04-24" + }, + "performer": [ + { + "reference": "Patient/85" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/PHOccupationalDataForHealthODH", + "code": "31-1014.00.007136", + "display": "Certified Nursing Assistant (CNA) [Nursing Assistants]" + } + ] + }, + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "86188-0", + "display": "History of Occupation Industry" + } + ] + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/PHOccupationalDataForHealthODH", + "code": "621610.008495", + "display": "Home nursing services" + } + ] + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e816c1f3-5d2d-42a6-95db-c9ca317b18e4", + "resource": { + "resourceType": "Observation", + "id": "e816c1f3-5d2d-42a6-95db-c9ca317b18e4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-pregnancystatus" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "ea0ff093-87f5-4335-a220-cc82ab0cb49e" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ], + "text": "Social History" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "82810-3", + "display": "Pregnancy status" + } + ], + "text": "Pregnancy Status" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-08-24T10:39:52Z", + "performer": [ + { + "reference": "Patient/85" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "60001007", + "display": "Not pregnant (finding)" + } + ], + "text": "Not pregnant (finding)" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1cbb004a-cfa2-4c17-b615-bdec58a2b34e", + "resource": { + "resourceType": "Observation", + "id": "1cbb004a-cfa2-4c17-b615-bdec58a2b34e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-treatment-intervention-preference|7.0.0" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "47576d19-ec6c-4ab9-b8e0-3e8ed99a35be" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "treatment-intervention-preference", + "display": "Treatment Intervention preference" + } + ], + "text": "Treatment Intervention Preference" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "75773-2" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2023-08-30", + "performer": [ + { + "reference": "Patient/85" + } + ], + "valueString": "If I am having significant pain or suffering, I would like my doctors to consult a Supportive and Palliative Care Team to help treat my physical, emotional and spiritual discomfort, and to support my family." + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/70b6a7ec-1f95-45aa-9da9-03c566c789bf", + "resource": { + "resourceType": "Observation", + "id": "70b6a7ec-1f95-45aa-9da9-03c566c789bf", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-treatment-intervention-preference|7.0.0" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "a8972ead-fee5-4a96-be8a-9f2a77264d9d" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "treatment-intervention-preference", + "display": "Treatment Intervention preference" + } + ], + "text": "Treatment Intervention Preference" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "75773-2" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2023-08-30", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "treatment-intervention-preference", + "display": "Treatment Intervention Preference" + } + ], + "text": "Treatment Intervention Preference" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0bed35a2-3cc6-4b38-879c-d4083fd7ad95", + "resource": { + "resourceType": "Observation", + "id": "0bed35a2-3cc6-4b38-879c-d4083fd7ad95", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-care-experience-preference|7.0.0" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "db06bd66-469d-4556-9883-cd6a8be1f7e9" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "care-experience-preference", + "display": "Care experience preference" + } + ], + "text": "Care Experience Preference" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "95541-9", + "display": "Care experience preference" + } + ], + "text": "Care Experience Preference" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2023-08-30", + "performer": [ + { + "reference": "Patient/85" + } + ], + "valueString": "For critical or end-of-life care, here are some examples of the things that I would like to have near me, music that I’d like to hear, and other details of my care that would help to keep me happy and relaxed: Like Bach, especially the cantatas. St. Martin in the Fields" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9624647d-32b8-4e6c-bf6f-58bd0673930f", + "resource": { + "resourceType": "Observation", + "id": "9624647d-32b8-4e6c-bf6f-58bd0673930f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-care-experience-preference" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "bef6c601-bc94-4f55-9f87-7f46afcc2943" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "care-experience-preference", + "display": "Care experience preference" + } + ], + "text": "Care Experience Preference" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "95541-9", + "display": "Care experience preference" + } + ], + "text": "Care Experience Preference" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2023-08-30", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "95541-9", + "display": "Care experience preference" + } + ], + "text": "Care Experience Preference" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Specimen/b1ab2cd4-196d-4b91-bc4a-e4a0c9e643f4", + "resource": { + "resourceType": "Specimen", + "id": "b1ab2cd4-196d-4b91-bc4a-e4a0c9e643f4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-specimen" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "82115a91-04c9-4654-acb5-72f2806e00fc" + } + ], + "accessionIdentifier": { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "7446d969-3293-4f51-8d48-034121156b4e" + }, + "type": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "122575003", + "display": "Urine specimen (specimen)" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "collection": { + "collectedDateTime": "2005-07-05T18:07:12Z", + "bodySite": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "106004", + "display": "Posterior carpal region" + } + ] + } + }, + "container": [ + { + "type": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "702244006", + "display": "Sterile urine specimen container" + } + ], + "text": "Sterile urine specimen container" + } + } + ], + "condition": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0493", + "code": "AUT", + "display": "Autolyzed" + } + ] + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationDispense/64827dd6-26a1-4ae7-a121-3bbef7364a76", + "resource": { + "resourceType": "MedicationDispense", + "id": "64827dd6-26a1-4ae7-a121-3bbef7364a76", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationdispense" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "1bc16d93-9ac8-4dc7-ad90-e649c01f8b19" + } + ], + "status": "completed", + "medicationReference": { + "reference": "Medication/1d084750-b9da-43a9-b0b3-3ce1ff7ed3a5", + "display": "10 ML Furosemide 10 MG/ML Injection" + }, + "subject": { + "reference": "Patient/85" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + }, + { + "actor": { + "reference": "PractitionerRole/dccac836-b051-411b-a4e3-da1be2f34d4a" + } + } + ], + "authorizingPrescription": [ + { + "reference": "MedicationRequest/c352dc5a-83f8-4016-b162-7b82d6642cca", + "display": "10 ML Furosemide 10 MG/ML Injection" + } + ], + "whenHandedOver": "1975-04-07T02:51:45-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationDispense/1d44f243-b56c-4b9f-a916-5849fe8976b0", + "resource": { + "resourceType": "MedicationDispense", + "id": "1d44f243-b56c-4b9f-a916-5849fe8976b0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationdispense" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "17991da0-97b0-447c-bb49-185eb104a160" + } + ], + "status": "completed", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313988", + "display": "Furosemide 40 MG Oral Tablet" + } + ], + "text": "Furosemide 40 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/85" + }, + "context": { + "reference": "Encounter/f62c2559-e3aa-4c89-86dc-498170fb040c" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + }, + { + "actor": { + "reference": "PractitionerRole/f1ce27f4-4e4c-4d23-ba5d-93e1c1af9653" + } + }, + { + "actor": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + } + } + ], + "authorizingPrescription": [ + { + "reference": "MedicationRequest/c6fed83c-61b4-4da5-b04e-c77938533617", + "display": "Furosemide 40 MG Oral Tablet" + } + ], + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "FFC", + "display": "First Fill - Complete" + } + ] + }, + "quantity": { + "value": 480, + "unit": "mL", + "system": "http://unitsofmeasure.org", + "code": "mL" + }, + "whenHandedOver": "2016-12-08T06:38:52Z", + "dosageInstruction": [ + { + "text": "10 mL bid", + "timing": { + "repeat": { + "boundsPeriod": { + "start": "2008-04-05" + }, + "frequency": 2, + "period": 1, + "periodUnit": "d" + } + }, + "route": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "26643006", + "display": "Oral route" + } + ] + }, + "doseAndRate": [ + { + "doseQuantity": { + "value": 10, + "unit": "ml", + "system": "http://unitsofmeasure.org", + "code": "mL" + } + } + ] + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/444fb82c-302d-41f5-bb66-dd3e681fc447", + "resource": { + "resourceType": "Observation", + "id": "444fb82c-302d-41f5-bb66-dd3e681fc447", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-screening-assessment" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "7fcb009a-2848-45fd-b563-052ca2ca154e" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "disability-status", + "display": "Disability Status" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "44250-9", + "display": "Little interest or pleasure in doing things in last 2 weeks" + } + ], + "text": "Little interest or pleasure in doing things in last 2 weeks" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-11-29T20:50:32.718000+00:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "LA6570-1", + "display": "More than half the days" + } + ], + "text": "More than half the days" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1496ddbc-4153-448c-b06d-dfe65cca6b91", + "resource": { + "resourceType": "Observation", + "id": "1496ddbc-4153-448c-b06d-dfe65cca6b91", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-screening-assessment" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "8429d80d-2246-4a80-8502-8ba615a61c29" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "functional-status", + "display": "Functional Status" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "44255-8", + "display": "Feeling down, depressed, or hopeless in last 2 weeks" + } + ], + "text": "Feeling down, depressed, or hopeless in last 2 weeks" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-11-29T20:50:32.718000+00:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "LA6570-1", + "display": "More than half the days" + } + ], + "text": "More than half the days" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/bcd1b5aa-8569-4d6b-8e0d-8512a50ea09c", + "resource": { + "resourceType": "Observation", + "id": "bcd1b5aa-8569-4d6b-8e0d-8512a50ea09c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-screening-assessment" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "4ad13fb9-4a39-4622-a1c7-f7a580d405b6" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "cognitive-status", + "display": "Cognitive Status" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11332-4", + "display": "History of Cognitive Function Narrative" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-11-29T20:50:32.718000+00:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "valueString": "Alert and oriented x 3. She is independent in household finances, social and community activities, coherent and appropriate communication. Appropriate attire for location and weather." + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/2ea1ce85-fa3c-4191-9364-2ca37abe76c3", + "resource": { + "resourceType": "Observation", + "id": "2ea1ce85-fa3c-4191-9364-2ca37abe76c3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-screening-assessment" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "527fa5dd-9c4f-4e31-9ac8-36d3f9bd0e98" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + }, + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "activity", + "display": "Activity" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "93038-8", + "display": "Stress level" + } + ], + "text": "Stress level" + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "2022-11-29T20:50:32.718000+00:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://loinc.org", + "code": "LA13909-9", + "display": "Somewhat" + } + ], + "text": "Somewhat" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/57c4a624-437e-4daf-bc2e-b46c7ee334cd", + "resource": { + "resourceType": "DocumentReference", + "id": "57c4a624-437e-4daf-bc2e-b46c7ee334cd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-adi-documentreference|8.0.0" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-authentication-time", + "valueDateTime": "1941-09-05T01:11:45-04:00" + } + ], + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "cf2587fa-6106-45f4-8264-fbe3d38853f5" + } + ], + "status": "current", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "86533-7", + "display": "Patient Living will" + } + ], + "text": "Patient Living Will" + }, + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "42348-3", + "display": "Advance healthcare directives" + } + ], + "text": "Advance Directives" + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "2024-10-08T19:48:54.316108-07:00", + "author": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "authenticator": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "content": [ + { + "attachment": { + "contentType": "application/pdf", + "data": "JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSAoRXhhbXBsZSBvZiBhIExpdmluZyBXaWxsKQovQ3JlYXRvciAoTW96aWxsYS81LjAgXChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzdcKSBBcHBsZVdlYktpdC81MzcuMzYgXChLSFRNTCwgbGlrZSBHZWNrb1wpIENocm9tZS8xMjkuMC4wLjAgU2FmYXJpLzUzNy4zNikKL1Byb2R1Y2VyIChTa2lhL1BERiBtMTI5KQovQ3JlYXRpb25EYXRlIChEOjIwMjQxMDA0MTQ0MTUxKzAwJzAwJykKL01vZERhdGUgKEQ6MjAyNDEwMDQxNDQxNTErMDAnMDAnKT4+CmVuZG9iagozIDAgb2JqCjw8L2NhIDEKL0JNIC9Ob3JtYWw=", + "title": "Living Will (PDF)", + "creation": "1941-10-04" + }, + "format": { + "system": "http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode", + "code": "urn:ihe:iti:xds-sd:pdf:2008", + "display": "ITI XDS-SD PDF" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c1c17c57-04b6-42d9-ac9d-d5c5f2c389ad", + "resource": { + "resourceType": "Observation", + "id": "c1c17c57-04b6-42d9-ac9d-d5c5f2c389ad", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-adi-documentation" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/workflow-supportingInfo", + "valueReference": { + "reference": "DocumentReference/57c4a624-437e-4daf-bc2e-b46c7ee334cd", + "display": "Living Will" + } + } + ], + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "23c5bf6a-b411-424a-b466-9dee7f4838df" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "observation-adi-documentation", + "display": "Observation ADI Documentation" + } + ], + "text": "Observation ADI Documentation" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "45473-6" + } + ] + }, + "subject": { + "reference": "Patient/85" + }, + "effectiveDateTime": "1941-09-05T01:11:45-04:00", + "issued": "1941-09-05T01:11:45-04:00", + "performer": [ + { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + } + ], + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "version": "http://snomed.info/sct/731000124108", + "code": "373066001", + "display": "Yes (qualifier value)" + } + ] + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/dbcba291-9ed7-4a5e-a92c-cded82165460", + "resource": { + "resourceType": "DocumentReference", + "id": "dbcba291-9ed7-4a5e-a92c-cded82165460", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:ce01eb8d-1574-4fcf-8456-7c80bfd9e5b9" + } + ], + "status": "current", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34111-5", + "display": "Emergency department Note" + } + ], + "text": "Emergency department note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/85" + }, + "date": "1941-06-06T01:11:45.131-04:00", + "author": [ + { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + } + ], + "custodian": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDEtMDYtMDYKCiMgQ2hpZWYgQ29tcGxhaW50Ck5vIGNvbXBsYWludHMuCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkx1Y2llbjQwOCBpcyBhIDEgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIGhpZ2ggc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQmx1ZSBDcm9zcyBCbHVlIFNoaWVsZC4KCiMgQWxsZXJnaWVzCk5vIEtub3duIEFsbGVyZ2llcy4KCiMgTWVkaWNhdGlvbnMKYXNwaXJpbiA4MSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgoK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/50aaf6d2-1739-4bfd-aa0d-da3e1e9a38d8" + } + ], + "period": { + "start": "1941-06-06T01:11:45-04:00", + "end": "1941-06-06T01:26:45-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Group/1a", + "resource": { + "resourceType": "Group", + "id": "1a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:52.663+00:00" + }, + "active": true, + "type": "person", + "actual": true, + "name": "Synthea US Core Patients", + "quantity": 2, + "member": [ + { + "entity": { + "reference": "Patient/85" + } + }, + { + "entity": { + "reference": "Patient/355" + } + }, + { + "entity": { + "reference": "Patient/907" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Medication/1d084750-b9da-43a9-b0b3-3ce1ff7ed3a5", + "resource": { + "resourceType": "Medication", + "id": "1d084750-b9da-43a9-b0b3-3ce1ff7ed3a5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medication" + ] + }, + "code": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "1719286", + "display": "10 ML Furosemide 10 MG/ML Injection" + } + ], + "text": "10 ML Furosemide 10 MG/ML Injection" + }, + "status": "active" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/PractitionerRole/f1ce27f4-4e4c-4d23-ba5d-93e1c1af9653", + "resource": { + "resourceType": "PractitionerRole", + "id": "f1ce27f4-4e4c-4d23-ba5d-93e1c1af9653", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole" + ] + }, + "contained": [ + { + "resourceType": "Endpoint", + "id": "endpoint", + "status": "active", + "connectionType": { + "system": "http://terminology.hl7.org/CodeSystem/endpoint-connection-type", + "code": "direct-project", + "display": "Direct Project" + }, + "payloadType": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/endpoint-payload-type", + "code": "any", + "display": "Any" + } + ], + "text": "Any" + } + ], + "address": "mailto:Melvin857.Torp761@example.com" + } + ], + "practitioner": { + "reference": "Practitioner/cc95f72b-c2ab-4c85-a4f5-423c9b1c1927", + "display": "Dr. Melvin857 Torp761" + }, + "organization": { + "reference": "Organization/cfc1c7c6-55a8-4837-8cac-530420162033", + "display": "PCP87052" + }, + "code": [ + { + "coding": [ + { + "system": "http://nucc.org/provider-taxonomy", + "code": "208D00000X", + "display": "General Practice Physician" + } + ], + "text": "General Practice Physician" + } + ], + "specialty": [ + { + "coding": [ + { + "system": "http://nucc.org/provider-taxonomy", + "code": "208D00000X", + "display": "General Practice Physician" + } + ], + "text": "General Practice Physician" + } + ], + "location": [ + { + "reference": "Location/023e8559-6c0a-47bc-9007-21f5039e3bb9", + "display": "PCP87052" + } + ], + "telecom": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-direct", + "valueBoolean": true + } + ], + "system": "email", + "value": "Melvin857.Torp761@example.com", + "use": "work" + } + ], + "endpoint": [ + { + "reference": "#endpoint", + "type": "Endpoint" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/PractitionerRole/dccac836-b051-411b-a4e3-da1be2f34d4a", + "resource": { + "resourceType": "PractitionerRole", + "id": "dccac836-b051-411b-a4e3-da1be2f34d4a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "8e81b028-5271-9eda-b6c0-0e308770ee50" + } + ], + "practitioner": { + "reference": "Practitioner/0e7372cc-565d-4dd0-818e-bff630254a34", + "display": "Dr. Willena258 Oberbrunner298" + }, + "organization": { + "reference": "Organization/b63e05cd-0235-4bc9-8e79-bd1e0671c3c5", + "display": "LOWELL GENERAL HOSPITAL" + }, + "code": [ + { + "coding": [ + { + "system": "http://nucc.org/provider-taxonomy", + "code": "208D00000X", + "display": "General Practice Physician" + } + ], + "text": "General Practice Physician" + } + ], + "specialty": [ + { + "coding": [ + { + "system": "http://nucc.org/provider-taxonomy", + "code": "208D00000X", + "display": "General Practice Physician" + } + ], + "text": "General Practice Physician" + } + ], + "location": [ + { + "reference": "Location/61ecf12f-0c7b-4629-9bc0-82c284630028", + "display": "LOWELL GENERAL HOSPITAL" + } + ], + "telecom": [ + { + "system": "phone", + "value": "9789376000" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-direct", + "valueBoolean": true + } + ], + "system": "email", + "value": "Willena258.Oberbrunner298@example.com", + "use": "work" + } + ], + "endpoint": [ + { + "reference": "Endpoint/e6a74f8c-522d-4526-b3c3-b59892fe92b6" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Endpoint/e6a74f8c-522d-4526-b3c3-b59892fe92b6", + "resource": { + "resourceType": "Endpoint", + "id": "e6a74f8c-522d-4526-b3c3-b59892fe92b6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:49.972+00:00" + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "f85b5cca-bcf8-421c-bbcf-11db4dcb7e9c" + } + ], + "status": "active", + "connectionType": { + "system": "http://terminology.hl7.org/CodeSystem/endpoint-connection-type", + "code": "direct-project", + "display": "Direct Project" + }, + "payloadType": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/endpoint-payload-type", + "code": "any", + "display": "Any" + } + ], + "text": "Any" + } + ], + "address": "mailto:Willena258.Oberbrunner298@example.com" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Patient/355", + "resource": { + "resourceType": "Patient", + "id": "355", + "meta": { + "versionId": "2", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient" + ] + }, + "text": { + "status": "generated", + "div": "
Generated by Synthea.Version identifier: v2.6.1-3-g50f4f58f\n . Person seed: 4286870567281389426 Population seed: 3
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", + "extension": [ + { + "url": "ombCategory", + "valueCoding": { + "system": "urn:oid:2.16.840.1.113883.6.238", + "code": "2106-3", + "display": "White" + } + }, + { + "url": "text", + "valueString": "White" + } + ] + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", + "extension": [ + { + "url": "ombCategory", + "valueCoding": { + "system": "urn:oid:2.16.840.1.113883.6.238", + "code": "2186-5", + "display": "Not Hispanic or Latino" + } + }, + { + "url": "text", + "valueString": "Not Hispanic or Latino" + } + ] + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", + "valueCode": "M" + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-tribal-affiliation", + "extension": [ + { + "url": "tribalAffiliation", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-TribalEntityUS", + "code": "338", + "display": "Native Village of Afognak" + } + ] + } + } + ] + } + ], + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "e91975f5-9445-c11f-cabf-c3c6dae161f2" + }, + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "MR", + "display": "Medical record number" + } + ], + "text": "Medical record number" + }, + "system": "http://hospital.smarthealthit.org", + "value": "e91975f5-9445-c11f-cabf-c3c6dae161f2" + }, + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "SS", + "display": "Social Security number" + } + ], + "text": "Social Security number" + }, + "system": "http://hl7.org/fhir/sid/us-ssn", + "value": "999-61-9797" + }, + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0203", + "code": "DL", + "display": "Driver's license number" + } + ], + "text": "Driver's license number" + }, + "system": "urn:oid:2.16.840.1.113883.4.3.25", + "value": "S99940283" + } + ], + "name": [ + { + "use": "official", + "family": "Ritchie586", + "given": [ + "Dustin31" + ], + "prefix": [ + "Mr." + ] + }, + { + "use": "old", + "family": "Ritchie586", + "given": [ + "John43" + ], + "prefix": [ + "Mr." + ], + "period": { + "start": "1940-09-05", + "end": "1962-04-30" + } + } + ], + "telecom": [ + { + "system": "phone", + "value": "555-770-2787", + "use": "home" + } + ], + "gender": "male", + "birthDate": "1940-09-05", + "address": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 42.1343534042923 + }, + { + "url": "longitude", + "valueDecimal": -72.67217549422628 + } + ] + } + ], + "line": [ + "599 Schowalter Promenade" + ], + "city": "West Springfield", + "state": "MA", + "postalCode": "01089", + "country": "US", + "period": { + "start": "1940-09-05" + } + } + ], + "maritalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus", + "code": "M", + "display": "Married" + } + ], + "text": "Married" + }, + "multipleBirthBoolean": false, + "communication": [ + { + "language": { + "coding": [ + { + "system": "urn:ietf:bcp:47", + "code": "en-US", + "display": "English (United States)" + } + ], + "text": "English (United States)" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Group/combo-Group", + "resource": { + "resourceType": "Group", + "id": "combo-Group", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:43.148+00:00" + }, + "active": true, + "type": "person", + "actual": true, + "name": "Proxy Group for patient Export", + "quantity": 4, + "member": [ + { + "entity": { + "reference": "Patient/888" + } + }, + { + "entity": { + "reference": "Patient/999" + } + }, + { + "entity": { + "reference": "Patient/85" + } + }, + { + "entity": { + "reference": "Patient/355" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f", + "resource": { + "resourceType": "Encounter", + "id": "5ad6a2f6-577c-4360-b86d-3417ba94034f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "65abf8dc-d463-e590-71e7-dea000842f94" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-09-05T19:33:18-04:00", + "end": "1940-09-05T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1940-09-05T19:33:18-04:00", + "end": "1940-09-05T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d944fd93-1f7a-4a25-96fc-b7a3f59647e9", + "resource": { + "resourceType": "Observation", + "id": "d944fd93-1f7a-4a25-96fc-b7a3f59647e9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/pediatric-weight-for-height" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "77606-2", + "display": "Weight-for-length Per age and sex" + } + ], + "text": "Weight-for-length Per age and sex" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f" + }, + "effectiveDateTime": "1940-09-05T19:33:18-04:00", + "issued": "1940-09-05T19:33:18.715-04:00", + "valueQuantity": { + "value": 7.5192, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0e80b0f3-279c-4cd1-9955-0cf6bd3779dd", + "resource": { + "resourceType": "Observation", + "id": "0e80b0f3-279c-4cd1-9955-0cf6bd3779dd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f" + }, + "effectiveDateTime": "1940-09-05T19:33:18-04:00", + "issued": "1940-09-05T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/5ad6d4fb-8e6f-45b1-bc32-50e5cdcb1f1d", + "resource": { + "resourceType": "DiagnosticReport", + "id": "5ad6d4fb-8e6f-45b1-bc32-50e5cdcb1f1d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f" + }, + "effectivePeriod": { + "start": "1940-09-05T19:33:18-04:00", + "end": "1940-09-05T20:33:18-04:00" + }, + "issued": "1940-09-05T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDAtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgbmV3Ym9ybiBub24taGlzcGFuaWMgd2hpdGUgbWFsZS4KCiMgU29jaWFsIEhpc3RvcnkKIFBhdGllbnQgaGFzIG5ldmVyIHNtb2tlZCBhbmQgaXMgYW4gYWxjb2hvbGljLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgbWlkZGxlIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEFldG5hLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpObyBBY3RpdmUgTWVkaWNhdGlvbnMuCgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/5debfebb-7007-4653-917c-aaac191e4a7f", + "resource": { + "resourceType": "DocumentReference", + "id": "5debfebb-7007-4653-917c-aaac191e4a7f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:7ebc730b-cf18-f4ae-cba6-19527911a3da" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1940-09-05T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDAtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgbmV3Ym9ybiBub24taGlzcGFuaWMgd2hpdGUgbWFsZS4KCiMgU29jaWFsIEhpc3RvcnkKIFBhdGllbnQgaGFzIG5ldmVyIHNtb2tlZCBhbmQgaXMgYW4gYWxjb2hvbGljLgoKUGF0aWVudCBjb21lcyBmcm9tIGEgbWlkZGxlIHNvY2lvZWNvbm9taWMgYmFja2dyb3VuZC4gUGF0aWVudCBjdXJyZW50bHkgaGFzIEFldG5hLgoKIyBBbGxlcmdpZXMKTm8gS25vd24gQWxsZXJnaWVzLgoKIyBNZWRpY2F0aW9ucwpObyBBY3RpdmUgTWVkaWNhdGlvbnMuCgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f" + } + ], + "period": { + "start": "1940-09-05T19:33:18-04:00", + "end": "1940-09-05T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/5616e478-17c0-4178-bbdb-41a5e88d3d0d", + "resource": { + "resourceType": "Encounter", + "id": "5616e478-17c0-4178-bbdb-41a5e88d3d0d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "773916dc-c964-619f-38d3-4826d4fcd690" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-10-10T18:33:18-05:00", + "end": "1940-10-10T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1940-10-10T18:33:18-05:00", + "end": "1940-10-10T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/db528ae2-7993-4781-95dd-ef25442a6a4f", + "resource": { + "resourceType": "Observation", + "id": "db528ae2-7993-4781-95dd-ef25442a6a4f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5616e478-17c0-4178-bbdb-41a5e88d3d0d" + }, + "effectiveDateTime": "1940-10-10T18:33:18-05:00", + "issued": "1940-10-10T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/71e58db9-5d2d-46a7-aee6-ebacebba5b9d", + "resource": { + "resourceType": "Encounter", + "id": "71e58db9-5d2d-46a7-aee6-ebacebba5b9d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "366f2e9b-fc55-6d5f-c0ae-c464e65e71f1" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-11-09T18:33:18-05:00", + "end": "1940-11-09T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1940-11-09T18:33:18-05:00", + "end": "1940-11-09T18:48:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/4f1240c4-8dd9-4d0e-96dd-fb100788b307", + "resource": { + "resourceType": "Condition", + "id": "4f1240c4-8dd9-4d0e-96dd-fb100788b307", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/71e58db9-5d2d-46a7-aee6-ebacebba5b9d" + }, + "onsetDateTime": "1940-11-09T18:33:18-05:00", + "abatementDateTime": "1940-11-30T18:33:18-05:00", + "recordedDate": "1940-11-09T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/afcc27a0-9f36-4ab0-a274-00d8b6b25bc8", + "resource": { + "resourceType": "Encounter", + "id": "afcc27a0-9f36-4ab0-a274-00d8b6b25bc8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "de820c7c-465a-da48-53a0-263db418c240" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1940-12-12T18:33:18-05:00", + "end": "1940-12-12T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1940-12-12T18:33:18-05:00", + "end": "1940-12-12T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/80975a92-7b69-4c8e-b6d5-1fdc4aae6496", + "resource": { + "resourceType": "Observation", + "id": "80975a92-7b69-4c8e-b6d5-1fdc4aae6496", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/afcc27a0-9f36-4ab0-a274-00d8b6b25bc8" + }, + "effectiveDateTime": "1940-12-12T18:33:18-05:00", + "issued": "1940-12-12T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/91fd8375-7d03-48ae-a70e-619e98fa0463", + "resource": { + "resourceType": "Encounter", + "id": "91fd8375-7d03-48ae-a70e-619e98fa0463", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d0b1c7e1-f42b-0fd8-0de4-e79588ef4b1f" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-02-13T18:33:18-05:00", + "end": "1941-02-13T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1941-02-13T18:33:18-05:00", + "end": "1941-02-13T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1a74bee9-3858-4912-a66a-af081a5f0b2c", + "resource": { + "resourceType": "Observation", + "id": "1a74bee9-3858-4912-a66a-af081a5f0b2c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/91fd8375-7d03-48ae-a70e-619e98fa0463" + }, + "effectiveDateTime": "1941-02-13T18:33:18-05:00", + "issued": "1941-02-13T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/25a96069-773b-44a5-b9d3-75e2f2e0ccfc", + "resource": { + "resourceType": "Procedure", + "id": "25a96069-773b-44a5-b9d3-75e2f2e0ccfc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/91fd8375-7d03-48ae-a70e-619e98fa0463" + }, + "performedDateTime": "1941-02-13T18:33:18-05:00", + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/0568278d-ede6-4396-82b1-3d84c8d8fc6c", + "resource": { + "resourceType": "Encounter", + "id": "0568278d-ede6-4396-82b1-3d84c8d8fc6c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "026cdb5f-c40e-c49e-4f2a-5957e42f707d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-05-15T19:33:18-04:00", + "end": "1941-05-15T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1941-05-15T19:33:18-04:00", + "end": "1941-05-15T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a278b554-5880-4d5d-9c0b-b48c8cc11837", + "resource": { + "resourceType": "Observation", + "id": "a278b554-5880-4d5d-9c0b-b48c8cc11837", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0568278d-ede6-4396-82b1-3d84c8d8fc6c" + }, + "effectiveDateTime": "1941-05-15T19:33:18-04:00", + "issued": "1941-05-15T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/7b4a44b7-3686-4183-b8d9-6c051ab044b6", + "resource": { + "resourceType": "Encounter", + "id": "7b4a44b7-3686-4183-b8d9-6c051ab044b6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "74292a7b-6ab1-b603-746f-55e31a929641" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-08-14T19:33:18-04:00", + "end": "1941-08-14T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1941-08-14T19:33:18-04:00", + "end": "1941-08-14T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d97ad6a8-2e0c-439c-b0fb-5694c4653599", + "resource": { + "resourceType": "Observation", + "id": "d97ad6a8-2e0c-439c-b0fb-5694c4653599", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7b4a44b7-3686-4183-b8d9-6c051ab044b6" + }, + "effectiveDateTime": "1941-08-14T19:33:18-04:00", + "issued": "1941-08-14T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/c2fb077d-892f-4e4f-a45d-49c0fa196d05", + "resource": { + "resourceType": "Encounter", + "id": "c2fb077d-892f-4e4f-a45d-49c0fa196d05", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "fdd79fd3-e456-b882-4992-98bfa5c4078a" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-10-02T18:33:18-05:00", + "end": "1941-10-02T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1941-10-02T18:33:18-05:00", + "end": "1941-10-02T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/a5739208-261d-4cf7-979b-8bb1891f05c8", + "resource": { + "resourceType": "CareTeam", + "id": "a5739208-261d-4cf7-979b-8bb1891f05c8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "active", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c2fb077d-892f-4e4f-a45d-49c0fa196d05" + }, + "period": { + "start": "1941-10-02T18:33:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/f7de8208-7d93-4437-b643-588895f70332", + "resource": { + "resourceType": "CarePlan", + "id": "f7de8208-7d93-4437-b643-588895f70332", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Self-care interventions (procedure).
Activities:
  • Self-care interventions (procedure)
  • Self-care interventions (procedure)
  • Self-care interventions (procedure)
" + }, + "status": "active", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "384758001", + "display": "Self-care interventions (procedure)" + } + ], + "text": "Self-care interventions (procedure)" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c2fb077d-892f-4e4f-a45d-49c0fa196d05" + }, + "period": { + "start": "1941-10-02T18:33:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/a5739208-261d-4cf7-979b-8bb1891f05c8" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "409002", + "display": "Food allergy diet" + } + ], + "text": "Food allergy diet" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "58332002", + "display": "Allergy education" + } + ], + "text": "Allergy education" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "58332002", + "display": "Allergy education" + } + ], + "text": "Allergy education" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/45a8062a-3d8a-41b5-8eb0-c62cb787a647", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "45a8062a-3d8a-41b5-8eb0-c62cb787a647", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "inactive" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "300916003", + "display": "Latex allergy" + } + ], + "text": "Latex allergy" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00", + "recorder": { + "reference": "Patient/355" + }, + "reaction": [ + { + "manifestation": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "271807003", + "display": "skin rash" + } + ], + "text": "skin rash" + } + ] + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/db4529df-eb07-4863-8c6b-a52021ad20cb", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "db4529df-eb07-4863-8c6b-a52021ad20cb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "419474003", + "display": "Allergy to mould" + } + ], + "text": "Allergy to mould" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/f61a03bf-e1a5-4d95-8bb7-5b7cdef04b76", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "f61a03bf-e1a5-4d95-8bb7-5b7cdef04b76", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "232350006", + "display": "House dust mite allergy" + } + ], + "text": "House dust mite allergy" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/8967bc59-2e94-4048-94e9-8f148f8429dd", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "8967bc59-2e94-4048-94e9-8f148f8429dd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "232347008", + "display": "Animal dander allergy" + } + ], + "text": "Animal dander allergy" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/fe1b6196-4894-49d1-aaf0-b300e6fac791", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "fe1b6196-4894-49d1-aaf0-b300e6fac791", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "418689008", + "display": "Allergy to grass pollen" + } + ], + "text": "Allergy to grass pollen" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/04c7e857-d630-4915-a359-75552fc9730c", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "04c7e857-d630-4915-a359-75552fc9730c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "419263009", + "display": "Allergy to tree pollen" + } + ], + "text": "Allergy to tree pollen" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/f59ec773-37a4-46e8-abff-db6bb6ca6123", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "f59ec773-37a4-46e8-abff-db6bb6ca6123", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "inactive" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "714035009", + "display": "Allergy to soya" + } + ], + "text": "Allergy to soya" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/34de543a-ec0c-4b9e-b2d2-4b5072c5dd8e", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "34de543a-ec0c-4b9e-b2d2-4b5072c5dd8e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "300913006", + "display": "Shellfish allergy" + } + ], + "text": "Shellfish allergy" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/52f07d7c-979a-4836-a722-0b53c7d5f896", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "52f07d7c-979a-4836-a722-0b53c7d5f896", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "417532002", + "display": "Allergy to fish" + } + ], + "text": "Allergy to fish" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/AllergyIntolerance/97645508-6ebf-44d6-8758-ac6d4f2c8a0e", + "resource": { + "resourceType": "AllergyIntolerance", + "id": "97645508-6ebf-44d6-8758-ac6d4f2c8a0e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed" + } + ] + }, + "type": "allergy", + "category": [ + "food" + ], + "criticality": "low", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "91935009", + "display": "Allergy to peanuts" + } + ], + "text": "Allergy to peanuts" + }, + "patient": { + "reference": "Patient/355" + }, + "recordedDate": "1941-10-14T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/e4b9ce36-2183-489f-8a7f-b2baf5c3b54b", + "resource": { + "resourceType": "Encounter", + "id": "e4b9ce36-2183-489f-8a7f-b2baf5c3b54b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a3a2cef5-f600-c220-a00a-64751c182d52" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-11-13T18:33:18-05:00", + "end": "1941-11-13T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1941-11-13T18:33:18-05:00", + "end": "1941-11-13T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f0636e0d-a80a-46a8-9efe-0ae51f12038e", + "resource": { + "resourceType": "Observation", + "id": "f0636e0d-a80a-46a8-9efe-0ae51f12038e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/e4b9ce36-2183-489f-8a7f-b2baf5c3b54b" + }, + "effectiveDateTime": "1941-11-13T18:33:18-05:00", + "issued": "1941-11-13T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/166b99c9-93f1-4187-ad57-0465142cf19a", + "resource": { + "resourceType": "Encounter", + "id": "166b99c9-93f1-4187-ad57-0465142cf19a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d66c1f5c-7c0a-8577-35ab-959cc771a1fc" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1941-12-31T18:33:18-05:00", + "end": "1941-12-31T18:49:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1941-12-31T18:33:18-05:00", + "end": "1941-12-31T18:49:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/ddfa852a-376c-4457-bed3-b2d11286477d", + "resource": { + "resourceType": "Condition", + "id": "ddfa852a-376c-4457-bed3-b2d11286477d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/166b99c9-93f1-4187-ad57-0465142cf19a" + }, + "onsetDateTime": "1941-12-31T18:33:18-05:00", + "abatementDateTime": "1942-01-07T18:49:18-05:00", + "recordedDate": "1941-12-31T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/f06dc4f2-e688-4782-9643-81ca4808ff44", + "resource": { + "resourceType": "CareTeam", + "id": "f06dc4f2-e688-4782-9643-81ca4808ff44", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/166b99c9-93f1-4187-ad57-0465142cf19a" + }, + "period": { + "start": "1941-12-31T18:49:18-05:00", + "end": "1942-02-12T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/74b2208a-4b7c-45e4-8c3d-926faaf46ffc", + "resource": { + "resourceType": "CarePlan", + "id": "74b2208a-4b7c-45e4-8c3d-926faaf46ffc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/166b99c9-93f1-4187-ad57-0465142cf19a" + }, + "period": { + "start": "1941-12-31T18:49:18-05:00", + "end": "1942-02-12T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/f06dc4f2-e688-4782-9643-81ca4808ff44" + } + ], + "addresses": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/66af6a8e-9488-4e55-bb05-839910cda7c4", + "resource": { + "resourceType": "Encounter", + "id": "66af6a8e-9488-4e55-bb05-839910cda7c4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "bbc2ea19-d550-d7a4-1d65-52dd9ac45e76" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1942-02-12T19:33:18-04:00", + "end": "1942-02-12T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1942-02-12T19:33:18-04:00", + "end": "1942-02-12T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1252fa2b-062b-45e2-a26d-a3a05118b176", + "resource": { + "resourceType": "Observation", + "id": "1252fa2b-062b-45e2-a26d-a3a05118b176", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/66af6a8e-9488-4e55-bb05-839910cda7c4" + }, + "effectiveDateTime": "1942-02-12T19:33:18-04:00", + "issued": "1942-02-12T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/5c30d319-07e3-4b21-9229-994aff4a34f7", + "resource": { + "resourceType": "Encounter", + "id": "5c30d319-07e3-4b21-9229-994aff4a34f7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "46e8cdc9-c9f9-d544-df75-fa94c3329ece" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1942-03-15T19:33:18-04:00", + "end": "1942-03-15T19:49:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1942-03-15T19:33:18-04:00", + "end": "1942-03-15T19:49:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a", + "resource": { + "resourceType": "Condition", + "id": "fccc7c6a-f09b-42f2-ab7f-e4d282b6294a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5c30d319-07e3-4b21-9229-994aff4a34f7" + }, + "onsetDateTime": "1942-03-15T19:33:18-04:00", + "abatementDateTime": "1942-03-22T19:49:18-04:00", + "recordedDate": "1942-03-15T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/5fcb0194-92ba-4d07-98a7-60cd772731c6", + "resource": { + "resourceType": "CareTeam", + "id": "5fcb0194-92ba-4d07-98a7-60cd772731c6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5c30d319-07e3-4b21-9229-994aff4a34f7" + }, + "period": { + "start": "1942-03-15T19:49:18-04:00", + "end": "1942-08-13T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/7819a00c-6854-4d3e-bfda-65b190fae5a5", + "resource": { + "resourceType": "CarePlan", + "id": "7819a00c-6854-4d3e-bfda-65b190fae5a5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5c30d319-07e3-4b21-9229-994aff4a34f7" + }, + "period": { + "start": "1942-03-15T19:49:18-04:00", + "end": "1942-08-13T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/5fcb0194-92ba-4d07-98a7-60cd772731c6" + } + ], + "addresses": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/84e912fe-1d69-4ccd-aa51-00e257816ffc", + "resource": { + "resourceType": "Encounter", + "id": "84e912fe-1d69-4ccd-aa51-00e257816ffc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "90a74c6c-a0e0-0cb3-157a-e38f35ca66b3" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1942-08-13T19:33:18-04:00", + "end": "1942-08-13T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1942-08-13T19:33:18-04:00", + "end": "1942-08-13T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/001305ed-308f-4f13-b59b-929e69e61086", + "resource": { + "resourceType": "Observation", + "id": "001305ed-308f-4f13-b59b-929e69e61086", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/84e912fe-1d69-4ccd-aa51-00e257816ffc" + }, + "effectiveDateTime": "1942-08-13T19:33:18-04:00", + "issued": "1942-08-13T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/66fba613-d072-4aec-a079-5e598f95b94b", + "resource": { + "resourceType": "Encounter", + "id": "66fba613-d072-4aec-a079-5e598f95b94b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "884a3bce-d0bd-08f3-dd4e-b3f6dbbb720e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1943-02-11T19:33:18-04:00", + "end": "1943-02-11T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1943-02-11T19:33:18-04:00", + "end": "1943-02-11T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1162de29-a6aa-4e7e-a121-9cc1eb737961", + "resource": { + "resourceType": "Observation", + "id": "1162de29-a6aa-4e7e-a121-9cc1eb737961", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/66fba613-d072-4aec-a079-5e598f95b94b" + }, + "effectiveDateTime": "1943-02-11T19:33:18-04:00", + "issued": "1943-02-11T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/70c14704-e5a7-4e24-918e-33eb3aeba547", + "resource": { + "resourceType": "Encounter", + "id": "70c14704-e5a7-4e24-918e-33eb3aeba547", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "b53ebe7a-becd-dc00-24df-59d6b4d201a4" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1943-08-12T19:33:18-04:00", + "end": "1943-08-12T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1943-08-12T19:33:18-04:00", + "end": "1943-08-12T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/138a0d76-12e0-401b-9909-ee5145597748", + "resource": { + "resourceType": "Observation", + "id": "138a0d76-12e0-401b-9909-ee5145597748", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/70c14704-e5a7-4e24-918e-33eb3aeba547" + }, + "effectiveDateTime": "1943-08-12T19:33:18-04:00", + "issued": "1943-08-12T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/7eb74fd6-ee29-4ded-944c-54370a291d6b", + "resource": { + "resourceType": "DiagnosticReport", + "id": "7eb74fd6-ee29-4ded-944c-54370a291d6b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/70c14704-e5a7-4e24-918e-33eb3aeba547" + }, + "effectiveDateTime": "1943-08-12T19:33:18-04:00", + "issued": "1943-08-12T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NDMtMDgtMTIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMiB5ZWFyLW9sZCBub24taGlzcGFuaWMgd2hpdGUgbWFsZS4gUGF0aWVudCBoYXMgYSBoaXN0b3J5IG9mIGFjdXRlIGFsbGVyZ2ljIHJlYWN0aW9uLCBhY3V0ZSBicm9uY2hpdGlzIChkaXNvcmRlciksIG90aXRpcyBtZWRpYSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YSwgYWxsZXJneSB0byBwZWFudXRzLCBzaGVsbGZpc2ggYWxsZXJneSwgYWxsZXJneSB0byBncmFzcyBwb2xsZW4sIGhvdXNlIGR1c3QgbWl0ZSBhbGxlcmd5LCBhbGxlcmd5IHRvIHRyZWUgcG9sbGVuLCBhbGxlcmd5IHRvIGZpc2gsIGFsbGVyZ3kgdG8gbW91bGQsIGRhbmRlciAoYW5pbWFsKSBhbGxlcmd5CgojIE1lZGljYXRpb25zCmFjZXRhbWlub3BoZW4gMzI1IG1nIG9yYWwgdGFibGV0OyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "resource": { + "resourceType": "Location", + "id": "40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-location" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "ecd8399c-f381-beae-9a1c-afec249d4632" + } + ], + "status": "active", + "name": "PCP170967", + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "PC", + "display": "Primary care clinic" + } + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "413-221-0546" + } + ], + "address": { + "line": [ + "1111 ELM ST" + ], + "city": "WEST SPRINGFIELD", + "state": "MA", + "postalCode": "01089-1540", + "country": "US" + }, + "position": { + "longitude": -72.649734, + "latitude": 42.125451 + }, + "managingOrganization": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Organization/06843b0a-3101-4077-884f-63440ee8d429", + "resource": { + "resourceType": "Organization", + "id": "06843b0a-3101-4077-884f-63440ee8d429", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "c7459800-e42b-3144-a934-59585c9eacff" + } + ], + "active": true, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/organization-type", + "code": "prov", + "display": "Healthcare Provider" + } + ], + "text": "Healthcare Provider" + } + ], + "name": "PCP170967", + "telecom": [ + { + "system": "phone", + "value": "413-221-0546" + } + ], + "address": [ + { + "line": [ + "1111 ELM ST" + ], + "city": "WEST SPRINGFIELD", + "state": "MA", + "postalCode": "01089-1540", + "country": "US" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "resource": { + "resourceType": "Practitioner", + "id": "7ed17db9-db48-4d5b-9699-e298eac89dfe", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner" + ] + }, + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "9999944819" + } + ], + "active": true, + "name": [ + { + "family": "Christiansen251", + "given": [ + "Blossom971" + ], + "prefix": [ + "Dr." + ] + } + ], + "telecom": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-direct", + "valueBoolean": true + } + ], + "system": "email", + "value": "Blossom971.Christiansen251@example.com", + "use": "work" + } + ], + "address": [ + { + "line": [ + "1111 ELM ST" + ], + "city": "WEST SPRINGFIELD", + "state": "MA", + "postalCode": "01089-1540", + "country": "US" + } + ], + "gender": "female" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "resource": { + "resourceType": "Location", + "id": "24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-location" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "70b2a52f-71ba-6ffe-9050-5daee15f4d88" + } + ], + "status": "active", + "name": "HOLYOKE MEDICAL CENTER", + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "HOSP", + "display": "Hospital" + } + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "4135342500" + } + ], + "address": { + "line": [ + "575 BEECH STREET" + ], + "city": "HOLYOKE", + "state": "MA", + "postalCode": "01040", + "country": "US" + }, + "position": { + "longitude": -72.642448, + "latitude": 42.211656 + }, + "managingOrganization": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "resource": { + "resourceType": "Organization", + "id": "22b35b4e-0731-4e8c-8327-21365b331f4b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "5d4b9df1-93ae-3bc9-b680-03249990e558" + } + ], + "active": true, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/organization-type", + "code": "prov", + "display": "Healthcare Provider" + } + ], + "text": "Healthcare Provider" + } + ], + "name": "HOLYOKE MEDICAL CENTER", + "telecom": [ + { + "system": "phone", + "value": "4135342500" + } + ], + "address": [ + { + "line": [ + "575 BEECH STREET" + ], + "city": "HOLYOKE", + "state": "MA", + "postalCode": "01040", + "country": "US" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "resource": { + "resourceType": "Practitioner", + "id": "3b378eb1-6cee-46dc-8f22-3fa938943a61", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "eb10a604-ac01-3975-ad58-4c34606af456" + }, + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "1245319599" + } + ], + "active": true, + "name": [ + { + "family": "Kilback373", + "given": [ + "Patricia625" + ], + "prefix": [ + "Dr." + ] + } + ], + "telecom": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-direct", + "valueBoolean": true + } + ], + "system": "email", + "value": "Patricia625.Kilback373@example.com", + "use": "work" + } + ], + "address": [ + { + "line": [ + "575 BEECH STREET" + ], + "city": "HOLYOKE", + "state": "MA", + "postalCode": "01040", + "country": "US" + } + ], + "gender": "female" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/0f688432-d8d6-486e-a17c-0a4b6c81b4ba", + "resource": { + "resourceType": "DocumentReference", + "id": "0f688432-d8d6-486e-a17c-0a4b6c81b4ba", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:a6be3a70-e5c6-9838-b82e-c3576d870f55" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1943-08-12T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NDMtMDgtMTIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMiB5ZWFyLW9sZCBub24taGlzcGFuaWMgd2hpdGUgbWFsZS4gUGF0aWVudCBoYXMgYSBoaXN0b3J5IG9mIGFjdXRlIGFsbGVyZ2ljIHJlYWN0aW9uLCBhY3V0ZSBicm9uY2hpdGlzIChkaXNvcmRlciksIG90aXRpcyBtZWRpYSwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuCgojIFNvY2lhbCBIaXN0b3J5CiBQYXRpZW50IGhhcyBuZXZlciBzbW9rZWQgYW5kIGlzIGFuIGFsY29ob2xpYy4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YSwgYWxsZXJneSB0byBwZWFudXRzLCBzaGVsbGZpc2ggYWxsZXJneSwgYWxsZXJneSB0byBncmFzcyBwb2xsZW4sIGhvdXNlIGR1c3QgbWl0ZSBhbGxlcmd5LCBhbGxlcmd5IHRvIHRyZWUgcG9sbGVuLCBhbGxlcmd5IHRvIGZpc2gsIGFsbGVyZ3kgdG8gbW91bGQsIGRhbmRlciAoYW5pbWFsKSBhbGxlcmd5CgojIE1lZGljYXRpb25zCmFjZXRhbWlub3BoZW4gMzI1IG1nIG9yYWwgdGFibGV0OyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/70c14704-e5a7-4e24-918e-33eb3aeba547" + } + ], + "period": { + "start": "1943-08-12T19:33:18-04:00", + "end": "1943-08-12T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f8d53c2d-da4b-4c83-a7c6-fea600515106", + "resource": { + "resourceType": "Encounter", + "id": "f8d53c2d-da4b-4c83-a7c6-fea600515106", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "7b8b502d-2f00-f1da-3ada-9b4ee98476ba" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1944-02-10T19:33:18-04:00", + "end": "1944-02-10T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1944-02-10T19:33:18-04:00", + "end": "1944-02-10T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/565d89b2-dbea-40b5-a357-960169e0d181", + "resource": { + "resourceType": "Observation", + "id": "565d89b2-dbea-40b5-a357-960169e0d181", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/pediatric-bmi-for-age" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "59576-9", + "display": "Body mass index (BMI) [Percentile] Per age and sex" + } + ], + "text": "Body mass index (BMI) [Percentile] Per age and sex" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f8d53c2d-da4b-4c83-a7c6-fea600515106" + }, + "effectiveDateTime": "1944-02-10T19:33:18-04:00", + "issued": "1944-02-10T19:33:18.715-04:00", + "valueQuantity": { + "value": 34.705, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f5afcba9-a214-4813-a97e-160cf31ffad7", + "resource": { + "resourceType": "Observation", + "id": "f5afcba9-a214-4813-a97e-160cf31ffad7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f8d53c2d-da4b-4c83-a7c6-fea600515106" + }, + "effectiveDateTime": "1944-02-10T19:33:18-04:00", + "issued": "1944-02-10T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/cea368ca-1784-4cd9-8ec8-c22a299cb8ff", + "resource": { + "resourceType": "Encounter", + "id": "cea368ca-1784-4cd9-8ec8-c22a299cb8ff", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "3865e1d8-68d2-c77c-1a43-e036490362b6" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1944-08-10T19:33:18-04:00", + "end": "1944-08-10T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1944-08-10T19:33:18-04:00", + "end": "1944-08-10T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a89474e7-5820-4956-9571-356576530f7d", + "resource": { + "resourceType": "Observation", + "id": "a89474e7-5820-4956-9571-356576530f7d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/cea368ca-1784-4cd9-8ec8-c22a299cb8ff" + }, + "effectiveDateTime": "1944-08-10T19:33:18-04:00", + "issued": "1944-08-10T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/59700f1c-d393-445d-b4a5-a81bfe1e099c", + "resource": { + "resourceType": "Encounter", + "id": "59700f1c-d393-445d-b4a5-a81bfe1e099c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "e781bfa7-53c5-9a0e-ee06-ca7aaba36553" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1944-09-11T19:33:18-04:00", + "end": "1944-09-11T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1944-09-11T19:33:18-04:00", + "end": "1944-09-11T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "233678006", + "display": "Childhood asthma" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522", + "resource": { + "resourceType": "Condition", + "id": "e42aa37b-4129-4ecc-a7a3-f4b02380b522", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "233678006", + "display": "Childhood asthma" + } + ], + "text": "Childhood asthma" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/59700f1c-d393-445d-b4a5-a81bfe1e099c" + }, + "onsetDateTime": "1944-09-11T19:33:18-04:00", + "abatementDateTime": "1959-12-22T18:33:18-05:00", + "recordedDate": "1944-09-11T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/b972e87d-73cd-41bd-ae90-96195eb23cc2", + "resource": { + "resourceType": "MedicationRequest", + "id": "b972e87d-73cd-41bd-ae90-96195eb23cc2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "895994", + "display": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/59700f1c-d393-445d-b4a5-a81bfe1e099c" + }, + "authoredOn": "1944-09-11T19:33:18-04:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/a5dbcb07-2e86-4289-9ff7-e49974e534d7", + "resource": { + "resourceType": "CareTeam", + "id": "a5dbcb07-2e86-4289-9ff7-e49974e534d7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "active", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/59700f1c-d393-445d-b4a5-a81bfe1e099c" + }, + "period": { + "start": "1944-09-11T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "233678006", + "display": "Childhood asthma" + } + ], + "text": "Childhood asthma" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/f44018f4-7377-47b6-a315-748c35e128ff", + "resource": { + "resourceType": "CarePlan", + "id": "f44018f4-7377-47b6-a315-748c35e128ff", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Asthma self management.
Activities:
  • Asthma self management
  • Asthma self management
  • Asthma self management

Care plan is meant to treat Childhood asthma.
" + }, + "status": "active", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "699728000", + "display": "Asthma self management" + } + ], + "text": "Asthma self management" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/59700f1c-d393-445d-b4a5-a81bfe1e099c" + }, + "period": { + "start": "1944-09-11T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/a5dbcb07-2e86-4289-9ff7-e49974e534d7" + } + ], + "addresses": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "710818004", + "display": "Inhaled steroid therapy" + } + ], + "text": "Inhaled steroid therapy" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "708409001", + "display": "Home nebulizer therapy" + } + ], + "text": "Home nebulizer therapy" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "229298005", + "display": "Breathing control" + } + ], + "text": "Breathing control" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/01261faf-a14f-4f2a-9050-33fd94a3a30a", + "resource": { + "resourceType": "Encounter", + "id": "01261faf-a14f-4f2a-9050-33fd94a3a30a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "9b57deea-effe-239d-4b5e-29eb7f7511f0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1945-08-16T19:33:18-04:00", + "end": "1945-08-16T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1945-08-16T19:33:18-04:00", + "end": "1945-08-16T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b752dd5e-cebe-46c4-a09a-503c9dbbf099", + "resource": { + "resourceType": "Observation", + "id": "b752dd5e-cebe-46c4-a09a-503c9dbbf099", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/01261faf-a14f-4f2a-9050-33fd94a3a30a" + }, + "effectiveDateTime": "1945-08-16T19:33:18-04:00", + "issued": "1945-08-16T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/d4d751c7-744a-4faa-8fc6-f2c351381403", + "resource": { + "resourceType": "Encounter", + "id": "d4d751c7-744a-4faa-8fc6-f2c351381403", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "afc03652-8ff0-89a0-0039-d4c890897b7d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1946-08-22T19:33:18-04:00", + "end": "1946-08-22T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1946-08-22T19:33:18-04:00", + "end": "1946-08-22T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/5700858f-dd25-4b2a-9a77-16817cce71ee", + "resource": { + "resourceType": "Observation", + "id": "5700858f-dd25-4b2a-9a77-16817cce71ee", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/d4d751c7-744a-4faa-8fc6-f2c351381403" + }, + "effectiveDateTime": "1946-08-22T19:33:18-04:00", + "issued": "1946-08-22T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1427667f-baeb-4859-ab52-0a683cb2abcb", + "resource": { + "resourceType": "Encounter", + "id": "1427667f-baeb-4859-ab52-0a683cb2abcb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "b9a2008e-641d-5d96-ead7-bff6321df14f" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "702927004", + "display": "Urgent care clinic" + } + ], + "text": "Urgent care clinic" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1946-08-29T19:33:18-04:00", + "end": "1946-08-29T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "display": "Dr. Sammie902 DuBuque211" + } + } + ], + "period": { + "start": "1946-08-29T19:33:18-04:00", + "end": "1946-08-29T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + } + ], + "serviceProvider": { + "reference": "Organization/b293761b-00ce-4fee-b608-6c5eb0f45447", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/dc284d89-d6a2-4ecf-95ce-52b1296b6014", + "resource": { + "resourceType": "Immunization", + "id": "dc284d89-d6a2-4ecf-95ce-52b1296b6014", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "not-done", + "statusReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", + "code": "OSTOCK", + "display": "product out of stock" + } + ], + "text": "product out of stock" + }, + "vaccineCode": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1427667f-baeb-4859-ab52-0a683cb2abcb" + }, + "occurrenceString": "1946-08-29T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + }, + "lotNumber": "AAJN11K", + "performer": [ + { + "actor": { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "display": "Dr. Sammie902 DuBuque211" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1225800d-4790-46f8-b93c-0b55e0c74b15", + "resource": { + "resourceType": "Encounter", + "id": "1225800d-4790-46f8-b93c-0b55e0c74b15", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "1f242d93-4777-54a9-542f-4f1bbda0d798" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1946-08-24T19:33:18-04:00", + "end": "1946-08-24T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1946-08-24T19:33:18-04:00", + "end": "1946-08-24T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5", + "resource": { + "resourceType": "Condition", + "id": "5397e8fe-8961-4332-aed7-6b37c45b3ea5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1225800d-4790-46f8-b93c-0b55e0c74b15" + }, + "onsetDateTime": "1946-08-24T19:33:18-04:00", + "abatementDateTime": "1946-09-07T19:42:18-04:00", + "recordedDate": "1946-08-24T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/1edbb13a-2ddd-4c6d-916b-2099393c2d6e", + "resource": { + "resourceType": "CareTeam", + "id": "1edbb13a-2ddd-4c6d-916b-2099393c2d6e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1225800d-4790-46f8-b93c-0b55e0c74b15" + }, + "period": { + "start": "1946-08-24T19:42:18-04:00", + "end": "1947-08-28T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/99b842d7-1053-40c4-81ba-c854786cce7a", + "resource": { + "resourceType": "CarePlan", + "id": "99b842d7-1053-40c4-81ba-c854786cce7a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1225800d-4790-46f8-b93c-0b55e0c74b15" + }, + "period": { + "start": "1946-08-24T19:42:18-04:00", + "end": "1947-08-28T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/1edbb13a-2ddd-4c6d-916b-2099393c2d6e" + } + ], + "addresses": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/65db610f-2a75-4323-bcf0-1186b3cbc7c5", + "resource": { + "resourceType": "Encounter", + "id": "65db610f-2a75-4323-bcf0-1186b3cbc7c5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "873e1716-041d-ad48-109b-6cce45687436" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1947-08-28T19:33:18-04:00", + "end": "1947-08-28T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1947-08-28T19:33:18-04:00", + "end": "1947-08-28T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d242e2a0-dbbf-45c2-ba9a-019041430aef", + "resource": { + "resourceType": "Observation", + "id": "d242e2a0-dbbf-45c2-ba9a-019041430aef", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/65db610f-2a75-4323-bcf0-1186b3cbc7c5" + }, + "effectiveDateTime": "1947-08-28T19:33:18-04:00", + "issued": "1947-08-28T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/77b8df32-3440-40fb-9ed1-c3afb4bfe29b", + "resource": { + "resourceType": "Encounter", + "id": "77b8df32-3440-40fb-9ed1-c3afb4bfe29b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d6de618f-9f4a-d9b3-46e1-7bab2bb6f146" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1947-11-30T18:33:18-05:00", + "end": "1947-11-30T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1947-11-30T18:33:18-05:00", + "end": "1947-11-30T18:48:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/0b39f529-ab4b-4479-a2c1-5b764caf764f", + "resource": { + "resourceType": "Condition", + "id": "0b39f529-ab4b-4479-a2c1-5b764caf764f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/77b8df32-3440-40fb-9ed1-c3afb4bfe29b" + }, + "onsetDateTime": "1947-11-30T18:33:18-05:00", + "abatementDateTime": "1947-12-07T18:33:18-05:00", + "recordedDate": "1947-11-30T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/da4aab3a-7e5c-4a53-ac8b-fca65b21b544", + "resource": { + "resourceType": "Encounter", + "id": "da4aab3a-7e5c-4a53-ac8b-fca65b21b544", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "5776f895-bad8-7d17-c239-2b9bce8ccfe2" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ], + "text": "Encounter for check up (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1947-12-11T18:33:18-05:00", + "end": "1947-12-11T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1947-12-11T18:33:18-05:00", + "end": "1947-12-11T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d2c74470-dda3-4b7f-92ea-50745c554ee5", + "resource": { + "resourceType": "Observation", + "id": "d2c74470-dda3-4b7f-92ea-50745c554ee5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/da4aab3a-7e5c-4a53-ac8b-fca65b21b544" + }, + "effectiveDateTime": "1947-12-11T18:33:18-05:00", + "issued": "1947-12-11T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/7346f3bf-90f0-45f1-9325-9a00a02d05f0", + "resource": { + "resourceType": "MedicationRequest", + "id": "7346f3bf-90f0-45f1-9325-9a00a02d05f0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/da4aab3a-7e5c-4a53-ac8b-fca65b21b544" + }, + "authoredOn": "1947-12-11T18:33:18-05:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true, + "route": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "447694001", + "display": "Respiratory tract route" + } + ] + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/2a84191a-20d2-4495-b423-7f045499d6ee", + "resource": { + "resourceType": "Encounter", + "id": "2a84191a-20d2-4495-b423-7f045499d6ee", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a4c16e57-4373-b4e1-bda8-02844ded0038" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1948-09-02T19:33:18-04:00", + "end": "1948-09-02T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1948-09-02T19:33:18-04:00", + "end": "1948-09-02T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/8f022d51-4c2f-4f1f-b2c6-2f0b4273e183", + "resource": { + "resourceType": "Observation", + "id": "8f022d51-4c2f-4f1f-b2c6-2f0b4273e183", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2a84191a-20d2-4495-b423-7f045499d6ee" + }, + "effectiveDateTime": "1948-09-02T19:33:18-04:00", + "issued": "1948-09-02T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/68d2ea4f-2e3a-4ae4-bb1e-db100681aafc", + "resource": { + "resourceType": "Encounter", + "id": "68d2ea4f-2e3a-4ae4-bb1e-db100681aafc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "e1a9d69b-fa77-38bd-7580-06da0ddf25c0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1949-09-08T19:33:18-04:00", + "end": "1949-09-08T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1949-09-08T19:33:18-04:00", + "end": "1949-09-08T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/8725cbdc-771d-477f-838a-0c62fb8af9e6", + "resource": { + "resourceType": "Observation", + "id": "8725cbdc-771d-477f-838a-0c62fb8af9e6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/68d2ea4f-2e3a-4ae4-bb1e-db100681aafc" + }, + "effectiveDateTime": "1949-09-08T19:33:18-04:00", + "issued": "1949-09-08T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/0015facf-cf04-406a-a161-3bb3d30680ae", + "resource": { + "resourceType": "Encounter", + "id": "0015facf-cf04-406a-a161-3bb3d30680ae", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "8fe8440d-1cbc-e24f-cb51-594938db625a" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1950-09-14T19:33:18-04:00", + "end": "1950-09-14T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1950-09-14T19:33:18-04:00", + "end": "1950-09-14T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/7ec6ce0b-503f-4ff0-a124-828fa34fac4d", + "resource": { + "resourceType": "Observation", + "id": "7ec6ce0b-503f-4ff0-a124-828fa34fac4d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0015facf-cf04-406a-a161-3bb3d30680ae" + }, + "effectiveDateTime": "1950-09-14T19:33:18-04:00", + "issued": "1950-09-14T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/048e4913-82ce-4f84-b1e2-4bdb7bd449d9", + "resource": { + "resourceType": "Encounter", + "id": "048e4913-82ce-4f84-b1e2-4bdb7bd449d9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "2ba769b4-3a74-8f31-9d45-22c8466e98d8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1951-09-20T19:33:18-04:00", + "end": "1951-09-20T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1951-09-20T19:33:18-04:00", + "end": "1951-09-20T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/5f59e713-f0cb-45c2-82ea-ad87392fea2f", + "resource": { + "resourceType": "Observation", + "id": "5f59e713-f0cb-45c2-82ea-ad87392fea2f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/048e4913-82ce-4f84-b1e2-4bdb7bd449d9" + }, + "effectiveDateTime": "1951-09-20T19:33:18-04:00", + "issued": "1951-09-20T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3", + "resource": { + "resourceType": "Encounter", + "id": "c236dccc-5a05-40b4-91e6-28850c0a66e3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "7c13ad71-94b0-83e4-db57-1b466f8140c0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1952-09-25T19:33:18-04:00", + "end": "1952-09-25T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1952-09-25T19:33:18-04:00", + "end": "1952-09-25T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f9730f3b-6828-4f67-88bc-4c8ba3a7a961", + "resource": { + "resourceType": "Observation", + "id": "f9730f3b-6828-4f67-88bc-4c8ba3a7a961", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bodyheight", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8302-2", + "display": "Body Height" + } + ], + "text": "Body Height" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3" + }, + "effectiveDateTime": "1952-09-25T19:33:18-04:00", + "issued": "1952-09-25T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "valueQuantity": { + "value": 160, + "unit": "cm", + "system": "http://unitsofmeasure.org", + "code": "cm" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0d2b9c50-02e8-4ae0-95d3-1929d7bebb79", + "resource": { + "resourceType": "Observation", + "id": "0d2b9c50-02e8-4ae0-95d3-1929d7bebb79", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3" + }, + "effectiveDateTime": "1952-09-25T19:33:18-04:00", + "issued": "1952-09-25T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/c7aac051-202d-455c-8b21-1492da260d5f", + "resource": { + "resourceType": "Procedure", + "id": "c7aac051-202d-455c-8b21-1492da260d5f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3" + }, + "performedPeriod": { + "start": "1952-09-25T19:33:18-04:00", + "end": "1952-09-25T19:48:18-04:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/5d706391-59a2-43fe-b9f9-4361e2385e4a", + "resource": { + "resourceType": "Immunization", + "id": "5d706391-59a2-43fe-b9f9-4361e2385e4a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3" + }, + "occurrenceDateTime": "1952-09-25T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/e9e439a5-b4c7-4b6e-8531-45d42b7a9662", + "resource": { + "resourceType": "Encounter", + "id": "e9e439a5-b4c7-4b6e-8531-45d42b7a9662", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "9cba6824-c2df-4cb1-ef3d-9cb6969af5b6" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1953-02-28T18:33:18-05:00", + "end": "1953-02-28T18:53:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1953-02-28T18:33:18-05:00", + "end": "1953-02-28T18:53:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3", + "resource": { + "resourceType": "Condition", + "id": "d00138f3-299e-4f2e-8d67-1bbb8bda72c3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/e9e439a5-b4c7-4b6e-8531-45d42b7a9662" + }, + "onsetDateTime": "1953-02-28T18:33:18-05:00", + "abatementDateTime": "1953-03-14T18:53:18-05:00", + "recordedDate": "1953-02-28T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/cd805598-da4c-4d98-81ea-085e0187822c", + "resource": { + "resourceType": "MedicationRequest", + "id": "cd805598-da4c-4d98-81ea-085e0187822c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313782", + "display": "Acetaminophen 325 MG Oral Tablet" + } + ], + "text": "Acetaminophen 325 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/e9e439a5-b4c7-4b6e-8531-45d42b7a9662" + }, + "authoredOn": "1953-02-28T18:53:18-05:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "reasonReference": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + }, + { + "reference": "Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/429fc800-ee28-4aed-9f50-270d28ea0feb", + "resource": { + "resourceType": "CareTeam", + "id": "429fc800-ee28-4aed-9f50-270d28ea0feb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/e9e439a5-b4c7-4b6e-8531-45d42b7a9662" + }, + "period": { + "start": "1953-02-28T18:53:18-05:00", + "end": "1953-10-01T18:33:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/af16cb99-b775-4030-9de0-3a75210f4095", + "resource": { + "resourceType": "CarePlan", + "id": "af16cb99-b775-4030-9de0-3a75210f4095", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/e9e439a5-b4c7-4b6e-8531-45d42b7a9662" + }, + "period": { + "start": "1953-02-28T18:53:18-05:00", + "end": "1953-10-01T18:33:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/429fc800-ee28-4aed-9f50-270d28ea0feb" + } + ], + "addresses": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + }, + { + "reference": "Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/34f30fab-fc20-4f17-aff3-62d0862e082d", + "resource": { + "resourceType": "Encounter", + "id": "34f30fab-fc20-4f17-aff3-62d0862e082d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d73df183-5a3f-ad78-a778-fceefa351817" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "702927004", + "display": "Urgent care clinic" + } + ], + "text": "Urgent care clinic" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1953-03-12T18:33:18-05:00", + "end": "1953-03-12T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "display": "Dr. Sammie902 DuBuque211" + } + } + ], + "period": { + "start": "1953-03-12T18:33:18-05:00", + "end": "1953-03-12T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + } + ], + "serviceProvider": { + "reference": "Organization/b293761b-00ce-4fee-b608-6c5eb0f45447", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/f1c7d7d3-a64e-476a-a248-bec5523dad97", + "resource": { + "resourceType": "Immunization", + "id": "f1c7d7d3-a64e-476a-a248-bec5523dad97", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/34f30fab-fc20-4f17-aff3-62d0862e082d" + }, + "occurrenceDateTime": "1953-03-12T18:33:18-05:00", + "primarySource": true, + "location": { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/98b7fd17-6af7-4a3d-80e2-4bf02e2d9035", + "resource": { + "resourceType": "Encounter", + "id": "98b7fd17-6af7-4a3d-80e2-4bf02e2d9035", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "3afbd06a-d60b-6a38-8293-abebc96dadf2" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1953-10-01T18:33:18-05:00", + "end": "1953-10-01T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1953-10-01T18:33:18-05:00", + "end": "1953-10-01T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/341ad73e-a69d-4ec0-ac75-c0a7bb42afa4", + "resource": { + "resourceType": "Observation", + "id": "341ad73e-a69d-4ec0-ac75-c0a7bb42afa4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/98b7fd17-6af7-4a3d-80e2-4bf02e2d9035" + }, + "effectiveDateTime": "1953-10-01T18:33:18-05:00", + "issued": "1953-10-01T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/bc0d4a51-dea3-4f8e-800e-e8c625b40c02", + "resource": { + "resourceType": "Encounter", + "id": "bc0d4a51-dea3-4f8e-800e-e8c625b40c02", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f5820747-6360-42f2-f347-977fb3f7ab5c" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1954-10-07T18:33:18-05:00", + "end": "1954-10-07T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1954-10-07T18:33:18-05:00", + "end": "1954-10-07T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/894d121f-d3b6-4de1-9e08-2c8b19e8ea13", + "resource": { + "resourceType": "Observation", + "id": "894d121f-d3b6-4de1-9e08-2c8b19e8ea13", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/bc0d4a51-dea3-4f8e-800e-e8c625b40c02" + }, + "effectiveDateTime": "1954-10-07T18:33:18-05:00", + "issued": "1954-10-07T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/7e7e0cea-020a-40df-92c5-8e46bb33b0ae", + "resource": { + "resourceType": "MedicationRequest", + "id": "7e7e0cea-020a-40df-92c5-8e46bb33b0ae", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/bc0d4a51-dea3-4f8e-800e-e8c625b40c02" + }, + "authoredOn": "1954-10-07T18:33:18-05:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/7ecbe928-99cb-40ff-bad9-78a60cfb56c0", + "resource": { + "resourceType": "Immunization", + "id": "7ecbe928-99cb-40ff-bad9-78a60cfb56c0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/bc0d4a51-dea3-4f8e-800e-e8c625b40c02" + }, + "occurrenceDateTime": "1954-10-07T18:33:18-05:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/fd8bbc8e-b5a3-4b04-b43e-e8ad7b0c5b0c", + "resource": { + "resourceType": "Encounter", + "id": "fd8bbc8e-b5a3-4b04-b43e-e8ad7b0c5b0c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "bc1fb6c1-7877-dfa8-6048-bbf2444de21e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "50849002", + "display": "Emergency room admission (procedure)" + } + ], + "text": "Emergency room admission (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1955-02-19T18:33:18-05:00", + "end": "1955-02-19T19:33:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1955-02-19T18:33:18-05:00", + "end": "1955-02-19T19:33:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/d35cb424-79b4-44b6-86f7-b476b493b8b3", + "resource": { + "resourceType": "Condition", + "id": "d35cb424-79b4-44b6-86f7-b476b493b8b3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "44465007", + "display": "Sprain of ankle" + } + ], + "text": "Sprain of ankle" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/fd8bbc8e-b5a3-4b04-b43e-e8ad7b0c5b0c" + }, + "onsetDateTime": "1955-02-19T18:33:18-05:00", + "abatementDateTime": "1955-03-19T18:33:18-05:00", + "recordedDate": "1955-02-19T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/c9ea760f-7dc4-47ec-aa19-0888e657815a", + "resource": { + "resourceType": "CareTeam", + "id": "c9ea760f-7dc4-47ec-aa19-0888e657815a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/fd8bbc8e-b5a3-4b04-b43e-e8ad7b0c5b0c" + }, + "period": { + "start": "1955-02-19T18:33:18-05:00", + "end": "1955-03-19T18:33:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "44465007", + "display": "Sprain of ankle" + } + ], + "text": "Sprain of ankle" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/b830842d-a740-419b-826c-1be3da6219af", + "resource": { + "resourceType": "CarePlan", + "id": "b830842d-a740-419b-826c-1be3da6219af", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Physical therapy procedure.
Activities:
  • Physical therapy procedure
  • Physical therapy procedure

Care plan is meant to treat Sprain of ankle.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "91251008", + "display": "Physical therapy procedure" + } + ], + "text": "Physical therapy procedure" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/fd8bbc8e-b5a3-4b04-b43e-e8ad7b0c5b0c" + }, + "period": { + "start": "1955-02-19T18:33:18-05:00", + "end": "1955-03-19T18:33:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/c9ea760f-7dc4-47ec-aa19-0888e657815a" + } + ], + "addresses": [ + { + "reference": "Condition/d35cb424-79b4-44b6-86f7-b476b493b8b3" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "229586001", + "display": "Rest, ice, compression and elevation treatment programme" + } + ], + "text": "Rest, ice, compression and elevation treatment programme" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "229070002", + "display": "Stretching exercises" + } + ], + "text": "Stretching exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/32fbffd9-d44c-4d9e-b48c-40f55c764217", + "resource": { + "resourceType": "Encounter", + "id": "32fbffd9-d44c-4d9e-b48c-40f55c764217", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "5e767439-3b5d-2d0f-7559-15f2b0fe3baf" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1955-10-13T19:33:18-04:00", + "end": "1955-10-13T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1955-10-13T19:33:18-04:00", + "end": "1955-10-13T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/09f1a427-c7f9-4473-8442-04749d414f2f", + "resource": { + "resourceType": "Observation", + "id": "09f1a427-c7f9-4473-8442-04749d414f2f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/32fbffd9-d44c-4d9e-b48c-40f55c764217" + }, + "effectiveDateTime": "1955-10-13T19:33:18-04:00", + "issued": "1955-10-13T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/7b066268-77a1-42a0-86ee-60a82dec47ac", + "resource": { + "resourceType": "Immunization", + "id": "7b066268-77a1-42a0-86ee-60a82dec47ac", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/32fbffd9-d44c-4d9e-b48c-40f55c764217" + }, + "occurrenceDateTime": "1955-10-13T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/2b04813c-2d46-41a4-a913-f28d54f87735", + "resource": { + "resourceType": "Encounter", + "id": "2b04813c-2d46-41a4-a913-f28d54f87735", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "6866185c-392e-0f18-7518-88298b99bdbf" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "50849002", + "display": "Emergency room admission (procedure)" + } + ], + "text": "Emergency room admission (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1956-03-13T18:33:18-05:00", + "end": "1956-03-13T19:33:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1956-03-13T18:33:18-05:00", + "end": "1956-03-13T19:33:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/112fe972-0e68-4f66-8df9-ade60179a122", + "resource": { + "resourceType": "Condition", + "id": "112fe972-0e68-4f66-8df9-ade60179a122", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "16114001", + "display": "Fracture of ankle" + } + ], + "text": "Fracture of ankle" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2b04813c-2d46-41a4-a913-f28d54f87735" + }, + "onsetDateTime": "1956-03-13T18:33:18-05:00", + "abatementDateTime": "1956-04-12T19:13:18-05:00", + "recordedDate": "1956-03-13T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/33fb3c33-48b3-44b4-98e7-9823c2fd6d5f", + "resource": { + "resourceType": "CareTeam", + "id": "33fb3c33-48b3-44b4-98e7-9823c2fd6d5f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2b04813c-2d46-41a4-a913-f28d54f87735" + }, + "period": { + "start": "1956-03-13T19:13:18-05:00", + "end": "1956-04-12T19:13:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "16114001", + "display": "Fracture of ankle" + } + ], + "text": "Fracture of ankle" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/fea8d11a-7617-4f2f-9abb-59427cf8c591", + "resource": { + "resourceType": "CarePlan", + "id": "fea8d11a-7617-4f2f-9abb-59427cf8c591", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Fracture care.
Activities:
  • Fracture care
  • Fracture care

Care plan is meant to treat Fracture of ankle.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "385691007", + "display": "Fracture care" + } + ], + "text": "Fracture care" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2b04813c-2d46-41a4-a913-f28d54f87735" + }, + "period": { + "start": "1956-03-13T19:13:18-05:00", + "end": "1956-04-12T19:13:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/33fb3c33-48b3-44b4-98e7-9823c2fd6d5f" + } + ], + "addresses": [ + { + "reference": "Condition/112fe972-0e68-4f66-8df9-ade60179a122" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "183051005", + "display": "Recommendation to rest" + } + ], + "text": "Recommendation to rest" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "408580007", + "display": "Physical activity target light exercise" + } + ], + "text": "Physical activity target light exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/4bc713a2-cf16-489a-b686-c0f4056c4ab7", + "resource": { + "resourceType": "Encounter", + "id": "4bc713a2-cf16-489a-b686-c0f4056c4ab7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "b9111383-504b-3ccb-4856-5037dc72001f" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1956-10-18T19:33:18-04:00", + "end": "1956-10-18T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1956-10-18T19:33:18-04:00", + "end": "1956-10-18T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/759b766f-63dc-43c7-ac7c-57b08893f8ca", + "resource": { + "resourceType": "Observation", + "id": "759b766f-63dc-43c7-ac7c-57b08893f8ca", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4bc713a2-cf16-489a-b686-c0f4056c4ab7" + }, + "effectiveDateTime": "1956-10-18T19:33:18-04:00", + "issued": "1956-10-18T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/769ed6ea-5f01-4c3a-af57-5791f0da7161", + "resource": { + "resourceType": "Encounter", + "id": "769ed6ea-5f01-4c3a-af57-5791f0da7161", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "061392cf-de92-6873-a410-52c062aea490" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410620009", + "display": "Well child visit (procedure)" + } + ], + "text": "Well child visit (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1957-10-24T19:33:18-04:00", + "end": "1957-10-24T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1957-10-24T19:33:18-04:00", + "end": "1957-10-24T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/268800f2-d121-4323-9b02-2c32b03ea76a", + "resource": { + "resourceType": "Observation", + "id": "268800f2-d121-4323-9b02-2c32b03ea76a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/769ed6ea-5f01-4c3a-af57-5791f0da7161" + }, + "effectiveDateTime": "1957-10-24T19:33:18-04:00", + "issued": "1957-10-24T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b7873a00-6473-4c1f-a29d-503fa357b262", + "resource": { + "resourceType": "Encounter", + "id": "b7873a00-6473-4c1f-a29d-503fa357b262", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ae6d76ce-88ae-c6a4-1185-aa382dc13ecf" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1958-10-18T19:33:18-04:00", + "end": "1958-10-18T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1958-10-18T19:33:18-04:00", + "end": "1958-10-18T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/851ce984-f049-45ee-a3da-ac836d56957e", + "resource": { + "resourceType": "Condition", + "id": "851ce984-f049-45ee-a3da-ac836d56957e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b7873a00-6473-4c1f-a29d-503fa357b262" + }, + "onsetDateTime": "1958-10-18T19:33:18-04:00", + "abatementDateTime": "1958-10-25T19:33:18-04:00", + "recordedDate": "1958-10-18T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f6152868-8144-4a77-ac77-d89976048abf", + "resource": { + "resourceType": "Encounter", + "id": "f6152868-8144-4a77-ac77-d89976048abf", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "6d121e5f-222c-aa2b-b5e5-af50a753cb0d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1958-10-30T18:33:18-05:00", + "end": "1958-10-30T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1958-10-30T18:33:18-05:00", + "end": "1958-10-30T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/aa18b45e-10e3-4903-918e-18e189e3fc3e", + "resource": { + "resourceType": "Observation", + "id": "aa18b45e-10e3-4903-918e-18e189e3fc3e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f6152868-8144-4a77-ac77-d89976048abf" + }, + "effectiveDateTime": "1958-10-30T18:33:18-05:00", + "issued": "1958-10-30T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/44b20736-0879-4b03-a833-cf5a1dcf80f7", + "resource": { + "resourceType": "Encounter", + "id": "44b20736-0879-4b03-a833-cf5a1dcf80f7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "47e4444d-9af3-6ece-c4f7-2b52e193e364" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1959-11-05T18:33:18-05:00", + "end": "1959-11-05T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1959-11-05T18:33:18-05:00", + "end": "1959-11-05T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c8b0302c-ffb5-436d-b4cc-189e40cae97e", + "resource": { + "resourceType": "Observation", + "id": "c8b0302c-ffb5-436d-b4cc-189e40cae97e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/44b20736-0879-4b03-a833-cf5a1dcf80f7" + }, + "effectiveDateTime": "1959-11-05T18:33:18-05:00", + "issued": "1959-11-05T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/a03d1153-630a-4fa3-9763-9f61ee7ca873", + "resource": { + "resourceType": "Encounter", + "id": "a03d1153-630a-4fa3-9763-9f61ee7ca873", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "db45e57a-3a8f-2c8d-561b-543fb8c33130" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "50849002", + "display": "Emergency room admission (procedure)" + } + ], + "text": "Emergency room admission (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1960-01-22T19:13:18-05:00", + "end": "1960-01-22T20:13:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1960-01-22T19:13:18-05:00", + "end": "1960-01-22T20:13:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/bdf59041-be95-4d6d-875e-3f25a1e245f2", + "resource": { + "resourceType": "Condition", + "id": "bdf59041-be95-4d6d-875e-3f25a1e245f2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "403190006", + "display": "First degree burn of skin" + } + ], + "text": "First degree burn of skin" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a03d1153-630a-4fa3-9763-9f61ee7ca873" + }, + "onsetDateTime": "1960-01-22T19:13:18-05:00", + "abatementDateTime": "1960-02-12T19:13:18-05:00", + "recordedDate": "1960-01-22T19:13:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/61c84f88-c723-47fe-b270-0d2dbdf5d58c", + "resource": { + "resourceType": "MedicationRequest", + "id": "61c84f88-c723-47fe-b270-0d2dbdf5d58c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "1f50f7e0-ada9-752c-6cb6-9f4022f76c13" + } + ], + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "243670", + "display": "Aspirin 81 MG Oral Tablet" + } + ], + "text": "Aspirin 81 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a03d1153-630a-4fa3-9763-9f61ee7ca873" + }, + "authoredOn": "1960-01-22T19:13:18-05:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/be2c35fd-91a2-479d-ab38-85dc67cf76c4", + "resource": { + "resourceType": "CareTeam", + "id": "be2c35fd-91a2-479d-ab38-85dc67cf76c4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a03d1153-630a-4fa3-9763-9f61ee7ca873" + }, + "period": { + "start": "1960-01-22T19:13:18-05:00", + "end": "1960-02-12T19:13:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "403190006", + "display": "First degree burn of skin" + } + ], + "text": "First degree burn of skin" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/dca817e3-9792-48a2-b65e-90c31f200696", + "resource": { + "resourceType": "CarePlan", + "id": "dca817e3-9792-48a2-b65e-90c31f200696", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Burn care.
Activities:
  • Burn care
  • Burn care
  • Burn care

Care plan is meant to treat First degree burn of skin.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "133901003", + "display": "Burn care" + } + ], + "text": "Burn care" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a03d1153-630a-4fa3-9763-9f61ee7ca873" + }, + "period": { + "start": "1960-01-22T19:13:18-05:00", + "end": "1960-02-12T19:13:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/be2c35fd-91a2-479d-ab38-85dc67cf76c4" + } + ], + "addresses": [ + { + "reference": "Condition/bdf59041-be95-4d6d-875e-3f25a1e245f2" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "385949008", + "display": "Dressing change management" + } + ], + "text": "Dressing change management" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "440381005", + "display": "Behavior to prevent sun exposure" + } + ], + "text": "Behavior to prevent sun exposure" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "439830001", + "display": "Behavior to prevent infection" + } + ], + "text": "Behavior to prevent infection" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/0905c13c-4e44-47ad-a2a1-08cee96a9967", + "resource": { + "resourceType": "Encounter", + "id": "0905c13c-4e44-47ad-a2a1-08cee96a9967", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d15c1ac1-327b-bbfc-8688-bd2acc0227f9" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1960-11-10T18:33:18-05:00", + "end": "1960-11-10T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1960-11-10T18:33:18-05:00", + "end": "1960-11-10T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9bc6466e-2e97-4f32-8ee0-260e3b3ad719", + "resource": { + "resourceType": "Observation", + "id": "9bc6466e-2e97-4f32-8ee0-260e3b3ad719", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0905c13c-4e44-47ad-a2a1-08cee96a9967" + }, + "effectiveDateTime": "1960-11-10T18:33:18-05:00", + "issued": "1960-11-10T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f25061f0-6af2-420b-b39c-6e45be59567e", + "resource": { + "resourceType": "Encounter", + "id": "f25061f0-6af2-420b-b39c-6e45be59567e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "fc48c986-c95e-429d-def4-431afaaf319d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1961-11-16T18:33:18-05:00", + "end": "1961-11-16T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1961-11-16T18:33:18-05:00", + "end": "1961-11-16T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b66b6414-4d79-46d2-a588-c049b8d020ae", + "resource": { + "resourceType": "Observation", + "id": "b66b6414-4d79-46d2-a588-c049b8d020ae", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f25061f0-6af2-420b-b39c-6e45be59567e" + }, + "effectiveDateTime": "1961-11-16T18:33:18-05:00", + "issued": "1961-11-16T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/4af4feb7-487c-4b4f-aa4d-5512b4a3f2a1", + "resource": { + "resourceType": "Encounter", + "id": "4af4feb7-487c-4b4f-aa4d-5512b4a3f2a1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "46649476-e0cf-85fa-32a7-5d5c42af016c" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1962-11-22T18:33:18-05:00", + "end": "1962-11-22T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1962-11-22T18:33:18-05:00", + "end": "1962-11-22T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a1c9185f-8e6f-4f51-ba29-ed9f989c6967", + "resource": { + "resourceType": "Observation", + "id": "a1c9185f-8e6f-4f51-ba29-ed9f989c6967", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4af4feb7-487c-4b4f-aa4d-5512b4a3f2a1" + }, + "effectiveDateTime": "1962-11-22T18:33:18-05:00", + "issued": "1962-11-22T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/56287113-09c6-4f6f-a3d0-df9c60312ae0", + "resource": { + "resourceType": "Immunization", + "id": "56287113-09c6-4f6f-a3d0-df9c60312ae0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4af4feb7-487c-4b4f-aa4d-5512b4a3f2a1" + }, + "occurrenceDateTime": "1962-11-22T18:33:18-05:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/124fbf3b-f3cd-4ba0-b1f9-212bac634e75", + "resource": { + "resourceType": "Encounter", + "id": "124fbf3b-f3cd-4ba0-b1f9-212bac634e75", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "b375e653-5306-c04b-cf5b-aeb900df65f7" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1963-08-12T19:33:18-04:00", + "end": "1963-08-12T19:56:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1963-08-12T19:33:18-04:00", + "end": "1963-08-12T19:56:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/79c66c2c-5d68-4dc5-8660-b0ffd2d05fb5", + "resource": { + "resourceType": "Condition", + "id": "79c66c2c-5d68-4dc5-8660-b0ffd2d05fb5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/124fbf3b-f3cd-4ba0-b1f9-212bac634e75" + }, + "onsetDateTime": "1963-08-12T19:33:18-04:00", + "abatementDateTime": "1963-08-26T19:56:18-04:00", + "recordedDate": "1963-08-12T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/ea614dbf-857f-4e38-a3c5-05a1655c87ab", + "resource": { + "resourceType": "CareTeam", + "id": "ea614dbf-857f-4e38-a3c5-05a1655c87ab", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/124fbf3b-f3cd-4ba0-b1f9-212bac634e75" + }, + "period": { + "start": "1963-08-12T19:56:18-04:00", + "end": "1963-11-28T18:33:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/a0e13d71-0fa3-4b19-85fe-0a038ed59087", + "resource": { + "resourceType": "CarePlan", + "id": "a0e13d71-0fa3-4b19-85fe-0a038ed59087", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/124fbf3b-f3cd-4ba0-b1f9-212bac634e75" + }, + "period": { + "start": "1963-08-12T19:56:18-04:00", + "end": "1963-11-28T18:33:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/ea614dbf-857f-4e38-a3c5-05a1655c87ab" + } + ], + "addresses": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + }, + { + "reference": "Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3" + }, + { + "reference": "Condition/79c66c2c-5d68-4dc5-8660-b0ffd2d05fb5" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/090f9c0f-1bd3-408f-8e7d-ee94e8d91308", + "resource": { + "resourceType": "Encounter", + "id": "090f9c0f-1bd3-408f-8e7d-ee94e8d91308", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "c02d49d2-e048-e995-7615-522487043d1b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1963-11-28T18:33:18-05:00", + "end": "1963-11-28T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1963-11-28T18:33:18-05:00", + "end": "1963-11-28T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/ff975e55-4c78-495d-b662-9caf06f5c67f", + "resource": { + "resourceType": "Observation", + "id": "ff975e55-4c78-495d-b662-9caf06f5c67f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/090f9c0f-1bd3-408f-8e7d-ee94e8d91308" + }, + "effectiveDateTime": "1963-11-28T18:33:18-05:00", + "issued": "1963-11-28T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/5e19989e-12e8-4983-addd-84b7304d7419", + "resource": { + "resourceType": "MedicationRequest", + "id": "5e19989e-12e8-4983-addd-84b7304d7419", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/090f9c0f-1bd3-408f-8e7d-ee94e8d91308" + }, + "authoredOn": "1963-11-28T18:33:18-05:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b7df9fa5-b84a-4d64-8574-ebf0d0317302", + "resource": { + "resourceType": "Encounter", + "id": "b7df9fa5-b84a-4d64-8574-ebf0d0317302", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "31ccab98-5311-8ebb-e8e0-853d59a5031c" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1964-12-03T18:33:18-05:00", + "end": "1964-12-03T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1964-12-03T18:33:18-05:00", + "end": "1964-12-03T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/68c714e1-484d-4be0-bee6-5fdcfdaf5c41", + "resource": { + "resourceType": "Observation", + "id": "68c714e1-484d-4be0-bee6-5fdcfdaf5c41", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b7df9fa5-b84a-4d64-8574-ebf0d0317302" + }, + "effectiveDateTime": "1964-12-03T18:33:18-05:00", + "issued": "1964-12-03T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/cb54a1ea-2de4-4bea-8a4a-850f0d893766", + "resource": { + "resourceType": "MedicationRequest", + "id": "cb54a1ea-2de4-4bea-8a4a-850f0d893766", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "895994", + "display": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b7df9fa5-b84a-4d64-8574-ebf0d0317302" + }, + "authoredOn": "1964-12-03T18:33:18-05:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/4cb17f96-7f35-41e5-b21a-21960a7a6d86", + "resource": { + "resourceType": "Encounter", + "id": "4cb17f96-7f35-41e5-b21a-21960a7a6d86", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f481c0ba-df8f-b451-48c4-b3c0c9bd8902" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1965-12-09T18:33:18-05:00", + "end": "1965-12-09T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1965-12-09T18:33:18-05:00", + "end": "1965-12-09T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/dfa8b8c2-702a-4cd6-b744-2101a548f588", + "resource": { + "resourceType": "Observation", + "id": "dfa8b8c2-702a-4cd6-b744-2101a548f588", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4cb17f96-7f35-41e5-b21a-21960a7a6d86" + }, + "effectiveDateTime": "1965-12-09T18:33:18-05:00", + "issued": "1965-12-09T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/299dea75-a869-4075-b7fa-3da6ca7a8060", + "resource": { + "resourceType": "Encounter", + "id": "299dea75-a869-4075-b7fa-3da6ca7a8060", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "bb2af25f-b19f-237f-e8ea-c996ea6ef17d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1966-12-15T18:33:18-05:00", + "end": "1966-12-15T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1966-12-15T18:33:18-05:00", + "end": "1966-12-15T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/16f891fc-37fb-4806-be48-97b42bb43f10", + "resource": { + "resourceType": "Observation", + "id": "16f891fc-37fb-4806-be48-97b42bb43f10", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/299dea75-a869-4075-b7fa-3da6ca7a8060" + }, + "effectiveDateTime": "1966-12-15T18:33:18-05:00", + "issued": "1966-12-15T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8194e744-f66a-4b8e-aa16-5158694bddd0", + "resource": { + "resourceType": "Encounter", + "id": "8194e744-f66a-4b8e-aa16-5158694bddd0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "b873b18e-1636-015c-c527-939b0f6116a2" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1967-12-21T18:33:18-05:00", + "end": "1967-12-21T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1967-12-21T18:33:18-05:00", + "end": "1967-12-21T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b7c86d3f-ce98-43b0-8a4c-0344ab95a7b6", + "resource": { + "resourceType": "Observation", + "id": "b7c86d3f-ce98-43b0-8a4c-0344ab95a7b6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8194e744-f66a-4b8e-aa16-5158694bddd0" + }, + "effectiveDateTime": "1967-12-21T18:33:18-05:00", + "issued": "1967-12-21T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8df66184-01af-4344-adcb-3c11662e8baf", + "resource": { + "resourceType": "Encounter", + "id": "8df66184-01af-4344-adcb-3c11662e8baf", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "2951a48d-48d2-7b9a-12e4-c5bd4c64315e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1968-12-26T18:33:18-05:00", + "end": "1968-12-26T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1968-12-26T18:33:18-05:00", + "end": "1968-12-26T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9465abac-6920-4a2d-8ada-a4d91b73fa3c", + "resource": { + "resourceType": "Observation", + "id": "9465abac-6920-4a2d-8ada-a4d91b73fa3c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8df66184-01af-4344-adcb-3c11662e8baf" + }, + "effectiveDateTime": "1968-12-26T18:33:18-05:00", + "issued": "1968-12-26T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/46496ae5-5d95-462e-8819-bb4cda9a11c0", + "resource": { + "resourceType": "Encounter", + "id": "46496ae5-5d95-462e-8819-bb4cda9a11c0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "86186473-efa5-be92-6ea8-bb62e95cfbdf" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1970-01-01T18:33:18-05:00", + "end": "1970-01-01T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1970-01-01T18:33:18-05:00", + "end": "1970-01-01T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0fd9f7c5-d7a0-42f4-ae74-bb55db075014", + "resource": { + "resourceType": "Observation", + "id": "0fd9f7c5-d7a0-42f4-ae74-bb55db075014", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/46496ae5-5d95-462e-8819-bb4cda9a11c0" + }, + "effectiveDateTime": "1970-01-01T18:33:18-05:00", + "issued": "1970-01-01T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/42416eaa-87f3-4b0e-baf7-613caf12e436", + "resource": { + "resourceType": "MedicationRequest", + "id": "42416eaa-87f3-4b0e-baf7-613caf12e436", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "895994", + "display": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/46496ae5-5d95-462e-8819-bb4cda9a11c0" + }, + "authoredOn": "1970-01-01T18:33:18-05:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/9d368f9a-4b52-4c4d-bd40-f8756c62cbe5", + "resource": { + "resourceType": "Encounter", + "id": "9d368f9a-4b52-4c4d-bd40-f8756c62cbe5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "360fd946-7728-eed9-e73b-e753401c8e19" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "50849002", + "display": "Emergency room admission (procedure)" + } + ], + "text": "Emergency room admission (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1970-01-20T19:13:18-05:00", + "end": "1970-01-20T20:13:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1970-01-20T19:13:18-05:00", + "end": "1970-01-20T20:13:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/83e8533b-4fce-4aa7-a5f9-e46d8fe18973", + "resource": { + "resourceType": "Condition", + "id": "83e8533b-4fce-4aa7-a5f9-e46d8fe18973", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "283385000", + "display": "Laceration of thigh" + } + ], + "text": "Laceration of thigh" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9d368f9a-4b52-4c4d-bd40-f8756c62cbe5" + }, + "onsetDateTime": "1970-01-20T19:13:18-05:00", + "abatementDateTime": "1970-02-10T19:55:18-05:00", + "recordedDate": "1970-01-20T19:13:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/4a173dc7-e5ae-4bc8-91e9-11ccd7f7b2cf", + "resource": { + "resourceType": "Procedure", + "id": "4a173dc7-e5ae-4bc8-91e9-11ccd7f7b2cf", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "288086009", + "display": "Suture open wound" + } + ], + "text": "Suture open wound" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9d368f9a-4b52-4c4d-bd40-f8756c62cbe5" + }, + "performedPeriod": { + "start": "1970-01-20T19:13:18-05:00", + "end": "1970-01-20T19:42:18-05:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + }, + "reasonReference": [ + { + "reference": "Condition/83e8533b-4fce-4aa7-a5f9-e46d8fe18973", + "display": "Laceration of thigh" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/bf41884d-fb47-4ffe-bdbf-3010f36ca46b", + "resource": { + "resourceType": "Procedure", + "id": "bf41884d-fb47-4ffe-bdbf-3010f36ca46b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "384700001", + "display": "Injection of tetanus antitoxin" + } + ], + "text": "Injection of tetanus antitoxin" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9d368f9a-4b52-4c4d-bd40-f8756c62cbe5" + }, + "performedPeriod": { + "start": "1970-01-20T19:42:18-05:00", + "end": "1970-01-20T19:55:18-05:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + }, + "reasonReference": [ + { + "reference": "Condition/83e8533b-4fce-4aa7-a5f9-e46d8fe18973", + "display": "Laceration of thigh" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/d1f453c7-a3c9-4ffc-9227-f6588ee43302", + "resource": { + "resourceType": "CareTeam", + "id": "d1f453c7-a3c9-4ffc-9227-f6588ee43302", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9d368f9a-4b52-4c4d-bd40-f8756c62cbe5" + }, + "period": { + "start": "1970-01-20T19:13:18-05:00", + "end": "1970-02-10T19:55:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "283385000", + "display": "Laceration of thigh" + } + ], + "text": "Laceration of thigh" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/56d07b39-2108-4d41-a2c0-e0a8ad2afd2e", + "resource": { + "resourceType": "CarePlan", + "id": "56d07b39-2108-4d41-a2c0-e0a8ad2afd2e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Wound care.
Activities:
  • Wound care
  • Wound care

Care plan is meant to treat Laceration of thigh.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "225358003", + "display": "Wound care" + } + ], + "text": "Wound care" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9d368f9a-4b52-4c4d-bd40-f8756c62cbe5" + }, + "period": { + "start": "1970-01-20T19:13:18-05:00", + "end": "1970-02-10T19:55:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/d1f453c7-a3c9-4ffc-9227-f6588ee43302" + } + ], + "addresses": [ + { + "reference": "Condition/83e8533b-4fce-4aa7-a5f9-e46d8fe18973" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "385949008", + "display": "Dressing change management" + } + ], + "text": "Dressing change management" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "439830001", + "display": "Behavior to prevent infection" + } + ], + "text": "Behavior to prevent infection" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8c884f87-46ab-4c21-91e9-48520b6712fb", + "resource": { + "resourceType": "Encounter", + "id": "8c884f87-46ab-4c21-91e9-48520b6712fb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "3a07c339-9d0c-5a8d-87c7-356eaff63731" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1971-01-07T18:33:18-05:00", + "end": "1971-01-07T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1971-01-07T18:33:18-05:00", + "end": "1971-01-07T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/00c0a6e7-c58c-4360-a3a2-c397f6aebb22", + "resource": { + "resourceType": "Observation", + "id": "00c0a6e7-c58c-4360-a3a2-c397f6aebb22", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8c884f87-46ab-4c21-91e9-48520b6712fb" + }, + "effectiveDateTime": "1971-01-07T18:33:18-05:00", + "issued": "1971-01-07T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/93f738c7-3393-4b4a-ac59-6b0f5e879386", + "resource": { + "resourceType": "MedicationRequest", + "id": "93f738c7-3393-4b4a-ac59-6b0f5e879386", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "895994", + "display": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8c884f87-46ab-4c21-91e9-48520b6712fb" + }, + "authoredOn": "1971-01-07T18:33:18-05:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/92ea3d63-59c6-452d-bc3f-bdde7a10d087", + "resource": { + "resourceType": "Encounter", + "id": "92ea3d63-59c6-452d-bc3f-bdde7a10d087", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ef4695d6-60f3-3dcd-6313-cf5e64273eb0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1972-01-13T18:33:18-05:00", + "end": "1972-01-13T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1972-01-13T18:33:18-05:00", + "end": "1972-01-13T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/fb658167-4e99-4937-8e97-04988639c327", + "resource": { + "resourceType": "Observation", + "id": "fb658167-4e99-4937-8e97-04988639c327", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "785-6", + "display": "MCH [Entitic mass] by Automated count" + } + ], + "text": "MCH [Entitic mass] by Automated count" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/92ea3d63-59c6-452d-bc3f-bdde7a10d087" + }, + "effectivePeriod": { + "start": "1972-01-13T18:33:18-05:00", + "end": "1972-01-13T19:33:18-05:00" + }, + "issued": "1972-01-13T18:33:18.715-05:00", + "valueQuantity": { + "value": 28.25, + "unit": "pg", + "system": "http://unitsofmeasure.org", + "code": "pg" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/caeb5cc3-9719-40c3-899c-5d26e38291b3", + "resource": { + "resourceType": "Observation", + "id": "caeb5cc3-9719-40c3-899c-5d26e38291b3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/92ea3d63-59c6-452d-bc3f-bdde7a10d087" + }, + "effectiveDateTime": "1972-01-13T18:33:18-05:00", + "issued": "1972-01-13T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/601662e4-7f14-46bc-bb2b-986337d82170", + "resource": { + "resourceType": "Encounter", + "id": "601662e4-7f14-46bc-bb2b-986337d82170", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d7f01810-6e8b-f082-db49-a0170b02f58b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1973-01-18T18:33:18-05:00", + "end": "1973-01-18T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1973-01-18T18:33:18-05:00", + "end": "1973-01-18T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a9c8a6de-e255-4d22-8677-c195a595fd60", + "resource": { + "resourceType": "Observation", + "id": "a9c8a6de-e255-4d22-8677-c195a595fd60", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/601662e4-7f14-46bc-bb2b-986337d82170" + }, + "effectiveDateTime": "1973-01-18T18:33:18-05:00", + "issued": "1973-01-18T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6c7a0cdb-6d34-45a5-a910-8cc13d54ccb0", + "resource": { + "resourceType": "Encounter", + "id": "6c7a0cdb-6d34-45a5-a910-8cc13d54ccb0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a74f1005-41df-7077-1687-1c968caf0be1" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1974-01-24T19:33:18-04:00", + "end": "1974-01-24T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1974-01-24T19:33:18-04:00", + "end": "1974-01-24T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/aa052463-320f-490d-bf46-1f8edfa43a72", + "resource": { + "resourceType": "Observation", + "id": "aa052463-320f-490d-bf46-1f8edfa43a72", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6c7a0cdb-6d34-45a5-a910-8cc13d54ccb0" + }, + "effectiveDateTime": "1974-01-24T19:33:18-04:00", + "issued": "1974-01-24T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/161b3b09-73cd-4f53-ae3c-fdb3c7c6a3ea", + "resource": { + "resourceType": "Immunization", + "id": "161b3b09-73cd-4f53-ae3c-fdb3c7c6a3ea", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6c7a0cdb-6d34-45a5-a910-8cc13d54ccb0" + }, + "occurrenceDateTime": "1974-01-24T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/cc18ba30-0c37-4072-a50e-7b9718c1d9c7", + "resource": { + "resourceType": "DiagnosticReport", + "id": "cc18ba30-0c37-4072-a50e-7b9718c1d9c7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6c7a0cdb-6d34-45a5-a910-8cc13d54ccb0" + }, + "effectiveDateTime": "1974-01-24T19:33:18-04:00", + "issued": "1974-01-24T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NzQtMDEtMjQKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMzMgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/0b3e4d43-c7e0-4d97-98f5-6d490ebd3d37", + "resource": { + "resourceType": "DocumentReference", + "id": "0b3e4d43-c7e0-4d97-98f5-6d490ebd3d37", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:0340cdd7-b00d-1fd6-e6f6-745a409a1745" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1974-01-24T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NzQtMDEtMjQKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMzMgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/6c7a0cdb-6d34-45a5-a910-8cc13d54ccb0" + } + ], + "period": { + "start": "1974-01-24T19:33:18-04:00", + "end": "1974-01-24T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b6120992-c369-4912-b70e-bde963ff3ed8", + "resource": { + "resourceType": "Encounter", + "id": "b6120992-c369-4912-b70e-bde963ff3ed8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "0a7d3c3f-535a-1f62-c1d4-90d7953098cb" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1975-01-30T18:33:18-05:00", + "end": "1975-01-30T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1975-01-30T18:33:18-05:00", + "end": "1975-01-30T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/1cdf8081-fcd0-4674-8f0b-4bb2584e7517", + "resource": { + "resourceType": "Condition", + "id": "1cdf8081-fcd0-4674-8f0b-4bb2584e7517", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "15777000", + "display": "Prediabetes" + } + ], + "text": "Prediabetes" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b6120992-c369-4912-b70e-bde963ff3ed8" + }, + "onsetDateTime": "1975-01-30T18:33:18-05:00", + "recordedDate": "1975-01-30T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/3900baaa-10ca-41a9-87f2-738b15f6d4ae", + "resource": { + "resourceType": "Observation", + "id": "3900baaa-10ca-41a9-87f2-738b15f6d4ae", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b6120992-c369-4912-b70e-bde963ff3ed8" + }, + "effectiveDateTime": "1975-01-30T18:33:18-05:00", + "issued": "1975-01-30T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/7a10b5c0-7a9d-4fa1-a136-5c99c9038651", + "resource": { + "resourceType": "CareTeam", + "id": "7a10b5c0-7a9d-4fa1-a136-5c99c9038651", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "active", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b6120992-c369-4912-b70e-bde963ff3ed8" + }, + "period": { + "start": "1975-01-30T18:33:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "15777000", + "display": "Prediabetes" + } + ], + "text": "Prediabetes" + } + ], + "managingOrganization": [ + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/dcc5e8d8-c71f-4583-8824-130645f83026", + "resource": { + "resourceType": "CarePlan", + "id": "dcc5e8d8-c71f-4583-8824-130645f83026", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Diabetes self management plan.
Activities:
  • Diabetes self management plan
  • Diabetes self management plan

Care plan is meant to treat Prediabetes.
" + }, + "status": "active", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "698360004", + "display": "Diabetes self management plan" + } + ], + "text": "Diabetes self management plan" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b6120992-c369-4912-b70e-bde963ff3ed8" + }, + "period": { + "start": "1975-01-30T18:33:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/7a10b5c0-7a9d-4fa1-a136-5c99c9038651" + } + ], + "addresses": [ + { + "reference": "Condition/1cdf8081-fcd0-4674-8f0b-4bb2584e7517" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "160670007", + "display": "Diabetic diet" + } + ], + "text": "Diabetic diet" + }, + "status": "in-progress", + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "229065009", + "display": "Exercise therapy" + } + ], + "text": "Exercise therapy" + }, + "status": "in-progress", + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/2bab7cb6-92c2-47b3-8158-d863d1cd60ad", + "resource": { + "resourceType": "Encounter", + "id": "2bab7cb6-92c2-47b3-8158-d863d1cd60ad", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "e964a4a8-4f9f-5c0f-4e68-e34329e27156" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1976-02-05T18:33:18-05:00", + "end": "1976-02-05T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1976-02-05T18:33:18-05:00", + "end": "1976-02-05T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/631e61ce-4a88-4031-8604-99494d8ae68e", + "resource": { + "resourceType": "Condition", + "id": "631e61ce-4a88-4031-8604-99494d8ae68e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "271737000", + "display": "Anemia (disorder)" + } + ], + "text": "Anemia (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2bab7cb6-92c2-47b3-8158-d863d1cd60ad" + }, + "onsetDateTime": "1976-02-05T18:33:18-05:00", + "recordedDate": "1976-02-05T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/42329f5b-953a-42e7-84fe-1bcaedd8d835", + "resource": { + "resourceType": "Observation", + "id": "42329f5b-953a-42e7-84fe-1bcaedd8d835", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-respiratory-rate" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "9279-1", + "display": "Respiratory rate" + } + ], + "text": "Respiratory rate" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2bab7cb6-92c2-47b3-8158-d863d1cd60ad" + }, + "effectiveDateTime": "1976-02-05T18:33:18-05:00", + "issued": "1976-02-05T18:33:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "valueQuantity": { + "value": 14, + "unit": "/min", + "system": "http://unitsofmeasure.org", + "code": "/min" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b702f5e8-0245-4e10-a335-3f2826cab32f", + "resource": { + "resourceType": "Observation", + "id": "b702f5e8-0245-4e10-a335-3f2826cab32f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2bab7cb6-92c2-47b3-8158-d863d1cd60ad" + }, + "effectiveDateTime": "1976-02-05T18:33:18-05:00", + "issued": "1976-02-05T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/9c526bce-d593-462f-bd3f-778010ccf098", + "resource": { + "resourceType": "Encounter", + "id": "9c526bce-d593-462f-bd3f-778010ccf098", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "2269b1fa-b760-b4bb-6fb9-0863415b074f" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1976-02-05T18:33:18-05:00", + "end": "1976-02-05T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1976-02-05T18:33:18-05:00", + "end": "1976-02-05T18:48:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "271737000", + "display": "Anemia (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/76e50d44-0cda-4017-8447-0d58fd97e8e5", + "resource": { + "resourceType": "Procedure", + "id": "76e50d44-0cda-4017-8447-0d58fd97e8e5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "14768001", + "display": "Peripheral blood smear interpretation" + } + ], + "text": "Peripheral blood smear interpretation" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9c526bce-d593-462f-bd3f-778010ccf098" + }, + "performedPeriod": { + "start": "1976-02-05T18:33:18-05:00", + "end": "1976-02-05T19:03:18-05:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/84b29d30-adc3-40bb-b214-c8edd8df9739", + "resource": { + "resourceType": "Procedure", + "id": "84b29d30-adc3-40bb-b214-c8edd8df9739", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162676008", + "display": "Brief general examination (procedure)" + } + ], + "text": "Brief general examination (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9c526bce-d593-462f-bd3f-778010ccf098" + }, + "performedPeriod": { + "start": "1976-02-05T19:19:18-05:00", + "end": "1976-02-05T19:30:18-05:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/078933ad-761a-4873-b33d-dee7e96d3c67", + "resource": { + "resourceType": "Encounter", + "id": "078933ad-761a-4873-b33d-dee7e96d3c67", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "e0b2dcd8-b735-297e-e435-6131f55ec29a" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1977-02-10T18:33:18-05:00", + "end": "1977-02-10T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1977-02-10T18:33:18-05:00", + "end": "1977-02-10T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e5b5de5b-3f53-4997-aa65-5a98bbd579c9", + "resource": { + "resourceType": "Observation", + "id": "e5b5de5b-3f53-4997-aa65-5a98bbd579c9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/078933ad-761a-4873-b33d-dee7e96d3c67" + }, + "effectiveDateTime": "1977-02-10T18:33:18-05:00", + "issued": "1977-02-10T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/f833951e-0e8c-4820-89bc-7d773887e5aa", + "resource": { + "resourceType": "Procedure", + "id": "f833951e-0e8c-4820-89bc-7d773887e5aa", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/078933ad-761a-4873-b33d-dee7e96d3c67" + }, + "performedPeriod": { + "start": "1977-02-10T18:33:18-05:00", + "end": "1977-02-10T18:48:18-05:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1bb8ae17-850c-48ef-a118-9cfdc8eb2b48", + "resource": { + "resourceType": "Encounter", + "id": "1bb8ae17-850c-48ef-a118-9cfdc8eb2b48", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "9e950518-e434-16cd-7860-34f07869756c" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1978-02-16T18:33:18-05:00", + "end": "1978-02-16T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1978-02-16T18:33:18-05:00", + "end": "1978-02-16T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/5ffcef69-9b59-4a70-9ee8-fe5fb9012160", + "resource": { + "resourceType": "Immunization", + "id": "5ffcef69-9b59-4a70-9ee8-fe5fb9012160", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1bb8ae17-850c-48ef-a118-9cfdc8eb2b48" + }, + "occurrenceDateTime": "1978-02-16T18:33:18-05:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b0dc1307-c129-4b7a-9983-c2a105afb9c6", + "resource": { + "resourceType": "Encounter", + "id": "b0dc1307-c129-4b7a-9983-c2a105afb9c6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "1c1a4166-a308-d166-6bca-ce937ec7f32f" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "394701000", + "display": "Asthma follow-up" + } + ], + "text": "Asthma follow-up" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1978-02-11T18:33:18-05:00", + "end": "1978-02-11T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1978-02-11T18:33:18-05:00", + "end": "1978-02-11T18:48:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195967001", + "display": "Asthma" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/015d48ff-bf49-4cb9-86ba-66f495252de1", + "resource": { + "resourceType": "Observation", + "id": "015d48ff-bf49-4cb9-86ba-66f495252de1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b0dc1307-c129-4b7a-9983-c2a105afb9c6" + }, + "effectiveDateTime": "1978-02-16T18:33:18-05:00", + "issued": "1978-02-16T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/03da0eb1-a183-4c3b-ac62-35dcf9e70148", + "resource": { + "resourceType": "Encounter", + "id": "03da0eb1-a183-4c3b-ac62-35dcf9e70148", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "819e207b-1038-b9ad-7f9c-440723dca488" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1978-08-16T19:33:18-04:00", + "end": "1978-08-16T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1978-08-16T19:33:18-04:00", + "end": "1978-08-16T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/d7f98458-755a-4dd7-9efe-a1558d2fecb2", + "resource": { + "resourceType": "Condition", + "id": "d7f98458-755a-4dd7-9efe-a1558d2fecb2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/03da0eb1-a183-4c3b-ac62-35dcf9e70148" + }, + "onsetDateTime": "1978-08-16T19:33:18-04:00", + "abatementDateTime": "1978-09-06T19:33:18-04:00", + "recordedDate": "1978-08-16T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/af074e38-b0d7-4665-95bf-1cdbb40d9818", + "resource": { + "resourceType": "Encounter", + "id": "af074e38-b0d7-4665-95bf-1cdbb40d9818", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "99a766a0-03e9-fdcc-b637-c3262dffafa6" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ], + "text": "Encounter for check up (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1978-09-07T19:33:18-04:00", + "end": "1978-09-07T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1978-09-07T19:33:18-04:00", + "end": "1978-09-07T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e0782c1d-228e-4f86-a26a-c6cc8920d598", + "resource": { + "resourceType": "Observation", + "id": "e0782c1d-228e-4f86-a26a-c6cc8920d598", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/af074e38-b0d7-4665-95bf-1cdbb40d9818" + }, + "effectiveDateTime": "1978-09-07T19:33:18-04:00", + "issued": "1978-09-07T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/660bedd7-b601-4f48-8797-7123bca5d815", + "resource": { + "resourceType": "Procedure", + "id": "660bedd7-b601-4f48-8797-7123bca5d815", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/af074e38-b0d7-4665-95bf-1cdbb40d9818" + }, + "performedPeriod": { + "start": "1978-09-07T19:33:18-04:00", + "end": "1978-09-07T19:48:18-04:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/ff13c410-dfa3-45a9-b192-bddb40051bb3", + "resource": { + "resourceType": "DiagnosticReport", + "id": "ff13c410-dfa3-45a9-b192-bddb40051bb3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/af074e38-b0d7-4665-95bf-1cdbb40d9818" + }, + "effectiveDateTime": "1978-09-07T19:33:18-04:00", + "issued": "1978-09-07T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NzgtMDktMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMzggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/229b8546-0624-416e-aef9-62482becba8b", + "resource": { + "resourceType": "DocumentReference", + "id": "229b8546-0624-416e-aef9-62482becba8b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:957e9339-9750-cd16-4733-0fdd47295465" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1978-09-07T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NzgtMDktMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMzggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/af074e38-b0d7-4665-95bf-1cdbb40d9818" + } + ], + "period": { + "start": "1978-09-07T19:33:18-04:00", + "end": "1978-09-07T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/94914230-5dea-46c3-aad9-d84c4c818b71", + "resource": { + "resourceType": "Encounter", + "id": "94914230-5dea-46c3-aad9-d84c4c818b71", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ca0c31bc-c0ad-09c3-2597-eb4058b46add" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1979-02-22T18:33:18-05:00", + "end": "1979-02-22T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1979-02-22T18:33:18-05:00", + "end": "1979-02-22T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9d81eaf8-4526-4570-b983-d1d6bb5be0c8", + "resource": { + "resourceType": "Observation", + "id": "9d81eaf8-4526-4570-b983-d1d6bb5be0c8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/94914230-5dea-46c3-aad9-d84c4c818b71" + }, + "effectiveDateTime": "1979-02-22T18:33:18-05:00", + "issued": "1979-02-22T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/93b76323-91f2-43cf-8345-3381be31876c", + "resource": { + "resourceType": "Procedure", + "id": "93b76323-91f2-43cf-8345-3381be31876c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/94914230-5dea-46c3-aad9-d84c4c818b71" + }, + "performedPeriod": { + "start": "1979-02-22T18:33:18-05:00", + "end": "1979-02-22T18:48:18-05:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/b46789b4-933b-46da-91b2-16634368a815", + "resource": { + "resourceType": "DiagnosticReport", + "id": "b46789b4-933b-46da-91b2-16634368a815", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/94914230-5dea-46c3-aad9-d84c4c818b71" + }, + "effectiveDateTime": "1979-02-22T18:33:18-05:00", + "issued": "1979-02-22T18:33:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5NzktMDItMjIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMzggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/c89f31b4-3913-41d5-835e-530d01644be6", + "resource": { + "resourceType": "DocumentReference", + "id": "c89f31b4-3913-41d5-835e-530d01644be6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:0fd4ebab-1828-49c1-44cc-2410c0cb60f8" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1979-02-22T18:33:18.715-05:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5NzktMDItMjIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgMzggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/94914230-5dea-46c3-aad9-d84c4c818b71" + } + ], + "period": { + "start": "1979-02-22T18:33:18-05:00", + "end": "1979-02-22T18:48:18-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/a2721212-21a0-48b5-8f57-08757c3bce0f", + "resource": { + "resourceType": "Encounter", + "id": "a2721212-21a0-48b5-8f57-08757c3bce0f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "198ca942-ab26-541a-5381-224315bd67a8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1980-02-28T18:33:18-05:00", + "end": "1980-02-28T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1980-02-28T18:33:18-05:00", + "end": "1980-02-28T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1b1bb089-0b0d-44f9-b279-e6be18f32466", + "resource": { + "resourceType": "Observation", + "id": "1b1bb089-0b0d-44f9-b279-e6be18f32466", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a2721212-21a0-48b5-8f57-08757c3bce0f" + }, + "effectiveDateTime": "1980-02-28T18:33:18-05:00", + "issued": "1980-02-28T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/89e41b0f-54ac-4779-baba-295fdd78bc45", + "resource": { + "resourceType": "Encounter", + "id": "89e41b0f-54ac-4779-baba-295fdd78bc45", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "51cc82af-7587-a908-b408-b7b08c47422e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1981-03-05T18:33:18-05:00", + "end": "1981-03-05T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1981-03-05T18:33:18-05:00", + "end": "1981-03-05T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/ed307f1b-ec78-4fed-b5ec-b989c6eea02c", + "resource": { + "resourceType": "Observation", + "id": "ed307f1b-ec78-4fed-b5ec-b989c6eea02c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/89e41b0f-54ac-4779-baba-295fdd78bc45" + }, + "effectiveDateTime": "1981-03-05T18:33:18-05:00", + "issued": "1981-03-05T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/e29d2a8a-9826-48e1-8474-e4c6ab2a109b", + "resource": { + "resourceType": "MedicationRequest", + "id": "e29d2a8a-9826-48e1-8474-e4c6ab2a109b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/89e41b0f-54ac-4779-baba-295fdd78bc45" + }, + "authoredOn": "1981-03-05T18:33:18-05:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/ee033ff0-1458-4c9f-8607-09b56ca1180c", + "resource": { + "resourceType": "Encounter", + "id": "ee033ff0-1458-4c9f-8607-09b56ca1180c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "aeaa00e9-748f-d7ab-ed40-342ad58138a8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1982-03-11T18:33:18-05:00", + "end": "1982-03-11T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1982-03-11T18:33:18-05:00", + "end": "1982-03-11T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1839c579-71cf-439a-a227-cd0e53516626", + "resource": { + "resourceType": "Observation", + "id": "1839c579-71cf-439a-a227-cd0e53516626", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/ee033ff0-1458-4c9f-8607-09b56ca1180c" + }, + "effectiveDateTime": "1982-03-11T18:33:18-05:00", + "issued": "1982-03-11T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688", + "resource": { + "resourceType": "Encounter", + "id": "7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "df3732c1-8b05-471b-0801-d40ff6bf5823" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1983-03-17T18:33:18-05:00", + "end": "1983-03-17T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1983-03-17T18:33:18-05:00", + "end": "1983-03-17T18:48:18-05:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/dc1496d4-329b-45ef-8713-d047f3568f8e", + "resource": { + "resourceType": "Observation", + "id": "dc1496d4-329b-45ef-8713-d047f3568f8e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bodyweight", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "29463-7", + "display": "Body Weight" + } + ], + "text": "Body Weight" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688" + }, + "effectiveDateTime": "1983-03-17T18:33:18-05:00", + "issued": "1983-03-17T18:33:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "valueQuantity": { + "value": 99.3, + "unit": "kg", + "system": "http://unitsofmeasure.org", + "code": "kg" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/29605325-0d5f-4c04-bd0e-5bd6dbff3220", + "resource": { + "resourceType": "Observation", + "id": "29605325-0d5f-4c04-bd0e-5bd6dbff3220", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688" + }, + "effectiveDateTime": "1983-03-17T18:33:18-05:00", + "issued": "1983-03-17T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/279c37da-d970-491a-a35c-a811b42b6d87", + "resource": { + "resourceType": "Procedure", + "id": "279c37da-d970-491a-a35c-a811b42b6d87", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688" + }, + "performedPeriod": { + "start": "1983-03-17T18:33:18-05:00", + "end": "1983-03-17T18:48:18-05:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/ebc22808-da82-4089-95b3-13fd4fdecbe3", + "resource": { + "resourceType": "MedicationRequest", + "id": "ebc22808-da82-4089-95b3-13fd4fdecbe3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688" + }, + "authoredOn": "1983-03-17T18:33:18-05:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/4b45fe5a-1061-4fca-aaa9-9cd89b652439", + "resource": { + "resourceType": "Encounter", + "id": "4b45fe5a-1061-4fca-aaa9-9cd89b652439", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "baabb440-770c-d2a5-4aa6-3aa18602cf35" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1984-03-22T18:33:18-05:00", + "end": "1984-03-22T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1984-03-22T18:33:18-05:00", + "end": "1984-03-22T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/68d5d947-94ed-489c-a59e-6a775c52be64", + "resource": { + "resourceType": "Observation", + "id": "68d5d947-94ed-489c-a59e-6a775c52be64", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4b45fe5a-1061-4fca-aaa9-9cd89b652439" + }, + "effectiveDateTime": "1984-03-22T18:33:18-05:00", + "issued": "1984-03-22T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/79cbf8f3-2c37-40d8-8696-90c60819bf62", + "resource": { + "resourceType": "Encounter", + "id": "79cbf8f3-2c37-40d8-8696-90c60819bf62", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "08a4c0aa-1ed2-a071-ee56-72b44c8a7ba4" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ], + "text": "Encounter for check up (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1984-11-01T18:33:18-05:00", + "end": "1984-11-01T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1984-11-01T18:33:18-05:00", + "end": "1984-11-01T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/1ef68686-363d-481e-93a0-29a8608ddb96", + "resource": { + "resourceType": "Observation", + "id": "1ef68686-363d-481e-93a0-29a8608ddb96", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/79cbf8f3-2c37-40d8-8696-90c60819bf62" + }, + "effectiveDateTime": "1984-11-01T18:33:18-05:00", + "issued": "1984-11-01T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/47c6dc67-ff88-410a-91e0-b0371c50f8c8", + "resource": { + "resourceType": "Encounter", + "id": "47c6dc67-ff88-410a-91e0-b0371c50f8c8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "b4a06baa-0bff-7e7a-64fa-0f5d82403d81" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1985-03-28T18:33:18-05:00", + "end": "1985-03-28T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1985-03-28T18:33:18-05:00", + "end": "1985-03-28T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a65c91f7-c624-41f9-ab99-e4aedfed16dd", + "resource": { + "resourceType": "Observation", + "id": "a65c91f7-c624-41f9-ab99-e4aedfed16dd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/47c6dc67-ff88-410a-91e0-b0371c50f8c8" + }, + "effectiveDateTime": "1985-03-28T18:33:18-05:00", + "issued": "1985-03-28T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/8e9a596a-18ed-4cf2-ab71-67c7cef23fdd", + "resource": { + "resourceType": "Procedure", + "id": "8e9a596a-18ed-4cf2-ab71-67c7cef23fdd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/47c6dc67-ff88-410a-91e0-b0371c50f8c8" + }, + "performedPeriod": { + "start": "1985-03-28T18:33:18-05:00", + "end": "1985-03-28T18:48:18-05:00" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/485144a3-62c9-4b5c-bb1b-e45c5f238686", + "resource": { + "resourceType": "Encounter", + "id": "485144a3-62c9-4b5c-bb1b-e45c5f238686", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d052961a-a992-93ee-35a1-1acb1e07e62d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1986-04-03T18:33:18-05:00", + "end": "1986-04-03T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1986-04-03T18:33:18-05:00", + "end": "1986-04-03T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/6933f9e9-58df-4c66-a8f4-87dd467ea245", + "resource": { + "resourceType": "Observation", + "id": "6933f9e9-58df-4c66-a8f4-87dd467ea245", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/485144a3-62c9-4b5c-bb1b-e45c5f238686" + }, + "effectiveDateTime": "1986-04-03T18:33:18-05:00", + "issued": "1986-04-03T18:33:18.715-05:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/0ac535c1-9c2d-4b92-8282-5df291b200b0", + "resource": { + "resourceType": "DiagnosticReport", + "id": "0ac535c1-9c2d-4b92-8282-5df291b200b0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/485144a3-62c9-4b5c-bb1b-e45c5f238686" + }, + "effectiveDateTime": "1986-04-03T18:33:18-05:00", + "issued": "1986-04-03T18:33:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5ODYtMDQtMDMKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNDUgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/6324358d-7790-4eab-a59a-ee9eced3dc6d", + "resource": { + "resourceType": "DocumentReference", + "id": "6324358d-7790-4eab-a59a-ee9eced3dc6d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:0575ecb5-76a1-f8a9-baa8-33fcfe39568c" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1986-04-03T18:33:18.715-05:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5ODYtMDQtMDMKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNDUgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/485144a3-62c9-4b5c-bb1b-e45c5f238686" + } + ], + "period": { + "start": "1986-04-03T18:33:18-05:00", + "end": "1986-04-03T18:48:18-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/c75beb06-534b-4908-8e5a-27b7a9f895a8", + "resource": { + "resourceType": "Encounter", + "id": "c75beb06-534b-4908-8e5a-27b7a9f895a8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "61550b07-2619-a9e3-4bcb-1a0734d53e62" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1987-04-09T19:33:18-04:00", + "end": "1987-04-09T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1987-04-09T19:33:18-04:00", + "end": "1987-04-09T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/45766ce3-1034-4d07-a295-60f70d8a555b", + "resource": { + "resourceType": "Observation", + "id": "45766ce3-1034-4d07-a295-60f70d8a555b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c75beb06-534b-4908-8e5a-27b7a9f895a8" + }, + "effectiveDateTime": "1987-04-09T19:33:18-04:00", + "issued": "1987-04-09T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/64b8d0fc-c973-4c78-b8ad-bf9612cda746", + "resource": { + "resourceType": "Encounter", + "id": "64b8d0fc-c973-4c78-b8ad-bf9612cda746", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "7205f3b3-1b07-e61d-616a-607cd36c25ef" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1988-04-14T19:33:18-04:00", + "end": "1988-04-14T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1988-04-14T19:33:18-04:00", + "end": "1988-04-14T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/48c588f9-94a9-46bd-98e9-5b4d6b56c78d", + "resource": { + "resourceType": "Observation", + "id": "48c588f9-94a9-46bd-98e9-5b4d6b56c78d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/64b8d0fc-c973-4c78-b8ad-bf9612cda746" + }, + "effectiveDateTime": "1988-04-14T19:33:18-04:00", + "issued": "1988-04-14T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/761f6a0e-7cf8-433d-9151-79780866ed8c", + "resource": { + "resourceType": "Encounter", + "id": "761f6a0e-7cf8-433d-9151-79780866ed8c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "17d8e5c3-f0af-2922-d54b-b94daec29aa4" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1989-04-20T19:33:18-04:00", + "end": "1989-04-20T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1989-04-20T19:33:18-04:00", + "end": "1989-04-20T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e2b0a9ed-1dba-42b3-9b1e-4beb815f816a", + "resource": { + "resourceType": "Observation", + "id": "e2b0a9ed-1dba-42b3-9b1e-4beb815f816a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/761f6a0e-7cf8-433d-9151-79780866ed8c" + }, + "effectiveDateTime": "1989-04-20T19:33:18-04:00", + "issued": "1989-04-20T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/c07821a4-4da0-44fa-b15c-2daa67c4a09b", + "resource": { + "resourceType": "Immunization", + "id": "c07821a4-4da0-44fa-b15c-2daa67c4a09b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/761f6a0e-7cf8-433d-9151-79780866ed8c" + }, + "occurrenceDateTime": "1989-04-20T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b2ac5712-6e6d-495b-8ade-1275d45bdd91", + "resource": { + "resourceType": "Encounter", + "id": "b2ac5712-6e6d-495b-8ade-1275d45bdd91", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "687ac2bd-05d3-5b39-870e-62ed3017bf59" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1990-04-26T19:33:18-04:00", + "end": "1990-04-26T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1990-04-26T19:33:18-04:00", + "end": "1990-04-26T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/942a0fd1-b1da-49b5-a1ed-57531b5445bf", + "resource": { + "resourceType": "Observation", + "id": "942a0fd1-b1da-49b5-a1ed-57531b5445bf", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b2ac5712-6e6d-495b-8ade-1275d45bdd91" + }, + "effectiveDateTime": "1990-04-26T19:33:18-04:00", + "issued": "1990-04-26T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1c350b7c-4b16-47d1-bb62-e4ca9619c104", + "resource": { + "resourceType": "Encounter", + "id": "1c350b7c-4b16-47d1-bb62-e4ca9619c104", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "4a517c85-3037-81c2-9266-47f5c0f98f70" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1991-05-02T19:33:18-04:00", + "end": "1991-05-02T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1991-05-02T19:33:18-04:00", + "end": "1991-05-02T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b5e71495-97ef-419d-bb3c-5dd88725daa8", + "resource": { + "resourceType": "Observation", + "id": "b5e71495-97ef-419d-bb3c-5dd88725daa8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1c350b7c-4b16-47d1-bb62-e4ca9619c104" + }, + "effectiveDateTime": "1991-05-02T19:33:18-04:00", + "issued": "1991-05-02T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/28a7cf00-ff10-4aec-8264-ed4c9b6b4ad4", + "resource": { + "resourceType": "Immunization", + "id": "28a7cf00-ff10-4aec-8264-ed4c9b6b4ad4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1c350b7c-4b16-47d1-bb62-e4ca9619c104" + }, + "occurrenceDateTime": "1991-05-02T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/04cd13ed-6859-4a17-ac76-d644b1e7339e", + "resource": { + "resourceType": "DiagnosticReport", + "id": "04cd13ed-6859-4a17-ac76-d644b1e7339e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1c350b7c-4b16-47d1-bb62-e4ca9619c104" + }, + "effectiveDateTime": "1991-05-02T19:33:18-04:00", + "issued": "1991-05-02T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5OTEtMDUtMDIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTAgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/d19850b4-cf69-4844-a94b-661068464209", + "resource": { + "resourceType": "DocumentReference", + "id": "d19850b4-cf69-4844-a94b-661068464209", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:8300c2c2-b4cc-bab0-5386-064f28707290" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1991-05-02T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5OTEtMDUtMDIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTAgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/1c350b7c-4b16-47d1-bb62-e4ca9619c104" + } + ], + "period": { + "start": "1991-05-02T19:33:18-04:00", + "end": "1991-05-02T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/ce49d24f-5b4f-4823-9058-6b8b26d600f6", + "resource": { + "resourceType": "Encounter", + "id": "ce49d24f-5b4f-4823-9058-6b8b26d600f6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "71a6c1cb-65ef-354b-670c-26d0f2abf131" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1992-05-07T19:33:18-04:00", + "end": "1992-05-07T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1992-05-07T19:33:18-04:00", + "end": "1992-05-07T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/ed24ab16-fce5-46ef-b858-b35f58f28355", + "resource": { + "resourceType": "Observation", + "id": "ed24ab16-fce5-46ef-b858-b35f58f28355", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/ce49d24f-5b4f-4823-9058-6b8b26d600f6" + }, + "effectiveDateTime": "1992-05-07T19:33:18-04:00", + "issued": "1992-05-07T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/bedb37c7-73ae-4332-86b9-a7d3d73ecab2", + "resource": { + "resourceType": "Procedure", + "id": "bedb37c7-73ae-4332-86b9-a7d3d73ecab2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/ce49d24f-5b4f-4823-9058-6b8b26d600f6" + }, + "performedPeriod": { + "start": "1992-05-07T19:33:18-04:00", + "end": "1992-05-07T19:48:18-04:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/4475bf2f-c407-4eb4-9963-d54421a266e2", + "resource": { + "resourceType": "Encounter", + "id": "4475bf2f-c407-4eb4-9963-d54421a266e2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "300673a0-badb-ab00-c110-70c9ba1e3f6c" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1993-05-13T19:33:18-04:00", + "end": "1993-05-13T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1993-05-13T19:33:18-04:00", + "end": "1993-05-13T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/e3ac022b-ea92-4d1a-89ac-8ca08acbba57", + "resource": { + "resourceType": "Observation", + "id": "e3ac022b-ea92-4d1a-89ac-8ca08acbba57", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4475bf2f-c407-4eb4-9963-d54421a266e2" + }, + "effectiveDateTime": "1993-05-13T19:33:18-04:00", + "issued": "1993-05-13T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/ea2b85a8-42fd-4271-8759-91bc8a0a2b55", + "resource": { + "resourceType": "Immunization", + "id": "ea2b85a8-42fd-4271-8759-91bc8a0a2b55", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4475bf2f-c407-4eb4-9963-d54421a266e2" + }, + "occurrenceDateTime": "1993-05-13T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25", + "resource": { + "resourceType": "Encounter", + "id": "9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "9030cedd-7de1-9f69-89c5-9968cc4c2789" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1994-05-19T19:33:18-04:00", + "end": "1994-05-19T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1994-05-19T19:33:18-04:00", + "end": "1994-05-19T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b8de16a5-486e-4e37-a3fd-b634a918e290", + "resource": { + "resourceType": "Observation", + "id": "b8de16a5-486e-4e37-a3fd-b634a918e290", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bp", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "85354-9", + "display": "Blood pressure panel with all children optional" + }, + { + "system": "http://loinc.org", + "code": "96607-7", + "display": "Blood pressure panel mean systolic and mean diastolic" + } + ], + "text": "Blood pressure panel with all children optional" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25" + }, + "effectiveDateTime": "1994-05-19T19:33:18-04:00", + "issued": "1994-05-19T19:33:18.715-04:00", + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + }, + { + "system": "http://loinc.org", + "code": "96609-3", + "display": "Diastolic blood pressure mean" + } + ], + "text": "Diastolic Blood Pressure" + }, + "valueQuantity": { + "value": 85, + "unit": "mm[Hg]", + "system": "http://unitsofmeasure.org", + "code": "mm[Hg]" + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic Blood Pressure" + }, + { + "system": "http://loinc.org", + "code": "96608-5", + "display": "Systolic blood pressure mean" + } + ], + "text": "Systolic Blood Pressure" + }, + "valueQuantity": { + "value": 129, + "unit": "mm[Hg]", + "system": "http://unitsofmeasure.org", + "code": "mm[Hg]" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/2a2ff35a-9cda-4ff8-9404-d61e796f256c", + "resource": { + "resourceType": "Observation", + "id": "2a2ff35a-9cda-4ff8-9404-d61e796f256c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bp", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "85354-9", + "display": "Blood pressure panel with all children optional" + }, + { + "system": "http://loinc.org", + "code": "96607-7", + "display": "Blood pressure panel mean systolic and mean diastolic" + } + ], + "text": "Blood pressure panel with all children optional" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25" + }, + "effectivePeriod": { + "start": "1994-05-19T19:33:18-04:00" + }, + "issued": "1994-05-19T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + }, + { + "system": "http://loinc.org", + "code": "96609-3", + "display": "Diastolic blood pressure mean" + } + ], + "text": "Diastolic Blood Pressure" + }, + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic Blood Pressure" + }, + { + "system": "http://loinc.org", + "code": "96608-5", + "display": "Systolic blood pressure mean" + } + ], + "text": "Systolic Blood Pressure" + }, + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c68e98f6-39e8-4df6-85fe-4457b26d2a5f", + "resource": { + "resourceType": "Observation", + "id": "c68e98f6-39e8-4df6-85fe-4457b26d2a5f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25" + }, + "effectiveDateTime": "1994-05-19T19:33:18-04:00", + "issued": "1994-05-19T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/882f0954-47a9-47dc-86b8-27095ce9e4e2", + "resource": { + "resourceType": "Encounter", + "id": "882f0954-47a9-47dc-86b8-27095ce9e4e2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "1d4ad58a-49a5-2d6b-c0a1-95eba2b31726" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1995-05-25T19:33:18-04:00", + "end": "1995-05-25T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1995-05-25T19:33:18-04:00", + "end": "1995-05-25T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9816828c-b1aa-4f9b-a3a7-5cb3541b3464", + "resource": { + "resourceType": "Observation", + "id": "9816828c-b1aa-4f9b-a3a7-5cb3541b3464", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/882f0954-47a9-47dc-86b8-27095ce9e4e2" + }, + "effectiveDateTime": "1995-05-25T19:33:18-04:00", + "issued": "1995-05-25T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/bed2d0ad-8829-4897-8352-053036c3d3c5", + "resource": { + "resourceType": "Procedure", + "id": "bed2d0ad-8829-4897-8352-053036c3d3c5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/882f0954-47a9-47dc-86b8-27095ce9e4e2" + }, + "performedPeriod": { + "start": "1995-05-25T19:33:18-04:00", + "end": "1995-05-25T19:48:18-04:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/7912781b-9984-42cb-86b9-ed6e2e38018e", + "resource": { + "resourceType": "Encounter", + "id": "7912781b-9984-42cb-86b9-ed6e2e38018e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "85731e45-d14f-54e4-01df-7c16e9b99a38" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up" + } + ], + "text": "Encounter for check up" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1995-09-05T19:59:18-04:00", + "end": "1995-09-05T20:37:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1995-09-05T19:59:18-04:00", + "end": "1995-09-05T20:37:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/236a970e-9931-4367-b270-cdf739f2608f", + "resource": { + "resourceType": "Condition", + "id": "236a970e-9931-4367-b270-cdf739f2608f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "68496003", + "display": "Polyp of colon" + } + ], + "text": "Polyp of colon" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7912781b-9984-42cb-86b9-ed6e2e38018e" + }, + "onsetDateTime": "1995-09-05T20:37:18-04:00", + "abatementDateTime": "1996-10-29T20:21:18-05:00", + "recordedDate": "1995-09-05T20:37:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/e105b3cf-9261-4089-aad9-9df6bba4f1e7", + "resource": { + "resourceType": "DiagnosticReport", + "id": "e105b3cf-9261-4089-aad9-9df6bba4f1e7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7912781b-9984-42cb-86b9-ed6e2e38018e" + }, + "effectiveDateTime": "1995-09-05T19:59:18-04:00", + "issued": "1995-09-05T19:59:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5OTUtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTUgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBwb2x5cCBvZiBjb2xvbi4gCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gY29sb25vc2NvcHkKLSBzY3JlZW5pbmcgZm9yIG9jY3VsdCBibG9vZCBpbiBmZWNlcyAocHJvY2VkdXJlKQotIHJlY3RhbCBwb2x5cGVjdG9teQo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/2af2c09c-5fef-4259-85ee-d6cd4902c64b", + "resource": { + "resourceType": "DocumentReference", + "id": "2af2c09c-5fef-4259-85ee-d6cd4902c64b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:4cc6d495-3d44-91bf-3fc8-f6209324e66b" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1995-09-05T19:59:18.715-04:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5OTUtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTUgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBBZXRuYS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyBwcmVkbmlzb25lIDUgbWcgb3JhbCB0YWJsZXQ7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgpQYXRpZW50IGlzIHByZXNlbnRpbmcgd2l0aCBwb2x5cCBvZiBjb2xvbi4gCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gY29sb25vc2NvcHkKLSBzY3JlZW5pbmcgZm9yIG9jY3VsdCBibG9vZCBpbiBmZWNlcyAocHJvY2VkdXJlKQotIHJlY3RhbCBwb2x5cGVjdG9teQo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/7912781b-9984-42cb-86b9-ed6e2e38018e" + } + ], + "period": { + "start": "1995-09-05T19:59:18-04:00", + "end": "1995-09-05T20:37:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/3deae24e-43da-40a7-aed0-42cb72b42229", + "resource": { + "resourceType": "Encounter", + "id": "3deae24e-43da-40a7-aed0-42cb72b42229", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f70c4183-cbea-f004-956b-7c7b55ee81b8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1996-05-30T19:33:18-04:00", + "end": "1996-05-30T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1996-05-30T19:33:18-04:00", + "end": "1996-05-30T19:48:18-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/084fdc27-b2f8-44bd-9f01-ce6c878d48bd", + "resource": { + "resourceType": "Observation", + "id": "084fdc27-b2f8-44bd-9f01-ce6c878d48bd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/3deae24e-43da-40a7-aed0-42cb72b42229" + }, + "effectiveDateTime": "1996-05-30T19:33:18-04:00", + "issued": "1996-05-30T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/b856fe02-a057-4455-aefe-b4853b256771", + "resource": { + "resourceType": "MedicationRequest", + "id": "b856fe02-a057-4455-aefe-b4853b256771", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "895994", + "display": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/3deae24e-43da-40a7-aed0-42cb72b42229" + }, + "authoredOn": "1996-05-30T19:33:18-04:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/034cd42a-e3a0-4ec6-844e-42bb0b5490c7", + "resource": { + "resourceType": "Immunization", + "id": "034cd42a-e3a0-4ec6-844e-42bb0b5490c7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/3deae24e-43da-40a7-aed0-42cb72b42229" + }, + "occurrenceDateTime": "1996-05-30T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/2c0dc527-f6bd-4e48-9768-8948da60ee21", + "resource": { + "resourceType": "Encounter", + "id": "2c0dc527-f6bd-4e48-9768-8948da60ee21", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "bd5d8ff2-cd62-9b03-eecc-8ea6c5b9f2b9" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1997-06-05T19:33:18-04:00", + "end": "1997-06-05T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1997-06-05T19:33:18-04:00", + "end": "1997-06-05T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4228a6ad-b705-4e3f-90d4-a6f680876335", + "resource": { + "resourceType": "Observation", + "id": "4228a6ad-b705-4e3f-90d4-a6f680876335", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2c0dc527-f6bd-4e48-9768-8948da60ee21" + }, + "effectiveDateTime": "1997-06-05T19:33:18-04:00", + "issued": "1997-06-05T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/624929fb-5d50-4283-98aa-ecdf42dc6114", + "resource": { + "resourceType": "Encounter", + "id": "624929fb-5d50-4283-98aa-ecdf42dc6114", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "f7c32b3d-1c02-e877-50ca-ba607e2ab3f8" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1998-06-11T19:33:18-04:00", + "end": "1998-06-11T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1998-06-11T19:33:18-04:00", + "end": "1998-06-11T19:48:18-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/6ac9434b-84cb-4696-91bc-b974a572e434", + "resource": { + "resourceType": "Observation", + "id": "6ac9434b-84cb-4696-91bc-b974a572e434", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/624929fb-5d50-4283-98aa-ecdf42dc6114" + }, + "effectiveDateTime": "1998-06-11T19:33:18-04:00", + "issued": "1998-06-11T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/b25b96a8-c09e-407a-b393-139580ac5b11", + "resource": { + "resourceType": "MedicationRequest", + "id": "b25b96a8-c09e-407a-b393-139580ac5b11", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/624929fb-5d50-4283-98aa-ecdf42dc6114" + }, + "authoredOn": "1998-06-11T19:33:18-04:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/68ef9abe-dffc-415e-b30c-8f0627fed8eb", + "resource": { + "resourceType": "Encounter", + "id": "68ef9abe-dffc-415e-b30c-8f0627fed8eb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "76f074da-95fc-2357-a8ef-6fd83cf61503" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "702927004", + "display": "Urgent care clinic" + } + ], + "text": "Urgent care clinic" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1999-04-01T18:33:18-05:00", + "end": "1999-04-01T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "display": "Dr. Sammie902 DuBuque211" + } + } + ], + "period": { + "start": "1999-04-01T18:33:18-05:00", + "end": "1999-04-01T18:48:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + } + ], + "serviceProvider": { + "reference": "Organization/b293761b-00ce-4fee-b608-6c5eb0f45447", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/06722418-90a1-4bdc-ba14-843cf07027eb", + "resource": { + "resourceType": "DiagnosticReport", + "id": "06722418-90a1-4bdc-ba14-843cf07027eb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/68ef9abe-dffc-415e-b30c-8f0627fed8eb" + }, + "effectiveDateTime": "1999-04-01T18:33:18-05:00", + "issued": "1999-04-01T18:33:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "display": "Dr. Sammie902 DuBuque211" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5OTktMDQtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUuIAo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/233f8c4a-82d1-40c0-9807-52771c0b308b", + "resource": { + "resourceType": "DocumentReference", + "id": "233f8c4a-82d1-40c0-9807-52771c0b308b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:2aa5e0ce-9549-5832-6195-837cc85438c4" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1999-04-01T18:33:18.715-05:00", + "author": [ + { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "display": "Dr. Sammie902 DuBuque211" + } + ], + "custodian": { + "reference": "Organization/b293761b-00ce-4fee-b608-6c5eb0f45447", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5OTktMDQtMDEKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUuIAo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/68ef9abe-dffc-415e-b30c-8f0627fed8eb" + } + ], + "period": { + "start": "1999-04-01T18:33:18-05:00", + "end": "1999-04-01T18:48:18-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/fdd10a40-0acf-4828-8818-6a8377d9d111", + "resource": { + "resourceType": "Encounter", + "id": "fdd10a40-0acf-4828-8818-6a8377d9d111", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "2ba8ed00-9af5-d358-cd81-30370690bbab" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1999-03-28T18:33:18-05:00", + "end": "1999-03-28T18:48:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1999-03-28T18:33:18-05:00", + "end": "1999-03-28T18:48:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/be92fbf2-0e03-4133-a2ab-bb79348919f6", + "resource": { + "resourceType": "Condition", + "id": "be92fbf2-0e03-4133-a2ab-bb79348919f6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/fdd10a40-0acf-4828-8818-6a8377d9d111" + }, + "onsetDateTime": "1999-03-28T18:33:18-05:00", + "abatementDateTime": "1999-04-18T19:33:18-04:00", + "recordedDate": "1999-03-28T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/9db2c386-e7eb-40fd-b228-708005b1fbe6", + "resource": { + "resourceType": "DiagnosticReport", + "id": "9db2c386-e7eb-40fd-b228-708005b1fbe6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/fdd10a40-0acf-4828-8818-6a8377d9d111" + }, + "effectiveDateTime": "1999-03-28T18:33:18-05:00", + "issued": "1999-03-28T18:33:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5OTktMDMtMjgKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuIAoKIyMgUGxhbgoK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/698d0694-5f3d-42cb-9180-81e147d17ba6", + "resource": { + "resourceType": "DocumentReference", + "id": "698d0694-5f3d-42cb-9180-81e147d17ba6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:d0da63fd-f329-7626-bff5-4bd4269e1854" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1999-03-28T18:33:18.715-05:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5OTktMDMtMjgKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlcikuIAoKIyMgUGxhbgoK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/fdd10a40-0acf-4828-8818-6a8377d9d111" + } + ], + "period": { + "start": "1999-03-28T18:33:18-05:00", + "end": "1999-03-28T18:48:18-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/0628881a-61b5-4aeb-8284-280b5427707f", + "resource": { + "resourceType": "Encounter", + "id": "0628881a-61b5-4aeb-8284-280b5427707f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "8663be7a-0c56-dcfe-43d0-33f1c28d7bcf" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ], + "text": "Encounter for check up (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1999-04-08T19:33:18-04:00", + "end": "1999-04-08T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "1999-04-08T19:33:18-04:00", + "end": "1999-04-08T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/21d284d3-1223-42c1-8fff-c1f40b5152e9", + "resource": { + "resourceType": "Observation", + "id": "21d284d3-1223-42c1-8fff-c1f40b5152e9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0628881a-61b5-4aeb-8284-280b5427707f" + }, + "effectiveDateTime": "1999-04-08T19:33:18-04:00", + "issued": "1999-04-08T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/77acef96-2e2c-49d3-8b15-16d64ef2b02b", + "resource": { + "resourceType": "DiagnosticReport", + "id": "77acef96-2e2c-49d3-8b15-16d64ef2b02b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0628881a-61b5-4aeb-8284-280b5427707f" + }, + "effectiveDateTime": "1999-04-08T19:33:18-04:00", + "issued": "1999-04-08T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjE5OTktMDQtMDgKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gbWVkaWNhdGlvbiByZWNvbmNpbGlhdGlvbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIKLSBuZGEwMjA1MDMgMjAwIGFjdHVhdCBhbGJ1dGVyb2wgMC4wOSBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/390f4b9f-9623-4561-a76b-32f4bc4a833d", + "resource": { + "resourceType": "DocumentReference", + "id": "390f4b9f-9623-4561-a76b-32f4bc4a833d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:560151d9-3ebe-a261-ae62-9fe3370b433f" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "1999-04-08T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjE5OTktMDQtMDgKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTggeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gbWVkaWNhdGlvbiByZWNvbmNpbGlhdGlvbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIKLSBuZGEwMjA1MDMgMjAwIGFjdHVhdCBhbGJ1dGVyb2wgMC4wOSBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/0628881a-61b5-4aeb-8284-280b5427707f" + } + ], + "period": { + "start": "1999-04-08T19:33:18-04:00", + "end": "1999-04-08T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/59c8a06b-d4cf-4359-b041-4838af360e26", + "resource": { + "resourceType": "Encounter", + "id": "59c8a06b-d4cf-4359-b041-4838af360e26", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d9b1df48-ec8e-0663-3322-4b69d1bb63f4" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "1999-06-17T19:33:18-04:00", + "end": "1999-06-17T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "1999-06-17T19:33:18-04:00", + "end": "1999-06-17T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/0e209bce-e042-4f6b-9c20-213356adbf88", + "resource": { + "resourceType": "Observation", + "id": "0e209bce-e042-4f6b-9c20-213356adbf88", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/59c8a06b-d4cf-4359-b041-4838af360e26" + }, + "effectiveDateTime": "1999-06-17T19:33:18-04:00", + "issued": "1999-06-17T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/dfa71d7a-1aa1-4777-beda-0a35bceb18cb", + "resource": { + "resourceType": "Encounter", + "id": "dfa71d7a-1aa1-4777-beda-0a35bceb18cb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a2a0b376-8995-b937-2cfa-4ab8c839723e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410429000", + "display": "Cardiac Arrest" + } + ], + "text": "Cardiac Arrest" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2000-03-23T18:33:18-05:00", + "end": "2000-03-23T19:33:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2000-03-23T18:33:18-05:00", + "end": "2000-03-23T19:33:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/f375b68a-1ef0-44ff-8dca-a82e4d052ddb", + "resource": { + "resourceType": "Condition", + "id": "f375b68a-1ef0-44ff-8dca-a82e4d052ddb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410429000", + "display": "Cardiac Arrest" + } + ], + "text": "Cardiac Arrest" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/dfa71d7a-1aa1-4777-beda-0a35bceb18cb" + }, + "onsetDateTime": "2000-03-23T18:33:18-05:00", + "recordedDate": "2000-03-23T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/b1518130-81ab-4f62-8753-0234a6031d19", + "resource": { + "resourceType": "Procedure", + "id": "b1518130-81ab-4f62-8753-0234a6031d19", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "447365002", + "display": "Insertion of biventricular implantable cardioverter defibrillator" + } + ], + "text": "Insertion of biventricular implantable cardioverter defibrillator" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/dfa71d7a-1aa1-4777-beda-0a35bceb18cb" + }, + "performedPeriod": { + "start": "2000-03-23T18:33:18-05:00", + "end": "2000-03-23T18:48:18-05:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + }, + "reasonReference": [ + { + "reference": "Condition/f375b68a-1ef0-44ff-8dca-a82e4d052ddb", + "display": "Cardiac Arrest" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Device/b14f1d62-8890-4813-8c27-f3f2540fbfb0", + "resource": { + "resourceType": "Device", + "id": "b14f1d62-8890-4813-8c27-f3f2540fbfb0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-implantable-device" + ] + }, + "udiCarrier": [ + { + "deviceIdentifier": "43069338026389", + "carrierHRF": "(01)43069338026389(11)000302(17)250317(10)1134(21)842026117977" + } + ], + "status": "active", + "distinctIdentifier": "43069338026389", + "manufactureDate": "2000-03-02T18:33:18-05:00", + "expirationDate": "2025-03-17T19:33:18-04:00", + "lotNumber": "1134", + "serialNumber": "842026117977", + "deviceName": [ + { + "name": "Implantable defibrillator, device (physical object)", + "type": "user-friendly-name" + } + ], + "type": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "72506001", + "display": "Implantable defibrillator, device (physical object)" + } + ], + "text": "Implantable defibrillator, device (physical object)" + }, + "patient": { + "reference": "Patient/355" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/2fccd652-80bd-4072-af74-e97ecb1c2fe7", + "resource": { + "resourceType": "DiagnosticReport", + "id": "2fccd652-80bd-4072-af74-e97ecb1c2fe7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/dfa71d7a-1aa1-4777-beda-0a35bceb18cb" + }, + "effectiveDateTime": "2000-03-23T18:33:18-05:00", + "issued": "2000-03-23T18:33:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMDAtMDMtMjMKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTkgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggY2FyZGlhYyBhcnJlc3QsIGhpc3Rvcnkgb2YgY2FyZGlhYyBhcnJlc3QgKHNpdHVhdGlvbikuIAoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIGVjaG9jYXJkaW9ncmFwaHkgKHByb2NlZHVyZSkKLSBpbnNlcnRpb24gb2YgYml2ZW50cmljdWxhciBpbXBsYW50YWJsZSBjYXJkaW92ZXJ0ZXIgZGVmaWJyaWxsYXRvcgotIGNhdGhldGVyIGFibGF0aW9uIG9mIHRpc3N1ZSBvZiBoZWFydApUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEgbWwgZXBpbmVwaHJpbmUgMSBtZy9tbCBpbmplY3Rpb24KLSAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2UKLSBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/141f625d-12e0-4b85-88b0-013ce928f003", + "resource": { + "resourceType": "DocumentReference", + "id": "141f625d-12e0-4b85-88b0-013ce928f003", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:bb3339cc-6f1f-6b5d-9426-bd8436ad363f" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2000-03-23T18:33:18.715-05:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMDAtMDMtMjMKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNTkgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgQWV0bmEuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggY2FyZGlhYyBhcnJlc3QsIGhpc3Rvcnkgb2YgY2FyZGlhYyBhcnJlc3QgKHNpdHVhdGlvbikuIAoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIGVjaG9jYXJkaW9ncmFwaHkgKHByb2NlZHVyZSkKLSBpbnNlcnRpb24gb2YgYml2ZW50cmljdWxhciBpbXBsYW50YWJsZSBjYXJkaW92ZXJ0ZXIgZGVmaWJyaWxsYXRvcgotIGNhdGhldGVyIGFibGF0aW9uIG9mIHRpc3N1ZSBvZiBoZWFydApUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEgbWwgZXBpbmVwaHJpbmUgMSBtZy9tbCBpbmplY3Rpb24KLSAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2UKLSBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/dfa71d7a-1aa1-4777-beda-0a35bceb18cb" + } + ], + "period": { + "start": "2000-03-23T18:33:18-05:00", + "end": "2000-03-23T19:33:18-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/85c6f2af-eeb1-4466-b407-814efc47a8bb", + "resource": { + "resourceType": "Encounter", + "id": "85c6f2af-eeb1-4466-b407-814efc47a8bb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "8afa8d88-4d62-9cd1-618a-33ca788f55eb" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2000-06-22T19:33:18-04:00", + "end": "2000-06-22T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2000-06-22T19:33:18-04:00", + "end": "2000-06-22T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/49f0a147-4fdf-43a4-89a4-301c7cba1519", + "resource": { + "resourceType": "Observation", + "id": "49f0a147-4fdf-43a4-89a4-301c7cba1519", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/85c6f2af-eeb1-4466-b407-814efc47a8bb" + }, + "effectiveDateTime": "2000-06-22T19:33:18-04:00", + "issued": "2000-06-22T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/99699734-78b1-47a5-a36b-0676bbc131ef", + "resource": { + "resourceType": "Encounter", + "id": "99699734-78b1-47a5-a36b-0676bbc131ef", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "6457bf87-ae5d-2657-c861-fc4d4987fe71" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2001-06-28T19:33:18-04:00", + "end": "2001-06-28T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2001-06-28T19:33:18-04:00", + "end": "2001-06-28T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a025c7bd-8c53-4321-bb5d-5affe04482a9", + "resource": { + "resourceType": "Observation", + "id": "a025c7bd-8c53-4321-bb5d-5affe04482a9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/99699734-78b1-47a5-a36b-0676bbc131ef" + }, + "effectiveDateTime": "2001-06-28T19:33:18-04:00", + "issued": "2001-06-28T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/f9b63e94-63df-4857-a024-44c56620299a", + "resource": { + "resourceType": "Immunization", + "id": "f9b63e94-63df-4857-a024-44c56620299a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/99699734-78b1-47a5-a36b-0676bbc131ef" + }, + "occurrenceDateTime": "2001-06-28T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/1abbd548-f921-4ca8-bbb5-ba44ca33b830", + "resource": { + "resourceType": "Encounter", + "id": "1abbd548-f921-4ca8-bbb5-ba44ca33b830", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ef2e4855-cf09-7250-65e8-9febe137a9ea" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2002-07-04T19:33:18-04:00", + "end": "2002-07-04T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2002-07-04T19:33:18-04:00", + "end": "2002-07-04T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/eab0a149-35b0-47fb-a280-3b792be983cb", + "resource": { + "resourceType": "Observation", + "id": "eab0a149-35b0-47fb-a280-3b792be983cb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1abbd548-f921-4ca8-bbb5-ba44ca33b830" + }, + "effectiveDateTime": "2002-07-04T19:33:18-04:00", + "issued": "2002-07-04T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/9bd44f61-7cc3-41e5-a479-836473985655", + "resource": { + "resourceType": "Immunization", + "id": "9bd44f61-7cc3-41e5-a479-836473985655", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "113", + "display": "Td (adult), 5 Lf tetanus toxoid, preservative free, adsorbed" + } + ], + "text": "Td (adult), 5 Lf tetanus toxoid, preservative free, adsorbed" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/1abbd548-f921-4ca8-bbb5-ba44ca33b830" + }, + "occurrenceDateTime": "2002-07-04T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f4ca7306-536d-4a44-8c9c-88b7e0bdb5d1", + "resource": { + "resourceType": "Encounter", + "id": "f4ca7306-536d-4a44-8c9c-88b7e0bdb5d1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "c3201ea9-74c6-a014-7952-c158d75deb7c" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2003-07-10T19:33:18-04:00", + "end": "2003-07-10T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2003-07-10T19:33:18-04:00", + "end": "2003-07-10T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a764f2d3-6ef0-4d47-9992-8f1d30f9b05d", + "resource": { + "resourceType": "Observation", + "id": "a764f2d3-6ef0-4d47-9992-8f1d30f9b05d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-heart-rate" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8867-4", + "display": "Heart rate" + } + ], + "text": "Heart rate" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f4ca7306-536d-4a44-8c9c-88b7e0bdb5d1" + }, + "effectiveDateTime": "2003-07-10T19:33:18-04:00", + "issued": "2003-07-10T19:33:18.715-04:00", + "valueQuantity": { + "value": 65, + "unit": "/min", + "system": "http://unitsofmeasure.org", + "code": "/min" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/769a81c5-32ee-427e-b35e-fcfcbbebae14", + "resource": { + "resourceType": "Observation", + "id": "769a81c5-32ee-427e-b35e-fcfcbbebae14", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f4ca7306-536d-4a44-8c9c-88b7e0bdb5d1" + }, + "effectiveDateTime": "2003-07-10T19:33:18-04:00", + "issued": "2003-07-10T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/53c77ae1-f76a-4157-b576-79604c83f5b6", + "resource": { + "resourceType": "Encounter", + "id": "53c77ae1-f76a-4157-b576-79604c83f5b6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ac5b2c82-4bee-11e8-48ac-4efa474503a3" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2004-07-15T19:33:18-04:00", + "end": "2004-07-15T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2004-07-15T19:33:18-04:00", + "end": "2004-07-15T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c71e5b55-da93-483f-9e7a-5ef69f685a49", + "resource": { + "resourceType": "Observation", + "id": "c71e5b55-da93-483f-9e7a-5ef69f685a49", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/53c77ae1-f76a-4157-b576-79604c83f5b6" + }, + "effectiveDateTime": "2004-07-15T19:33:18-04:00", + "issued": "2004-07-15T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/08406a81-e790-4397-bb64-5b90d23947ad", + "resource": { + "resourceType": "Immunization", + "id": "08406a81-e790-4397-bb64-5b90d23947ad", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/53c77ae1-f76a-4157-b576-79604c83f5b6" + }, + "occurrenceDateTime": "2004-07-15T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/f4f29fb9-7b60-4288-b35b-88adedfc51ab", + "resource": { + "resourceType": "Encounter", + "id": "f4f29fb9-7b60-4288-b35b-88adedfc51ab", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "0902fc1b-7e52-d643-ec3c-595d21b1568e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2005-07-21T19:33:18-04:00", + "end": "2005-07-21T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2005-07-21T19:33:18-04:00", + "end": "2005-07-21T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/57e2cde7-e7ae-4c61-b528-8ae3e6b19c3e", + "resource": { + "resourceType": "Observation", + "id": "57e2cde7-e7ae-4c61-b528-8ae3e6b19c3e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f4f29fb9-7b60-4288-b35b-88adedfc51ab" + }, + "effectiveDateTime": "2005-07-21T19:33:18-04:00", + "issued": "2005-07-21T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/12b3e386-b1c1-402c-b319-ba5f3f60a13e", + "resource": { + "resourceType": "Encounter", + "id": "12b3e386-b1c1-402c-b319-ba5f3f60a13e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "98ab4de4-ce33-1eef-4bbc-758ecaa4b4fe" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2006-07-27T19:33:18-04:00", + "end": "2006-07-27T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2006-07-27T19:33:18-04:00", + "end": "2006-07-27T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/2c10419a-a5ec-42a6-829f-b8eba3641ef6", + "resource": { + "resourceType": "Observation", + "id": "2c10419a-a5ec-42a6-829f-b8eba3641ef6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/12b3e386-b1c1-402c-b319-ba5f3f60a13e" + }, + "effectiveDateTime": "2006-07-27T19:33:18-04:00", + "issued": "2006-07-27T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/5939a732-b45e-4cdd-9b8d-a22f846e4fac", + "resource": { + "resourceType": "Immunization", + "id": "5939a732-b45e-4cdd-9b8d-a22f846e4fac", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/12b3e386-b1c1-402c-b319-ba5f3f60a13e" + }, + "occurrenceDateTime": "2006-07-27T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/65261ba6-fb8d-4910-a3f5-3c7abcb26575", + "resource": { + "resourceType": "DiagnosticReport", + "id": "65261ba6-fb8d-4910-a3f5-3c7abcb26575", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/12b3e386-b1c1-402c-b319-ba5f3f60a13e" + }, + "effectiveDateTime": "2006-07-27T19:33:18-04:00", + "issued": "2006-07-27T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMDYtMDctMjcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjUgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUuIApUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIKLSBuZGEwMjA1MDMgMjAwIGFjdHVhdCBhbGJ1dGVyb2wgMC4wOSBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/e5e23c90-9d25-463b-a9da-888b974d5f69", + "resource": { + "resourceType": "DocumentReference", + "id": "e5e23c90-9d25-463b-a9da-888b974d5f69", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:8b70b714-b988-f901-a665-5d881c9cf623" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11506-3", + "display": "Progress note" + } + ], + "text": "Progress note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2006-07-27T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMDYtMDctMjcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjUgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUuIApUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIKLSBuZGEwMjA1MDMgMjAwIGFjdHVhdCBhbGJ1dGVyb2wgMC4wOSBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/12b3e386-b1c1-402c-b319-ba5f3f60a13e" + } + ], + "period": { + "start": "2006-07-27T19:33:18-04:00", + "end": "2006-07-27T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/150cda68-4cc4-42f1-8245-593bef449e9b", + "resource": { + "resourceType": "Encounter", + "id": "150cda68-4cc4-42f1-8245-593bef449e9b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "3eff683d-df22-2892-4749-0872e6398f8b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2006-08-20T19:33:18-04:00", + "end": "2006-08-20T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2006-08-20T19:33:18-04:00", + "end": "2006-08-20T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "239873007", + "display": "Osteoarthritis of knee" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/156c71a6-8813-4940-943c-41fae081f24a", + "resource": { + "resourceType": "Condition", + "id": "156c71a6-8813-4940-943c-41fae081f24a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "239873007", + "display": "Osteoarthritis of knee" + } + ], + "text": "Osteoarthritis of knee" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/150cda68-4cc4-42f1-8245-593bef449e9b" + }, + "onsetDateTime": "2006-08-20T19:33:18-04:00", + "recordedDate": "2006-08-20T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/bb5b4413-960e-4d8c-8622-cbef443cd9d5", + "resource": { + "resourceType": "CareTeam", + "id": "bb5b4413-960e-4d8c-8622-cbef443cd9d5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "active", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/150cda68-4cc4-42f1-8245-593bef449e9b" + }, + "period": { + "start": "2006-08-20T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "239873007", + "display": "Osteoarthritis of knee" + } + ], + "text": "Osteoarthritis of knee" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/1f9538e8-2b4c-403b-9741-420b4b564221", + "resource": { + "resourceType": "CarePlan", + "id": "1f9538e8-2b4c-403b-9741-420b4b564221", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Musculoskeletal care.
Activities:
  • Musculoskeletal care
  • Musculoskeletal care

Care plan is meant to treat Osteoarthritis of knee.
" + }, + "status": "active", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "408869004", + "display": "Musculoskeletal care" + } + ], + "text": "Musculoskeletal care" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/150cda68-4cc4-42f1-8245-593bef449e9b" + }, + "period": { + "start": "2006-08-20T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/bb5b4413-960e-4d8c-8622-cbef443cd9d5" + } + ], + "addresses": [ + { + "reference": "Condition/156c71a6-8813-4940-943c-41fae081f24a" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "386294003", + "display": "Joint mobility exercises" + } + ], + "text": "Joint mobility exercises" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266694003", + "display": "Heat therapy" + } + ], + "text": "Heat therapy" + }, + "status": "in-progress", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/7fa81288-c0f2-4c99-b1c2-4bef7635d2b1", + "resource": { + "resourceType": "Encounter", + "id": "7fa81288-c0f2-4c99-b1c2-4bef7635d2b1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "8372fe59-8826-21b3-df37-e06aa4f90bd7" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up" + } + ], + "text": "Encounter for check up" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2006-10-27T21:51:18-04:00", + "end": "2006-10-27T22:35:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2006-10-27T21:51:18-04:00", + "end": "2006-10-27T22:35:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/3439eaa9-1617-47af-a51e-3cd15c521024", + "resource": { + "resourceType": "Condition", + "id": "3439eaa9-1617-47af-a51e-3cd15c521024", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "68496003", + "display": "Polyp of colon" + } + ], + "text": "Polyp of colon" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7fa81288-c0f2-4c99-b1c2-4bef7635d2b1" + }, + "onsetDateTime": "2006-10-27T22:35:18-04:00", + "recordedDate": "2006-10-27T22:35:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/5b97414f-21b4-4158-a576-ef7c89248711", + "resource": { + "resourceType": "DiagnosticReport", + "id": "5b97414f-21b4-4158-a576-ef7c89248711", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7fa81288-c0f2-4c99-b1c2-4bef7635d2b1" + }, + "effectiveDateTime": "2006-10-27T21:51:18-04:00", + "issued": "2006-10-27T21:51:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMDYtMTAtMjcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggcG9seXAgb2YgY29sb24uIAoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIGNvbG9ub3Njb3B5Ci0gc2NyZWVuaW5nIGZvciBvY2N1bHQgYmxvb2QgaW4gZmVjZXMgKHByb2NlZHVyZSkKLSByZWN0YWwgcG9seXBlY3RvbXkK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/997213cf-6b26-41ae-b3ea-79491c26de6e", + "resource": { + "resourceType": "DocumentReference", + "id": "997213cf-6b26-41ae-b3ea-79491c26de6e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:7021fafe-e1b4-636b-1c3b-ff046636ae66" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "57133-1", + "display": "Referral note" + } + ], + "text": "Referral note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2006-10-27T21:51:18.715-04:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMDYtMTAtMjcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggcG9seXAgb2YgY29sb24uIAoKIyMgUGxhbgoKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIGNvbG9ub3Njb3B5Ci0gc2NyZWVuaW5nIGZvciBvY2N1bHQgYmxvb2QgaW4gZmVjZXMgKHByb2NlZHVyZSkKLSByZWN0YWwgcG9seXBlY3RvbXkK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/7fa81288-c0f2-4c99-b1c2-4bef7635d2b1" + } + ], + "period": { + "start": "2006-10-27T21:51:18-04:00", + "end": "2006-10-27T22:35:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/bdb6729c-06ec-457a-986e-ce67a00d7a04", + "resource": { + "resourceType": "Encounter", + "id": "bdb6729c-06ec-457a-986e-ce67a00d7a04", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "2ae1d4f2-1941-b8a0-86ca-f1d0500f0fd9" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2007-08-02T19:33:18-04:00", + "end": "2007-08-02T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2007-08-02T19:33:18-04:00", + "end": "2007-08-02T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/906eda09-138c-4603-8c39-d3fb528090fe", + "resource": { + "resourceType": "Observation", + "id": "906eda09-138c-4603-8c39-d3fb528090fe", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/bdb6729c-06ec-457a-986e-ce67a00d7a04" + }, + "effectiveDateTime": "2007-08-02T19:33:18-04:00", + "issued": "2007-08-02T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/5e6e636b-7144-45e8-add9-3c71daf8deb6", + "resource": { + "resourceType": "DiagnosticReport", + "id": "5e6e636b-7144-45e8-add9-3c71daf8deb6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/bdb6729c-06ec-457a-986e-ce67a00d7a04" + }, + "effectiveDateTime": "2007-08-02T19:33:18-04:00", + "issued": "2007-08-02T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMDctMDgtMDIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUsIHBuZXVtb2NvY2NhbCBwb2x5c2FjY2hhcmlkZSB2YWNjaW5lLCAyMyB2YWxlbnQuIApUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIKLSBuZGEwMjA1MDMgMjAwIGFjdHVhdCBhbGJ1dGVyb2wgMC4wOSBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/1be51188-1d13-4929-8486-ae631639832c", + "resource": { + "resourceType": "DocumentReference", + "id": "1be51188-1d13-4929-8486-ae631639832c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:828f04d4-094a-5d5d-c875-6929c5f72f4b" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11504-8", + "display": "Surgical operation note" + } + ], + "text": "Surgical operation note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2007-08-02T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMDctMDgtMDIKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjYgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KCgojIyBQbGFuClBhdGllbnQgd2FzIGdpdmVuIHRoZSBmb2xsb3dpbmcgaW1tdW5pemF0aW9uczogaW5mbHVlbnphLCBzZWFzb25hbCwgaW5qZWN0YWJsZSwgcHJlc2VydmF0aXZlIGZyZWUsIHBuZXVtb2NvY2NhbCBwb2x5c2FjY2hhcmlkZSB2YWNjaW5lLCAyMyB2YWxlbnQuIApUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIKLSBuZGEwMjA1MDMgMjAwIGFjdHVhdCBhbGJ1dGVyb2wgMC4wOSBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXIK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/bdb6729c-06ec-457a-986e-ce67a00d7a04" + } + ], + "period": { + "start": "2007-08-02T19:33:18-04:00", + "end": "2007-08-02T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/2a81f82f-f217-4425-90e4-c07ebc5243fa", + "resource": { + "resourceType": "Encounter", + "id": "2a81f82f-f217-4425-90e4-c07ebc5243fa", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d5fbb111-8244-c878-d88f-95e723b2bf27" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up" + } + ], + "text": "Encounter for check up" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2007-11-21T21:35:18-05:00", + "end": "2007-11-21T22:11:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2007-11-21T21:35:18-05:00", + "end": "2007-11-21T22:11:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/88c1c3a7-38d7-40c4-a4c1-50a4b882eb70", + "resource": { + "resourceType": "Condition", + "id": "88c1c3a7-38d7-40c4-a4c1-50a4b882eb70", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "713197008", + "display": "Recurrent rectal polyp" + } + ], + "text": "Recurrent rectal polyp" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2a81f82f-f217-4425-90e4-c07ebc5243fa" + }, + "onsetDateTime": "2007-11-21T22:11:18-05:00", + "recordedDate": "2007-11-21T22:11:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/a3d45b1f-28de-452b-b606-d9ea48d3a833", + "resource": { + "resourceType": "DiagnosticReport", + "id": "a3d45b1f-28de-452b-b606-d9ea48d3a833", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2a81f82f-f217-4425-90e4-c07ebc5243fa" + }, + "effectiveDateTime": "2007-11-21T21:35:18-05:00", + "issued": "2007-11-21T21:35:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMDctMTEtMjEKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggcmVjdXJyZW50IHJlY3RhbCBwb2x5cC4gCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gY29sb25vc2NvcHkKLSByZWN0YWwgcG9seXBlY3RvbXkK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/4eb32623-5a0d-4bcb-a0ed-8f5e0593d15f", + "resource": { + "resourceType": "DocumentReference", + "id": "4eb32623-5a0d-4bcb-a0ed-8f5e0593d15f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:12a15567-0fc8-7dd9-6103-ef84f796d338" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34746-8", + "display": "Nurse Note" + } + ], + "text": "Nurse Note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2007-11-21T21:35:18.715-05:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMDctMTEtMjEKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIGFjdXRlIHZpcmFsIHBoYXJ5bmdpdGlzIChkaXNvcmRlciksIHBvbHlwIG9mIGNvbG9uLCB2aXJhbCBzaW51c2l0aXMgKGRpc29yZGVyKSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybiwgZnJhY3R1cmUgb2YgYW5rbGUsIGNoaWxkaG9vZCBhc3RobWEuCgojIFNvY2lhbCBIaXN0b3J5ClBhdGllbnQgaXMgbWFycmllZC4gUGF0aWVudCBpcyB0ZW1wb3JhcmlseSBob21lbGVzcy4gUGF0aWVudCBpcyBhbiBhY3RpdmUgc21va2VyIGFuZCBpcyBhbiBhbGNvaG9saWMuIFBhdGllbnQgaWRlbnRpZmllcyBhcyBoZXRlcm9zZXh1YWwuCgpQYXRpZW50IGNvbWVzIGZyb20gYSBtaWRkbGUgc29jaW9lY29ub21pYyBiYWNrZ3JvdW5kLiBQYXRpZW50IGRpZCBub3QgZmluaXNoIGhpZ2ggc2Nob29sLiBQYXRpZW50IGN1cnJlbnRseSBoYXMgTWVkaWNhcmUuCgojIEFsbGVyZ2llcwpsYXRleCBhbGxlcmd5LCBhbGxlcmd5IHRvIHNveWEKCiMgTWVkaWNhdGlvbnMKYWNldGFtaW5vcGhlbiAzMjUgbWcgb3JhbCB0YWJsZXQ7IDEyMCBhY3R1YXQgZmx1dGljYXNvbmUgcHJvcGlvbmF0ZSAwLjA0NCBtZy9hY3R1YXQgbWV0ZXJlZCBkb3NlIGluaGFsZXI7IG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgMSBtbCBlcGluZXBocmluZSAxIG1nL21sIGluamVjdGlvbjsgYXRyb3BpbmUgc3VsZmF0ZSAxIG1nL21sIGluamVjdGFibGUgc29sdXRpb247IHByZWRuaXNvbmUgNSBtZyBvcmFsIHRhYmxldDsgMyBtbCBhbWlvZGFyb25lIGh5ZHJvY2hvbG9yaWRlIDUwIG1nL21sIHByZWZpbGxlZCBzeXJpbmdlOyBhc3BpcmluIDgxIG1nIG9yYWwgdGFibGV0CgojIEFzc2Vzc21lbnQgYW5kIFBsYW4KUGF0aWVudCBpcyBwcmVzZW50aW5nIHdpdGggcmVjdXJyZW50IHJlY3RhbCBwb2x5cC4gCgojIyBQbGFuCgpUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgd2VyZSBjb25kdWN0ZWQ6Ci0gY29sb25vc2NvcHkKLSByZWN0YWwgcG9seXBlY3RvbXkK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/2a81f82f-f217-4425-90e4-c07ebc5243fa" + } + ], + "period": { + "start": "2007-11-21T21:35:18-05:00", + "end": "2007-11-21T22:11:18-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/b3f79d58-6cfb-4081-9ab1-f340f10d5a61", + "resource": { + "resourceType": "Encounter", + "id": "b3f79d58-6cfb-4081-9ab1-f340f10d5a61", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "930b307f-9107-fa3d-52df-5956b14da2a3" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2007-11-27T22:11:18-05:00", + "end": "2007-11-27T22:26:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2007-11-27T22:11:18-05:00", + "end": "2007-11-27T22:26:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "109838007", + "display": "Overlapping malignant neoplasm of colon" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/28576eac-c318-46b8-983d-d780d4443cc5", + "resource": { + "resourceType": "Condition", + "id": "28576eac-c318-46b8-983d-d780d4443cc5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "109838007", + "display": "Overlapping malignant neoplasm of colon" + } + ], + "text": "Overlapping malignant neoplasm of colon" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b3f79d58-6cfb-4081-9ab1-f340f10d5a61" + }, + "onsetDateTime": "2007-11-27T22:11:18-05:00", + "abatementDateTime": "2009-10-14T23:11:18-04:00", + "recordedDate": "2007-11-27T22:11:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/b30c6822-d970-4070-80c0-6cc6f57c933d", + "resource": { + "resourceType": "CareTeam", + "id": "b30c6822-d970-4070-80c0-6cc6f57c933d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b3f79d58-6cfb-4081-9ab1-f340f10d5a61" + }, + "period": { + "start": "2007-11-27T22:11:18-05:00", + "end": "2009-10-14T23:11:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "109838007", + "display": "Overlapping malignant neoplasm of colon" + } + ], + "text": "Overlapping malignant neoplasm of colon" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/4dece6cc-f2bd-4406-bda2-8a9b5cc2b0c8", + "resource": { + "resourceType": "CarePlan", + "id": "4dece6cc-f2bd-4406-bda2-8a9b5cc2b0c8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Cancer care plan.
Activities:
  • Cancer care plan
  • Cancer care plan
  • Cancer care plan

Care plan is meant to treat Overlapping malignant neoplasm of colon.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "395082007", + "display": "Cancer care plan" + } + ], + "text": "Cancer care plan" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/b3f79d58-6cfb-4081-9ab1-f340f10d5a61" + }, + "period": { + "start": "2007-11-27T22:11:18-05:00", + "end": "2009-10-14T23:11:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/b30c6822-d970-4070-80c0-6cc6f57c933d" + } + ], + "addresses": [ + { + "reference": "Condition/28576eac-c318-46b8-983d-d780d4443cc5" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "226234005", + "display": "Healthy diet" + } + ], + "text": "Healthy diet" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "703993001", + "display": "Colonoscopy planned" + } + ], + "text": "Colonoscopy planned" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "243072006", + "display": "Cancer education" + } + ], + "text": "Cancer education" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8a31da60-f426-42b0-b434-99098bd810cb", + "resource": { + "resourceType": "Encounter", + "id": "8a31da60-f426-42b0-b434-99098bd810cb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "75518980-6ee3-59f6-4b0b-8a5ea7615b0e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "IMP" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185347001", + "display": "Encounter for problem" + } + ], + "text": "Encounter for problem" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2007-12-04T22:11:18-05:00", + "end": "2007-12-05T22:11:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2007-12-04T22:11:18-05:00", + "end": "2007-12-05T22:11:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "109838007", + "display": "Overlapping malignant neoplasm of colon" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/1d2b8436-1acd-4055-9df4-b844fcc3aa0d", + "resource": { + "resourceType": "CareTeam", + "id": "1d2b8436-1acd-4055-9df4-b844fcc3aa0d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8a31da60-f426-42b0-b434-99098bd810cb" + }, + "period": { + "start": "2007-12-04T22:11:18-05:00", + "end": "2007-12-24T22:11:18-05:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "109838007", + "display": "Overlapping malignant neoplasm of colon" + } + ], + "text": "Overlapping malignant neoplasm of colon" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/2d837af5-e3e8-429e-8f25-80d76635921d", + "resource": { + "resourceType": "CarePlan", + "id": "2d837af5-e3e8-429e-8f25-80d76635921d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Major surgery care management.
Activities:
  • Major surgery care management
  • Major surgery care management

Care plan is meant to treat Overlapping malignant neoplasm of colon.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "737567002", + "display": "Major surgery care management (procedure)" + } + ], + "text": "Major surgery care management (procedure)" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8a31da60-f426-42b0-b434-99098bd810cb" + }, + "period": { + "start": "2007-12-04T22:11:18-05:00", + "end": "2007-12-24T22:11:18-05:00" + }, + "careTeam": [ + { + "reference": "CareTeam/1d2b8436-1acd-4055-9df4-b844fcc3aa0d" + } + ], + "addresses": [ + { + "reference": "Condition/28576eac-c318-46b8-983d-d780d4443cc5" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10888001", + "display": "Liquid diet" + } + ], + "text": "Liquid diet" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "103744005", + "display": "Administration of intravenous fluids" + } + ], + "text": "Administration of intravenous fluids" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/bffe99dd-9f78-42cf-91b0-6f96d0eeb251", + "resource": { + "resourceType": "Encounter", + "id": "bffe99dd-9f78-42cf-91b0-6f96d0eeb251", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "c75d427c-bf46-d03f-6915-d7b73495eff3" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2008-08-07T19:33:18-04:00", + "end": "2008-08-07T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2008-08-07T19:33:18-04:00", + "end": "2008-08-07T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/310bc2a9-ad7f-4461-9e86-cfeb10d656d8", + "resource": { + "resourceType": "Observation", + "id": "310bc2a9-ad7f-4461-9e86-cfeb10d656d8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/bffe99dd-9f78-42cf-91b0-6f96d0eeb251" + }, + "effectiveDateTime": "2008-08-07T19:33:18-04:00", + "issued": "2008-08-07T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/85159e41-a589-4ecb-a93f-d25c3414cd76", + "resource": { + "resourceType": "DiagnosticReport", + "id": "85159e41-a589-4ecb-a93f-d25c3414cd76", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/bffe99dd-9f78-42cf-91b0-6f96d0eeb251" + }, + "effectiveDateTime": "2008-08-07T19:33:18-04:00", + "issued": "2008-08-07T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMDgtMDgtMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIG92ZXJsYXBwaW5nIG1hbGlnbmFudCBuZW9wbGFzbSBvZiBjb2xvbiwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgcG9seXAgb2YgY29sb24sIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyAxIG1sIGVwaW5lcGhyaW5lIDEgbWcvbWwgaW5qZWN0aW9uOyBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2U7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/c9181849-21dc-4db5-8c0e-603d562ee148", + "resource": { + "resourceType": "DocumentReference", + "id": "c9181849-21dc-4db5-8c0e-603d562ee148", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:9e61f82e-b7df-e4a4-1107-4c42b08d3239" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2008-08-07T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMDgtMDgtMDcKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIG92ZXJsYXBwaW5nIG1hbGlnbmFudCBuZW9wbGFzbSBvZiBjb2xvbiwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgcG9seXAgb2YgY29sb24sIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyAxIG1sIGVwaW5lcGhyaW5lIDEgbWcvbWwgaW5qZWN0aW9uOyBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2U7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQKCiMgQXNzZXNzbWVudCBhbmQgUGxhbgoKCiMjIFBsYW4KUGF0aWVudCB3YXMgZ2l2ZW4gdGhlIGZvbGxvd2luZyBpbW11bml6YXRpb25zOiBpbmZsdWVuemEsIHNlYXNvbmFsLCBpbmplY3RhYmxlLCBwcmVzZXJ2YXRpdmUgZnJlZS4gClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSBtZWRpY2F0aW9uIHJlY29uY2lsaWF0aW9uIChwcm9jZWR1cmUpClRoZSBwYXRpZW50IHdhcyBwcmVzY3JpYmVkIHRoZSBmb2xsb3dpbmcgbWVkaWNhdGlvbnM6Ci0gMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgotIG5kYTAyMDUwMyAyMDAgYWN0dWF0IGFsYnV0ZXJvbCAwLjA5IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcgo=" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/bffe99dd-9f78-42cf-91b0-6f96d0eeb251" + } + ], + "period": { + "start": "2008-08-07T19:33:18-04:00", + "end": "2008-08-07T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/66bba914-34ab-458c-bda7-30f1d801272a", + "resource": { + "resourceType": "Encounter", + "id": "66bba914-34ab-458c-bda7-30f1d801272a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "ef4ba82c-610d-2643-dea0-db20f0908e83" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2009-08-13T19:33:18-04:00", + "end": "2009-08-13T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2009-08-13T19:33:18-04:00", + "end": "2009-08-13T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f2acb364-ce31-4783-9a0d-9f2178d0df99", + "resource": { + "resourceType": "Observation", + "id": "f2acb364-ce31-4783-9a0d-9f2178d0df99", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/66bba914-34ab-458c-bda7-30f1d801272a" + }, + "effectiveDateTime": "2009-08-13T19:33:18-04:00", + "issued": "2009-08-13T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/3789d5cc-d2e8-43d6-a64a-23e9c45c6dee", + "resource": { + "resourceType": "Encounter", + "id": "3789d5cc-d2e8-43d6-a64a-23e9c45c6dee", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "6883f6b3-07d1-f630-d287-b1fa3a3e0e13" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2009-08-19T19:33:18-04:00", + "end": "2009-08-19T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2009-08-19T19:33:18-04:00", + "end": "2009-08-19T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "195662009", + "display": "Acute viral pharyngitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/87687561-1ecb-4c72-b7d8-d319cf448504", + "resource": { + "resourceType": "Observation", + "id": "87687561-1ecb-4c72-b7d8-d319cf448504", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-temperature" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8310-5", + "display": "Body temperature" + }, + { + "system": "http://loinc.org", + "code": "8331-1", + "display": "Oral temperature" + } + ], + "text": "Body temperature" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/3789d5cc-d2e8-43d6-a64a-23e9c45c6dee" + }, + "effectiveDateTime": "2009-08-19T19:33:18-04:00", + "issued": "2009-08-19T19:33:18.715-04:00", + "valueQuantity": { + "value": 37.799, + "unit": "Cel", + "system": "http://unitsofmeasure.org", + "code": "Cel" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/89c33835-dc4c-4a06-a86e-7de53964ed2f", + "resource": { + "resourceType": "Encounter", + "id": "89c33835-dc4c-4a06-a86e-7de53964ed2f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a855ca54-b62b-4461-cd1a-0930d5e11676" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2009-09-01T19:33:18-04:00", + "end": "2009-09-01T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2009-09-01T19:33:18-04:00", + "end": "2009-09-01T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/954be85a-97db-4b7d-a07a-0b8448ab3f37", + "resource": { + "resourceType": "Condition", + "id": "954be85a-97db-4b7d-a07a-0b8448ab3f37", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "444814009", + "display": "Viral sinusitis (disorder)" + } + ], + "text": "Viral sinusitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/89c33835-dc4c-4a06-a86e-7de53964ed2f" + }, + "onsetDateTime": "2009-09-01T19:33:18-04:00", + "abatementDateTime": "2009-09-08T19:33:18-04:00", + "recordedDate": "2009-09-01T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/51d65f64-47a7-4763-b7a1-bca2595ffd71", + "resource": { + "resourceType": "Observation", + "id": "51d65f64-47a7-4763-b7a1-bca2595ffd71", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/89c33835-dc4c-4a06-a86e-7de53964ed2f" + }, + "effectiveDateTime": "2009-09-03T19:33:18-04:00", + "issued": "2009-09-03T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/a1456342-3118-4e14-991d-7e80db12d0de", + "resource": { + "resourceType": "Encounter", + "id": "a1456342-3118-4e14-991d-7e80db12d0de", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "5b96af34-f12b-bcd6-60e2-76916904d4a7" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2010-08-19T19:33:18-04:00", + "end": "2010-08-19T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2010-08-19T19:33:18-04:00", + "end": "2010-08-19T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f6aed97c-a723-4867-bf7c-505eaf3b4214", + "resource": { + "resourceType": "Observation", + "id": "f6aed97c-a723-4867-bf7c-505eaf3b4214", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a1456342-3118-4e14-991d-7e80db12d0de" + }, + "effectiveDateTime": "2010-08-19T19:33:18-04:00", + "issued": "2010-08-19T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/4f982bb5-6cdf-468b-9230-27820b48950f", + "resource": { + "resourceType": "Procedure", + "id": "4f982bb5-6cdf-468b-9230-27820b48950f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a1456342-3118-4e14-991d-7e80db12d0de" + }, + "performedPeriod": { + "start": "2010-08-19T19:33:18-04:00", + "end": "2010-08-19T19:48:18-04:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/deaeb128-519a-4b9a-8c0d-1cecae3f5e5c", + "resource": { + "resourceType": "Immunization", + "id": "deaeb128-519a-4b9a-8c0d-1cecae3f5e5c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a1456342-3118-4e14-991d-7e80db12d0de" + }, + "occurrenceDateTime": "2010-08-19T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/4fd00988-e28f-4c07-bd19-66917c0a2132", + "resource": { + "resourceType": "DiagnosticReport", + "id": "4fd00988-e28f-4c07-bd19-66917c0a2132", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + }, + { + "system": "http://loinc.org", + "code": "51847-2", + "display": "Evaluation + Plan note" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + }, + { + "system": "http://loinc.org", + "code": "51847-2", + "display": "Evaluation + Plan note" + } + ] + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/a1456342-3118-4e14-991d-7e80db12d0de" + }, + "effectiveDateTime": "2010-08-19T19:33:18-04:00", + "issued": "2010-08-19T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMTAtMDgtMTkKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNjkgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIG92ZXJsYXBwaW5nIG1hbGlnbmFudCBuZW9wbGFzbSBvZiBjb2xvbiwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgcG9seXAgb2YgY29sb24sIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyAxIG1sIGVwaW5lcGhyaW5lIDEgbWcvbWwgaW5qZWN0aW9uOyBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2U7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkKVGhlIHBhdGllbnQgd2FzIHByZXNjcmliZWQgdGhlIGZvbGxvd2luZyBtZWRpY2F0aW9uczoKLSAxMjAgYWN0dWF0IGZsdXRpY2Fzb25lIHByb3Bpb25hdGUgMC4wNDQgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyCi0gbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/42f0aefc-74f0-4d68-8c98-fade7f41ef68", + "resource": { + "resourceType": "Encounter", + "id": "42f0aefc-74f0-4d68-8c98-fade7f41ef68", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "3bc32923-7c4b-13eb-e781-67e0fda3602e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2011-08-25T19:33:18-04:00", + "end": "2011-08-25T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2011-08-25T19:33:18-04:00", + "end": "2011-08-25T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f7f86c28-560d-4835-bd71-4949edf99bd6", + "resource": { + "resourceType": "Observation", + "id": "f7f86c28-560d-4835-bd71-4949edf99bd6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/42f0aefc-74f0-4d68-8c98-fade7f41ef68" + }, + "effectiveDateTime": "2011-08-25T19:33:18-04:00", + "issued": "2011-08-25T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8d008d4e-4402-4e60-946a-19fb51b58541", + "resource": { + "resourceType": "Encounter", + "id": "8d008d4e-4402-4e60-946a-19fb51b58541", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "03cf833e-6e4f-e36a-28cf-a7111444208e" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2012-08-30T19:33:18-04:00", + "end": "2012-08-30T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2012-08-30T19:33:18-04:00", + "end": "2012-08-30T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d7555d04-7c51-4699-84ba-7576bffbe112", + "resource": { + "resourceType": "Observation", + "id": "d7555d04-7c51-4699-84ba-7576bffbe112", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8d008d4e-4402-4e60-946a-19fb51b58541" + }, + "effectiveDateTime": "2012-08-30T19:33:18-04:00", + "issued": "2012-08-30T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/bb569b96-dc67-4f6d-ae88-a7fad899ca04", + "resource": { + "resourceType": "Procedure", + "id": "bb569b96-dc67-4f6d-ae88-a7fad899ca04", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8d008d4e-4402-4e60-946a-19fb51b58541" + }, + "performedPeriod": { + "start": "2012-08-30T19:33:18-04:00", + "end": "2012-08-30T19:48:18-04:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/45d1e045-1e9f-4400-9312-058d9369ba68", + "resource": { + "resourceType": "Immunization", + "id": "45d1e045-1e9f-4400-9312-058d9369ba68", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "113", + "display": "Td (adult), 5 Lf tetanus toxoid, preservative free, adsorbed" + } + ], + "text": "Td (adult), 5 Lf tetanus toxoid, preservative free, adsorbed" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8d008d4e-4402-4e60-946a-19fb51b58541" + }, + "occurrenceDateTime": "2012-08-30T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/c2a341b9-20fd-4ecc-8170-dec5267e1d5e", + "resource": { + "resourceType": "Encounter", + "id": "c2a341b9-20fd-4ecc-8170-dec5267e1d5e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "9d4e1390-f9cb-097a-c28f-37d34f14fe83" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2013-09-05T19:33:18-04:00", + "end": "2013-09-05T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2013-09-05T19:33:18-04:00", + "end": "2013-09-05T19:48:18-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/885993b6-643f-4c50-8431-ef703058e18b", + "resource": { + "resourceType": "Observation", + "id": "885993b6-643f-4c50-8431-ef703058e18b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bmi", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "39156-5", + "display": "Body mass index (BMI) [Ratio]" + } + ], + "text": "Body mass index (BMI) [Ratio]" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c2a341b9-20fd-4ecc-8170-dec5267e1d5e" + }, + "effectiveDateTime": "2013-09-05T19:33:18-04:00", + "issued": "2013-09-05T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "valueQuantity": { + "value": 27.31, + "unit": "kg/m2", + "system": "http://unitsofmeasure.org", + "code": "kg/m2" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/6914ed77-32e4-4225-a1dc-cec7e158bde4", + "resource": { + "resourceType": "Observation", + "id": "6914ed77-32e4-4225-a1dc-cec7e158bde4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c2a341b9-20fd-4ecc-8170-dec5267e1d5e" + }, + "effectiveDateTime": "2013-09-05T19:33:18-04:00", + "issued": "2013-09-05T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/7024f69d-0ce7-469b-9f4d-b692f0d50cc8", + "resource": { + "resourceType": "MedicationRequest", + "id": "7024f69d-0ce7-469b-9f4d-b692f0d50cc8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c2a341b9-20fd-4ecc-8170-dec5267e1d5e" + }, + "authoredOn": "2013-09-05T19:33:18-04:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/362082ce-60f5-4f7a-b25a-a8832c71d0f4", + "resource": { + "resourceType": "DiagnosticReport", + "id": "362082ce-60f5-4f7a-b25a-a8832c71d0f4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29684-5", + "display": "Radiology" + } + ], + "text": "Radiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c2a341b9-20fd-4ecc-8170-dec5267e1d5e" + }, + "effectiveDateTime": "2013-09-05T19:33:18-04:00", + "issued": "2013-09-05T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMTMtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNzMgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIG92ZXJsYXBwaW5nIG1hbGlnbmFudCBuZW9wbGFzbSBvZiBjb2xvbiwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgcG9seXAgb2YgY29sb24sIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyAxIG1sIGVwaW5lcGhyaW5lIDEgbWcvbWwgaW5qZWN0aW9uOyBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2U7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkKVGhlIHBhdGllbnQgd2FzIHByZXNjcmliZWQgdGhlIGZvbGxvd2luZyBtZWRpY2F0aW9uczoKLSAxMjAgYWN0dWF0IGZsdXRpY2Fzb25lIHByb3Bpb25hdGUgMC4wNDQgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyCi0gbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyCg==" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/75d6b165-1809-48ba-a4df-11d57f51f555", + "resource": { + "resourceType": "DocumentReference", + "id": "75d6b165-1809-48ba-a4df-11d57f51f555", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:b14919be-ccd1-a089-f127-320b67c7caec" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ], + "text": "Discharge summary" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2013-09-05T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMTMtMDktMDUKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNzMgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgYWN1dGUgYnJvbmNoaXRpcyAoZGlzb3JkZXIpLCBsYWNlcmF0aW9uIG9mIHRoaWdoLCBvdGl0aXMgbWVkaWEsIG92ZXJsYXBwaW5nIG1hbGlnbmFudCBuZW9wbGFzbSBvZiBjb2xvbiwgYWN1dGUgdmlyYWwgcGhhcnluZ2l0aXMgKGRpc29yZGVyKSwgcG9seXAgb2YgY29sb24sIHZpcmFsIHNpbnVzaXRpcyAoZGlzb3JkZXIpLCBzcHJhaW4gb2YgYW5rbGUsIGZpcnN0IGRlZ3JlZSBidXJuLCBmcmFjdHVyZSBvZiBhbmtsZSwgY2hpbGRob29kIGFzdGhtYS4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyAxIG1sIGVwaW5lcGhyaW5lIDEgbWcvbWwgaW5qZWN0aW9uOyBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2U7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuCgoKIyMgUGxhbgpQYXRpZW50IHdhcyBnaXZlbiB0aGUgZm9sbG93aW5nIGltbXVuaXphdGlvbnM6IGluZmx1ZW56YSwgc2Vhc29uYWwsIGluamVjdGFibGUsIHByZXNlcnZhdGl2ZSBmcmVlLiAKVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIHdlcmUgY29uZHVjdGVkOgotIG1lZGljYXRpb24gcmVjb25jaWxpYXRpb24gKHByb2NlZHVyZSkKVGhlIHBhdGllbnQgd2FzIHByZXNjcmliZWQgdGhlIGZvbGxvd2luZyBtZWRpY2F0aW9uczoKLSAxMjAgYWN0dWF0IGZsdXRpY2Fzb25lIHByb3Bpb25hdGUgMC4wNDQgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyCi0gbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyCg==" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/c2a341b9-20fd-4ecc-8170-dec5267e1d5e" + } + ], + "period": { + "start": "2013-09-05T19:33:18-04:00", + "end": "2013-09-05T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/48ad00f6-86c6-414b-9229-f2c58728c5d3", + "resource": { + "resourceType": "Encounter", + "id": "48ad00f6-86c6-414b-9229-f2c58728c5d3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "3dbbbbce-cc1d-6a9c-6b14-c24210fca507" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2014-09-11T19:33:18-04:00", + "end": "2014-09-11T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2014-09-11T19:33:18-04:00", + "end": "2014-09-11T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/c16cf211-1457-46b7-9978-eb609ce4a363", + "resource": { + "resourceType": "Observation", + "id": "c16cf211-1457-46b7-9978-eb609ce4a363", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/48ad00f6-86c6-414b-9229-f2c58728c5d3" + }, + "effectiveDateTime": "2014-09-11T19:33:18-04:00", + "issued": "2014-09-11T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/d567105a-ea2d-4eae-9304-c2f3de0077dd", + "resource": { + "resourceType": "Immunization", + "id": "d567105a-ea2d-4eae-9304-c2f3de0077dd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/48ad00f6-86c6-414b-9229-f2c58728c5d3" + }, + "occurrenceDateTime": "2014-09-11T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/5315626e-e90a-43ae-bb1d-7a5ae5fad4db", + "resource": { + "resourceType": "Encounter", + "id": "5315626e-e90a-43ae-bb1d-7a5ae5fad4db", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "fa51a007-605a-0beb-9de6-3e5ab3b550dc" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "50849002", + "display": "Emergency room admission (procedure)" + } + ], + "text": "Emergency room admission (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2015-04-15T20:55:18-04:00", + "end": "2015-04-15T21:55:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2015-04-15T20:55:18-04:00", + "end": "2015-04-15T21:55:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/a4971955-2258-4286-86b2-f958daade9f8", + "resource": { + "resourceType": "Condition", + "id": "a4971955-2258-4286-86b2-f958daade9f8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "62106007", + "display": "Concussion with no loss of consciousness" + } + ], + "text": "Concussion with no loss of consciousness" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5315626e-e90a-43ae-bb1d-7a5ae5fad4db" + }, + "onsetDateTime": "2015-04-15T20:55:18-04:00", + "abatementDateTime": "2015-06-14T20:55:18-04:00", + "recordedDate": "2015-04-15T20:55:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/1c592032-03a3-454b-b0f4-c788b74b565b", + "resource": { + "resourceType": "CareTeam", + "id": "1c592032-03a3-454b-b0f4-c788b74b565b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5315626e-e90a-43ae-bb1d-7a5ae5fad4db" + }, + "period": { + "start": "2015-04-15T20:55:18-04:00", + "end": "2015-06-14T20:55:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "62106007", + "display": "Concussion with no loss of consciousness" + } + ], + "text": "Concussion with no loss of consciousness" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/08f39959-fcb4-4107-b49d-f5e29ba0abc0", + "resource": { + "resourceType": "CarePlan", + "id": "08f39959-fcb4-4107-b49d-f5e29ba0abc0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Head injury rehabilitation.
Activities:
  • Head injury rehabilitation
  • Head injury rehabilitation

Care plan is meant to treat Concussion with no loss of consciousness.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "47387005", + "display": "Head injury rehabilitation" + } + ], + "text": "Head injury rehabilitation" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5315626e-e90a-43ae-bb1d-7a5ae5fad4db" + }, + "period": { + "start": "2015-04-15T20:55:18-04:00", + "end": "2015-06-14T20:55:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/1c592032-03a3-454b-b0f4-c788b74b565b" + } + ], + "addresses": [ + { + "reference": "Condition/a4971955-2258-4286-86b2-f958daade9f8" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "183051005", + "display": "Recommendation to rest" + } + ], + "text": "Recommendation to rest" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "226138001", + "display": "Alcohol-free diet" + } + ], + "text": "Alcohol-free diet" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/02f84c09-a131-4170-aaf7-7639dab7d8a9", + "resource": { + "resourceType": "Encounter", + "id": "02f84c09-a131-4170-aaf7-7639dab7d8a9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "5485c5b0-526f-1c5a-f81c-00ad8573d1ca" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2015-09-17T19:33:18-04:00", + "end": "2015-09-17T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2015-09-17T19:33:18-04:00", + "end": "2015-09-17T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/18183885-c2b1-4441-8737-6d6b65046a3e", + "resource": { + "resourceType": "Observation", + "id": "18183885-c2b1-4441-8737-6d6b65046a3e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/02f84c09-a131-4170-aaf7-7639dab7d8a9" + }, + "effectiveDateTime": "2015-09-17T19:33:18-04:00", + "issued": "2015-09-17T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/e9fa71a5-df9e-4ff3-b3f4-859d646ed18c", + "resource": { + "resourceType": "Encounter", + "id": "e9fa71a5-df9e-4ff3-b3f4-859d646ed18c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "c919ffd2-f165-3a91-1cf8-8c7998ec204b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "702927004", + "display": "Urgent care clinic" + } + ], + "text": "Urgent care clinic" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2016-06-16T19:33:18-04:00", + "end": "2016-06-16T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "display": "Dr. Sammie902 DuBuque211" + } + } + ], + "period": { + "start": "2016-06-16T19:33:18-04:00", + "end": "2016-06-16T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + } + ], + "serviceProvider": { + "reference": "Organization/b293761b-00ce-4fee-b608-6c5eb0f45447", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Immunization/fcd6e59c-de97-445a-8c16-770085d8eb14", + "resource": { + "resourceType": "Immunization", + "id": "fcd6e59c-de97-445a-8c16-770085d8eb14", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-immunization" + ] + }, + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ], + "text": "Influenza, seasonal, injectable, preservative free" + }, + "patient": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/e9fa71a5-df9e-4ff3-b3f4-859d646ed18c" + }, + "occurrenceDateTime": "2016-06-16T19:33:18-04:00", + "primarySource": true, + "location": { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6fcf54c2-f2e4-4461-9ff0-5c257793b4de", + "resource": { + "resourceType": "Encounter", + "id": "6fcf54c2-f2e4-4461-9ff0-5c257793b4de", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "cd99325d-3565-5db8-1ba1-b89a850e2e33" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "210098006", + "display": "Domiciliary or rest home patient evaluation and management" + } + ], + "text": "Domiciliary or rest home patient evaluation and management" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2016-09-16T19:33:18-04:00", + "end": "2016-09-16T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2016-09-16T19:33:18-04:00", + "end": "2016-09-16T19:48:18-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/62345db9-6ba4-4683-8b73-b25550a1d24e", + "resource": { + "resourceType": "Observation", + "id": "62345db9-6ba4-4683-8b73-b25550a1d24e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6fcf54c2-f2e4-4461-9ff0-5c257793b4de" + }, + "effectiveDateTime": "2016-09-22T19:33:18-04:00", + "issued": "2016-09-22T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/caf34c82-47b2-4c5b-a806-7eaa94bc2e5d", + "resource": { + "resourceType": "Procedure", + "id": "caf34c82-47b2-4c5b-a806-7eaa94bc2e5d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "311791003", + "display": "Information gathering (procedure)" + } + ], + "text": "Information gathering (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6fcf54c2-f2e4-4461-9ff0-5c257793b4de" + }, + "performedPeriod": { + "start": "2016-09-16T19:33:18-04:00", + "end": "2016-09-16T19:48:18-04:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/656c25ad-09f1-4a96-ac5f-cfb007c203b7", + "resource": { + "resourceType": "MedicationRequest", + "id": "656c25ad-09f1-4a96-ac5f-cfb007c203b7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "895994", + "display": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6fcf54c2-f2e4-4461-9ff0-5c257793b4de" + }, + "authoredOn": "2016-09-22T19:33:18-04:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966", + "resource": { + "resourceType": "Encounter", + "id": "6e17a849-ef1b-419b-bc7f-d99d560c6966", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a438ddcc-b7e3-2049-7335-1012a274f19d" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2017-09-28T19:33:18-04:00", + "end": "2017-09-28T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2017-09-28T19:33:18-04:00", + "end": "2017-09-28T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/80a8b837-b725-4485-ad30-d601531cec6a", + "resource": { + "resourceType": "Observation", + "id": "80a8b837-b725-4485-ad30-d601531cec6a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "2339-0", + "display": "Glucose [Mass/volume] in Blood" + } + ], + "text": "Glucose [Mass/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 94.95, + "unit": "mg/dL", + "system": "http://unitsofmeasure.org", + "code": "mg/dL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/30fcbb0b-e3d4-43db-bd69-e6b57672b600", + "resource": { + "resourceType": "Observation", + "id": "30fcbb0b-e3d4-43db-bd69-e6b57672b600", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "6299-2", + "display": "Urea nitrogen [Mass/volume] in Blood" + } + ], + "text": "Urea nitrogen [Mass/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 13.18, + "unit": "mg/dL", + "system": "http://unitsofmeasure.org", + "code": "mg/dL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/d4776b33-180c-4841-a77b-9cc5271a1628", + "resource": { + "resourceType": "Observation", + "id": "d4776b33-180c-4841-a77b-9cc5271a1628", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "38483-4", + "display": "Creatinine [Mass/volume] in Blood" + } + ], + "text": "Creatinine [Mass/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 0.83, + "unit": "mg/dL", + "system": "http://unitsofmeasure.org", + "code": "mg/dL" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/401cb2af-ca73-4448-be68-9925b4ffb2bf", + "resource": { + "resourceType": "Observation", + "id": "401cb2af-ca73-4448-be68-9925b4ffb2bf", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "49765-1", + "display": "Calcium [Mass/volume] in Blood" + } + ], + "text": "Calcium [Mass/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 9.02, + "unit": "mg/dL", + "system": "http://unitsofmeasure.org", + "code": "mg/dL" + }, + "interpretation": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation", + "code": "B", + "display": "Better" + } + ] + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/94a71e4d-4424-46ca-ad4a-2ac58538f4d2", + "resource": { + "resourceType": "Observation", + "id": "94a71e4d-4424-46ca-ad4a-2ac58538f4d2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "2947-0", + "display": "Sodium [Moles/volume] in Blood" + } + ], + "text": "Sodium [Moles/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 142.17, + "unit": "mmol/L", + "system": "http://unitsofmeasure.org", + "code": "mmol/L" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/fce04d41-4ed7-4642-86b9-ca12aef0f443", + "resource": { + "resourceType": "Observation", + "id": "fce04d41-4ed7-4642-86b9-ca12aef0f443", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "6298-4", + "display": "Potassium [Moles/volume] in Blood" + } + ], + "text": "Potassium [Moles/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 3.98, + "unit": "mmol/L", + "system": "http://unitsofmeasure.org", + "code": "mmol/L" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/f7ff920b-c830-4fd3-9e2c-3814c2409cfb", + "resource": { + "resourceType": "Observation", + "id": "f7ff920b-c830-4fd3-9e2c-3814c2409cfb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "2069-3", + "display": "Chloride [Moles/volume] in Blood" + } + ], + "text": "Chloride [Moles/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 103.68, + "unit": "mmol/L", + "system": "http://unitsofmeasure.org", + "code": "mmol/L" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4f0f9771-ba5b-4245-b9be-7cebd6e6e164", + "resource": { + "resourceType": "Observation", + "id": "4f0f9771-ba5b-4245-b9be-7cebd6e6e164", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "20565-8", + "display": "Carbon dioxide, total [Moles/volume] in Blood" + } + ], + "text": "Carbon dioxide, total [Moles/volume] in Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueQuantity": { + "value": 27.25, + "unit": "mmol/L", + "system": "http://unitsofmeasure.org", + "code": "mmol/L" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/bc2b7b7b-860f-4d0e-bab1-7b1c11d49bca", + "resource": { + "resourceType": "Observation", + "id": "bc2b7b7b-860f-4d0e-bab1-7b1c11d49bca", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/bcd4557c-0b3c-4d21-881f-54e4223138ed", + "resource": { + "resourceType": "Procedure", + "id": "bcd4557c-0b3c-4d21-881f-54e4223138ed", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "performedPeriod": { + "start": "2017-09-28T19:33:18-04:00", + "end": "2017-09-28T19:48:18-04:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/110c5785-3883-452b-b13a-0b451d3f4ea5", + "resource": { + "resourceType": "DiagnosticReport", + "id": "110c5785-3883-452b-b13a-0b451d3f4ea5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0074", + "code": "LAB", + "display": "Laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "51990-0", + "display": "Basic metabolic panel - Blood" + } + ], + "text": "Basic metabolic panel - Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectiveDateTime": "2017-09-28T19:33:18-04:00", + "issued": "2017-09-28T19:33:18.715-04:00", + "performer": [ + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr Blossom971 Christiansen251" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "resultsInterpreter": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr Blossom971 Christiansen251" + } + ], + "result": [ + { + "reference": "Observation/80a8b837-b725-4485-ad30-d601531cec6a", + "display": "Glucose" + }, + { + "reference": "Observation/30fcbb0b-e3d4-43db-bd69-e6b57672b600", + "display": "Urea Nitrogen" + }, + { + "reference": "Observation/d4776b33-180c-4841-a77b-9cc5271a1628", + "display": "Creatinine" + }, + { + "reference": "Observation/401cb2af-ca73-4448-be68-9925b4ffb2bf", + "display": "Calcium" + }, + { + "reference": "Observation/94a71e4d-4424-46ca-ad4a-2ac58538f4d2", + "display": "Sodium" + }, + { + "reference": "Observation/fce04d41-4ed7-4642-86b9-ca12aef0f443", + "display": "Potassium" + }, + { + "reference": "Observation/f7ff920b-c830-4fd3-9e2c-3814c2409cfb", + "display": "Chloride" + }, + { + "reference": "Observation/4f0f9771-ba5b-4245-b9be-7cebd6e6e164", + "display": "Carbon Dioxide" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/4bacfa96-d82b-4240-926c-e6bdff076054", + "resource": { + "resourceType": "Encounter", + "id": "4bacfa96-d82b-4240-926c-e6bdff076054", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "63fe8a71-8558-674a-f664-bf4b8a0a7f4f" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "EMER" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "50849002", + "display": "Emergency room admission (procedure)" + } + ], + "text": "Emergency room admission (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2018-02-28T19:55:18-05:00", + "end": "2018-02-28T20:55:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2018-02-28T19:55:18-05:00", + "end": "2018-02-28T20:55:18-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/07a44c88-c965-40dd-a819-b28e739bd015", + "resource": { + "resourceType": "Condition", + "id": "07a44c88-c965-40dd-a819-b28e739bd015", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "263102004", + "display": "Fracture subluxation of wrist" + } + ], + "text": "Fracture subluxation of wrist" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4bacfa96-d82b-4240-926c-e6bdff076054" + }, + "onsetDateTime": "2018-02-28T19:55:18-05:00", + "abatementDateTime": "2018-03-30T21:26:18-04:00", + "recordedDate": "2018-02-28T19:55:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/5f72a6c0-d05e-405d-8587-86ca7d5be004", + "resource": { + "resourceType": "Procedure", + "id": "5f72a6c0-d05e-405d-8587-86ca7d5be004", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "266e572c-3ab6-abd4-5964-ce3189351546" + } + ], + "basedOn": [ + { + "reference": "ServiceRequest/41066903-7470-4d8b-a5aa-8b72984c5191" + } + ], + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "60027007", + "display": "X-ray of wrist" + } + ], + "text": "X-ray of wrist" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4bacfa96-d82b-4240-926c-e6bdff076054" + }, + "performedPeriod": { + "start": "2018-02-28T19:55:18-05:00", + "end": "2018-02-28T20:25:18-05:00" + }, + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/fbb9f858-9f03-4ef0-acd5-822b3c8e4ea7", + "resource": { + "resourceType": "CareTeam", + "id": "fbb9f858-9f03-4ef0-acd5-822b3c8e4ea7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4bacfa96-d82b-4240-926c-e6bdff076054" + }, + "period": { + "start": "2018-02-28T20:26:18-05:00", + "end": "2018-03-30T21:26:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "263102004", + "display": "Fracture subluxation of wrist" + } + ], + "text": "Fracture subluxation of wrist" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/51eca3a0-e03a-41a2-831d-e2a348aacc9e", + "resource": { + "resourceType": "CarePlan", + "id": "51eca3a0-e03a-41a2-831d-e2a348aacc9e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Fracture care.
Activities:
  • Fracture care
  • Fracture care

Care plan is meant to treat Fracture subluxation of wrist.
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "385691007", + "display": "Fracture care" + } + ], + "text": "Fracture care" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4bacfa96-d82b-4240-926c-e6bdff076054" + }, + "period": { + "start": "2018-02-28T20:26:18-05:00", + "end": "2018-03-30T21:26:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/fbb9f858-9f03-4ef0-acd5-822b3c8e4ea7" + } + ], + "addresses": [ + { + "reference": "Condition/07a44c88-c965-40dd-a819-b28e739bd015" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "183051005", + "display": "Recommendation to rest" + } + ], + "text": "Recommendation to rest" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "408580007", + "display": "Physical activity target light exercise" + } + ], + "text": "Physical activity target light exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/7bda0303-036c-4db7-a5e5-5d9c3e318335", + "resource": { + "resourceType": "DiagnosticReport", + "id": "7bda0303-036c-4db7-a5e5-5d9c3e318335", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP29708-2", + "display": "Cardiology" + } + ], + "text": "Cardiology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/4bacfa96-d82b-4240-926c-e6bdff076054" + }, + "effectiveDateTime": "2018-02-28T19:55:18-05:00", + "issued": "2018-02-28T19:55:18.715-05:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "text/plain", + "data": "CjIwMTgtMDItMjgKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNzcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgY29uY3Vzc2lvbiB3aXRoIG5vIGxvc3Mgb2YgY29uc2Npb3VzbmVzcywgb3ZlcmxhcHBpbmcgbWFsaWduYW50IG5lb3BsYXNtIG9mIGNvbG9uLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBwb2x5cCBvZiBjb2xvbiwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGFua2xlLCBjaGlsZGhvb2QgYXN0aG1hLCBhY3V0ZSBicm9uY2hpdGlzIChkaXNvcmRlciksIGxhY2VyYXRpb24gb2YgdGhpZ2gsIG90aXRpcyBtZWRpYSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybi4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyAxIG1sIGVwaW5lcGhyaW5lIDEgbWcvbWwgaW5qZWN0aW9uOyBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2U7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuClBhdGllbnQgaXMgcHJlc2VudGluZyB3aXRoIGZyYWN0dXJlIHN1Ymx1eGF0aW9uIG9mIHdyaXN0LiAKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSB4LXJheSBvciB3cmlzdAotIGJvbmUgaW1tb2JpbGl6YXRpb24KLSBib25lIGRlbnNpdHkgc2NhbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIG1lcGVyaWRpbmUgaHlkcm9jaGxvcmlkZSA1MCBtZyBvcmFsIHRhYmxldAotIGlidXByb2ZlbiAyMDAgbWcgb3JhbCB0YWJsZXQKVGhlIHBhdGllbnQgd2FzIHBsYWNlZCBvbiBhIGNhcmVwbGFuOgotIGZyYWN0dXJlIGNhcmUK" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/ef03f149-526d-4bd6-b25f-ab5e2549bd86", + "resource": { + "resourceType": "DocumentReference", + "id": "ef03f149-526d-4bd6-b25f-ab5e2549bd86", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:d547d7bd-daf1-e161-d809-546d04fe5f32" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "34117-2", + "display": "History and physical note" + } + ], + "text": "History and physical note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2018-02-28T19:55:18.715-05:00", + "author": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "custodian": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + }, + "content": [ + { + "attachment": { + "contentType": "text/plain", + "data": "CjIwMTgtMDItMjgKCiMgQ2hpZWYgQ29tcGxhaW50Ci0gRGVjcmVhc2VkIGluIEp1ZGdlbWVudAotIENvbmZ1c2lvbgotIE5hc2FsIENvbmdlc3Rpb24KLSBTbmVlemluZyBGaXRzCi0gTmFzYWwgRGlzY2hhcmdlCi0gQ291Z2gKCgojIEhpc3Rvcnkgb2YgUHJlc2VudCBJbGxuZXNzCkR1c3RpbjMxIGlzIGEgNzcgeWVhci1vbGQgbm9uLWhpc3BhbmljIHdoaXRlIG1hbGUuIFBhdGllbnQgaGFzIGEgaGlzdG9yeSBvZiBhY3V0ZSBhbGxlcmdpYyByZWFjdGlvbiwgY29uY3Vzc2lvbiB3aXRoIG5vIGxvc3Mgb2YgY29uc2Npb3VzbmVzcywgb3ZlcmxhcHBpbmcgbWFsaWduYW50IG5lb3BsYXNtIG9mIGNvbG9uLCBhY3V0ZSB2aXJhbCBwaGFyeW5naXRpcyAoZGlzb3JkZXIpLCBwb2x5cCBvZiBjb2xvbiwgdmlyYWwgc2ludXNpdGlzIChkaXNvcmRlciksIGZyYWN0dXJlIG9mIGFua2xlLCBjaGlsZGhvb2QgYXN0aG1hLCBhY3V0ZSBicm9uY2hpdGlzIChkaXNvcmRlciksIGxhY2VyYXRpb24gb2YgdGhpZ2gsIG90aXRpcyBtZWRpYSwgc3ByYWluIG9mIGFua2xlLCBmaXJzdCBkZWdyZWUgYnVybi4KCiMgU29jaWFsIEhpc3RvcnkKUGF0aWVudCBpcyBtYXJyaWVkLiBQYXRpZW50IGlzIHRlbXBvcmFyaWx5IGhvbWVsZXNzLiBQYXRpZW50IGlzIGFuIGFjdGl2ZSBzbW9rZXIgYW5kIGlzIGFuIGFsY29ob2xpYy4gUGF0aWVudCBpZGVudGlmaWVzIGFzIGhldGVyb3NleHVhbC4KClBhdGllbnQgY29tZXMgZnJvbSBhIG1pZGRsZSBzb2Npb2Vjb25vbWljIGJhY2tncm91bmQuIFBhdGllbnQgZGlkIG5vdCBmaW5pc2ggaGlnaCBzY2hvb2wuIFBhdGllbnQgY3VycmVudGx5IGhhcyBNZWRpY2FyZS4KCiMgQWxsZXJnaWVzCmxhdGV4IGFsbGVyZ3ksIGFsbGVyZ3kgdG8gc295YQoKIyBNZWRpY2F0aW9ucwphY2V0YW1pbm9waGVuIDMyNSBtZyBvcmFsIHRhYmxldDsgMTIwIGFjdHVhdCBmbHV0aWNhc29uZSBwcm9waW9uYXRlIDAuMDQ0IG1nL2FjdHVhdCBtZXRlcmVkIGRvc2UgaW5oYWxlcjsgbmRhMDIwNTAzIDIwMCBhY3R1YXQgYWxidXRlcm9sIDAuMDkgbWcvYWN0dWF0IG1ldGVyZWQgZG9zZSBpbmhhbGVyOyAxIG1sIGVwaW5lcGhyaW5lIDEgbWcvbWwgaW5qZWN0aW9uOyBhdHJvcGluZSBzdWxmYXRlIDEgbWcvbWwgaW5qZWN0YWJsZSBzb2x1dGlvbjsgcHJlZG5pc29uZSA1IG1nIG9yYWwgdGFibGV0OyAzIG1sIGFtaW9kYXJvbmUgaHlkcm9jaG9sb3JpZGUgNTAgbWcvbWwgcHJlZmlsbGVkIHN5cmluZ2U7IGFzcGlyaW4gODEgbWcgb3JhbCB0YWJsZXQ7IGFtb3hpY2lsbGluIDI1MCBtZyAvIGNsYXZ1bGFuYXRlIDEyNSBtZyBvcmFsIHRhYmxldAoKIyBBc3Nlc3NtZW50IGFuZCBQbGFuClBhdGllbnQgaXMgcHJlc2VudGluZyB3aXRoIGZyYWN0dXJlIHN1Ymx1eGF0aW9uIG9mIHdyaXN0LiAKCiMjIFBsYW4KClRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlcyB3ZXJlIGNvbmR1Y3RlZDoKLSB4LXJheSBvciB3cmlzdAotIGJvbmUgaW1tb2JpbGl6YXRpb24KLSBib25lIGRlbnNpdHkgc2NhbiAocHJvY2VkdXJlKQpUaGUgcGF0aWVudCB3YXMgcHJlc2NyaWJlZCB0aGUgZm9sbG93aW5nIG1lZGljYXRpb25zOgotIG1lcGVyaWRpbmUgaHlkcm9jaGxvcmlkZSA1MCBtZyBvcmFsIHRhYmxldAotIGlidXByb2ZlbiAyMDAgbWcgb3JhbCB0YWJsZXQKVGhlIHBhdGllbnQgd2FzIHBsYWNlZCBvbiBhIGNhcmVwbGFuOgotIGZyYWN0dXJlIGNhcmUK" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/4bacfa96-d82b-4240-926c-e6bdff076054" + } + ], + "period": { + "start": "2018-02-28T19:55:18-05:00", + "end": "2018-02-28T20:55:18-05:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/7a6a6000-83f8-4a6f-9435-32181d2a7459", + "resource": { + "resourceType": "Encounter", + "id": "7a6a6000-83f8-4a6f-9435-32181d2a7459", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "762bcabe-67a0-b529-8f31-61c998a443da" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2018-10-04T19:33:18-04:00", + "end": "2018-10-04T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2018-10-04T19:33:18-04:00", + "end": "2018-10-04T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/92698f3f-2d70-4903-bbd3-644ad7172ecb", + "resource": { + "resourceType": "Observation", + "id": "92698f3f-2d70-4903-bbd3-644ad7172ecb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7a6a6000-83f8-4a6f-9435-32181d2a7459" + }, + "effectiveDateTime": "2018-10-04T19:33:18-04:00", + "issued": "2018-10-04T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Procedure/b6f5a081-d8db-4977-9467-a4c0aff408c2", + "resource": { + "resourceType": "Procedure", + "id": "b6f5a081-d8db-4977-9467-a4c0aff408c2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "430193006", + "display": "Medication Reconciliation (procedure)" + } + ], + "text": "Medication Reconciliation (procedure)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7a6a6000-83f8-4a6f-9435-32181d2a7459" + }, + "performedPeriod": { + "start": "2018-10-04T19:33:18-04:00", + "end": "2018-10-04T19:48:18-04:00" + }, + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/b6f91894-4bbd-4d73-affd-161e15a7f9ac", + "resource": { + "resourceType": "DiagnosticReport", + "id": "b6f91894-4bbd-4d73-affd-161e15a7f9ac", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-note" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP7839-6", + "display": "Pathology" + } + ], + "text": "Pathology" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7a6a6000-83f8-4a6f-9435-32181d2a7459" + }, + "effectiveDateTime": "2018-10-04T19:33:18-04:00", + "issued": "2018-10-04T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "presentedForm": [ + { + "contentType": "application/pdf", + "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/7cbda6c7-297e-4ad3-a1f2-9d12149eb341", + "resource": { + "resourceType": "DocumentReference", + "id": "7cbda6c7-297e-4ad3-a1f2-9d12149eb341", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:uuid:39345668-54a0-e9fc-0462-2412a3a80e06" + } + ], + "status": "superseded", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "28570-0", + "display": "Procedure note" + } + ], + "text": "Procedure note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ] + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2018-10-04T19:33:18.715-04:00", + "author": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "custodian": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + "content": [ + { + "attachment": { + "contentType": "application/pdf", + "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" + }, + "format": { + "system": "http://ihe.net/fhir/ValueSet/IHE.FormatCode.codesystem", + "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient", + "display": "mimeType Sufficient" + } + } + ], + "context": { + "encounter": [ + { + "reference": "Encounter/7a6a6000-83f8-4a6f-9435-32181d2a7459" + } + ], + "period": { + "start": "2018-10-04T19:33:18-04:00", + "end": "2018-10-04T19:48:18-04:00" + } + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d", + "resource": { + "resourceType": "Encounter", + "id": "6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d8a73dc8-29c5-581f-d12d-0280ada19560" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2019-10-10T19:33:18-04:00", + "end": "2019-10-10T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2019-10-10T19:33:18-04:00", + "end": "2019-10-10T19:48:18-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/e4e20b4d-9683-487f-a13f-1a7d33f828a3", + "resource": { + "resourceType": "Condition", + "id": "e4e20b4d-9683-487f-a13f-1a7d33f828a3", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "26929004", + "display": "Alzheimer's disease (disorder)" + } + ], + "text": "Alzheimer's disease (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d" + }, + "onsetDateTime": "2019-10-10T19:33:18-04:00", + "recordedDate": "2019-10-10T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/6b090672-7db1-4d22-9b3f-b2fb57663555", + "resource": { + "resourceType": "Observation", + "id": "6b090672-7db1-4d22-9b3f-b2fb57663555", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d" + }, + "effectiveDateTime": "2019-10-10T19:33:18-04:00", + "issued": "2019-10-10T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/a046ab48-fc48-472c-89a4-bef0e60e972f", + "resource": { + "resourceType": "MedicationRequest", + "id": "a046ab48-fc48-472c-89a4-bef0e60e972f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d" + }, + "authoredOn": "2019-10-10T19:33:18-04:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/26823447-3297-4ce9-90bb-9a934fc6032a", + "resource": { + "resourceType": "CareTeam", + "id": "26823447-3297-4ce9-90bb-9a934fc6032a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "active", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d" + }, + "period": { + "start": "2019-10-10T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "26929004", + "display": "Alzheimer's disease (disorder)" + } + ], + "text": "Alzheimer's disease (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/cfe7401c-5d3f-469c-8978-d5fc6e18b3b6", + "resource": { + "resourceType": "CarePlan", + "id": "cfe7401c-5d3f-469c-8978-d5fc6e18b3b6", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Dementia management.
Activities:
  • Dementia management
  • Dementia management
  • Dementia management

Care plan is meant to treat Alzheimer's disease (disorder).
" + }, + "status": "active", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "386257007", + "display": "Dementia management" + } + ], + "text": "Dementia management" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d" + }, + "period": { + "start": "2019-10-10T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/26823447-3297-4ce9-90bb-9a934fc6032a" + } + ], + "addresses": [ + { + "reference": "Condition/e4e20b4d-9683-487f-a13f-1a7d33f828a3" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "311401005", + "display": "Patient education (procedure)" + } + ], + "text": "Patient education (procedure)" + }, + "status": "in-progress", + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "710125008", + "display": "Promotion of use of memory skills" + } + ], + "text": "Promotion of use of memory skills" + }, + "status": "in-progress", + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "315043002", + "display": "Long term social support" + } + ], + "text": "Long term social support" + }, + "status": "in-progress", + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/6fbd5d06-4454-4f6d-9e02-17a5d7391bf4", + "resource": { + "resourceType": "Encounter", + "id": "6fbd5d06-4454-4f6d-9e02-17a5d7391bf4", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "cba215d2-414c-abed-5cde-e920b33b5aca" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2020-03-04T18:33:18-05:00", + "end": "2020-03-04T18:54:18-05:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2020-03-04T18:33:18-05:00", + "end": "2020-03-04T18:54:18-05:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/a49c9f29-95c0-4996-bbd8-ef9af3d3bbcd", + "resource": { + "resourceType": "Condition", + "id": "a49c9f29-95c0-4996-bbd8-ef9af3d3bbcd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6fbd5d06-4454-4f6d-9e02-17a5d7391bf4" + }, + "onsetDateTime": "2020-03-04T18:33:18-05:00", + "abatementDateTime": "2020-03-11T19:54:18-04:00", + "recordedDate": "2020-03-04T18:33:18-05:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/5039140b-4400-4b90-99e8-b4467c6041cb", + "resource": { + "resourceType": "MedicationRequest", + "id": "5039140b-4400-4b90-99e8-b4467c6041cb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "313782", + "display": "Acetaminophen 325 MG Oral Tablet" + } + ], + "text": "Acetaminophen 325 MG Oral Tablet" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6fbd5d06-4454-4f6d-9e02-17a5d7391bf4" + }, + "authoredOn": "2020-03-04T18:54:18-05:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "reasonReference": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + }, + { + "reference": "Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3" + }, + { + "reference": "Condition/79c66c2c-5d68-4dc5-8660-b0ffd2d05fb5" + }, + { + "reference": "Condition/a49c9f29-95c0-4996-bbd8-ef9af3d3bbcd" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/cf292743-2715-42ad-913b-18a42f89d366", + "resource": { + "resourceType": "CareTeam", + "id": "cf292743-2715-42ad-913b-18a42f89d366", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6fbd5d06-4454-4f6d-9e02-17a5d7391bf4" + }, + "period": { + "start": "2020-03-04T18:54:18-05:00", + "end": "2020-03-19T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/23a6fa78-46b2-4c99-b3a3-5681ab89340c", + "resource": { + "resourceType": "CarePlan", + "id": "23a6fa78-46b2-4c99-b3a3-5681ab89340c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6fbd5d06-4454-4f6d-9e02-17a5d7391bf4" + }, + "period": { + "start": "2020-03-04T18:54:18-05:00", + "end": "2020-03-19T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/cf292743-2715-42ad-913b-18a42f89d366" + } + ], + "addresses": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + }, + { + "reference": "Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3" + }, + { + "reference": "Condition/79c66c2c-5d68-4dc5-8660-b0ffd2d05fb5" + }, + { + "reference": "Condition/a49c9f29-95c0-4996-bbd8-ef9af3d3bbcd" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/0141bb6c-f37f-4738-93f1-d50c6cd00314", + "resource": { + "resourceType": "Encounter", + "id": "0141bb6c-f37f-4738-93f1-d50c6cd00314", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "135f0143-7839-e175-3501-e390d9c18f2b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ], + "text": "Encounter for check up (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2020-03-19T19:33:18-04:00", + "end": "2020-03-19T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2020-03-19T19:33:18-04:00", + "end": "2020-03-19T19:48:18-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/40565178-27a5-4c64-8fe9-d5c0d861a550", + "resource": { + "resourceType": "Observation", + "id": "40565178-27a5-4c64-8fe9-d5c0d861a550", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0141bb6c-f37f-4738-93f1-d50c6cd00314" + }, + "effectiveDateTime": "2020-03-19T19:33:18-04:00", + "issued": "2020-03-19T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/dba14bba-d6c6-4bed-82e5-c5f079c8101a", + "resource": { + "resourceType": "MedicationRequest", + "id": "dba14bba-d6c6-4bed-82e5-c5f079c8101a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "895994", + "display": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "120 ACTUAT Fluticasone propionate 0.044 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0141bb6c-f37f-4738-93f1-d50c6cd00314" + }, + "authoredOn": "2020-03-19T19:33:18-04:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/2a283a40-d84e-4ec2-9b12-790019abca3f", + "resource": { + "resourceType": "MedicationRequest", + "id": "2a283a40-d84e-4ec2-9b12-790019abca3f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/0141bb6c-f37f-4738-93f1-d50c6cd00314" + }, + "authoredOn": "2020-03-19T19:33:18-04:00", + "requester": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/8d77fdfd-75b5-4bef-a3f7-120ad6e984c1", + "resource": { + "resourceType": "Encounter", + "id": "8d77fdfd-75b5-4bef-a3f7-120ad6e984c1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "96b9bf03-d8e9-be94-899e-e2054f767e9a" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185345009", + "display": "Encounter for symptom" + } + ], + "text": "Encounter for symptom" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2020-07-18T19:33:18-04:00", + "end": "2020-07-18T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2020-07-18T19:33:18-04:00", + "end": "2020-07-18T19:48:18-04:00" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ] + } + ], + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/3b787cbf-9223-4a58-8e3a-73e8943d9657", + "resource": { + "resourceType": "Condition", + "id": "3b787cbf-9223-4a58-8e3a-73e8943d9657", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition" + ] + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8d77fdfd-75b5-4bef-a3f7-120ad6e984c1" + }, + "onsetDateTime": "2020-07-18T19:33:18-04:00", + "abatementDateTime": "2020-07-25T19:33:18-04:00", + "recordedDate": "2020-07-18T19:33:18-04:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CareTeam/567598ba-adb4-4759-a456-7d9083a35173", + "resource": { + "resourceType": "CareTeam", + "id": "567598ba-adb4-4759-a456-7d9083a35173", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careteam" + ] + }, + "status": "inactive", + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8d77fdfd-75b5-4bef-a3f7-120ad6e984c1" + }, + "period": { + "start": "2020-07-18T19:33:18-04:00", + "end": "2020-08-13T19:33:18-04:00" + }, + "participant": [ + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "116154003", + "display": "Patient" + } + ], + "text": "Patient" + } + ], + "member": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "223366009", + "display": "Healthcare professional (occupation)" + } + ], + "text": "Healthcare professional (occupation)" + } + ], + "member": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + }, + { + "role": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "224891009", + "display": "Healthcare services (qualifier value)" + } + ], + "text": "Healthcare services (qualifier value)" + } + ], + "member": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "10509002", + "display": "Acute bronchitis (disorder)" + } + ], + "text": "Acute bronchitis (disorder)" + } + ], + "managingOrganization": [ + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/CarePlan/90643341-ccf3-4dd3-bc3f-827961466230", + "resource": { + "resourceType": "CarePlan", + "id": "90643341-ccf3-4dd3-bc3f-827961466230", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-careplan" + ] + }, + "text": { + "status": "generated", + "div": "
Care Plan for Respiratory therapy.
Activities:
  • Respiratory therapy
  • Respiratory therapy

Care plan is meant to treat Acute bronchitis (disorder).
" + }, + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/careplan-category", + "code": "assess-plan" + } + ] + }, + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "53950000", + "display": "Respiratory therapy" + } + ], + "text": "Respiratory therapy" + } + ], + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/8d77fdfd-75b5-4bef-a3f7-120ad6e984c1" + }, + "period": { + "start": "2020-07-18T19:33:18-04:00", + "end": "2020-08-13T19:33:18-04:00" + }, + "careTeam": [ + { + "reference": "CareTeam/567598ba-adb4-4759-a456-7d9083a35173" + } + ], + "addresses": [ + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + }, + { + "reference": "Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3" + }, + { + "reference": "Condition/79c66c2c-5d68-4dc5-8660-b0ffd2d05fb5" + }, + { + "reference": "Condition/a49c9f29-95c0-4996-bbd8-ef9af3d3bbcd" + }, + { + "reference": "Condition/3b787cbf-9223-4a58-8e3a-73e8943d9657" + } + ], + "activity": [ + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "304510005", + "display": "Recommendation to avoid exercise" + } + ], + "text": "Recommendation to avoid exercise" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + }, + { + "detail": { + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "371605008", + "display": "Deep breathing and coughing exercises" + } + ], + "text": "Deep breathing and coughing exercises" + }, + "status": "completed", + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/3b141980-dcb2-4a37-b0ea-6eb4c6792119", + "resource": { + "resourceType": "Encounter", + "id": "3b141980-dcb2-4a37-b0ea-6eb4c6792119", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "d0c4771a-32a3-4a52-2e07-af43114c944b" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ], + "text": "Encounter for check up (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2020-08-13T19:33:18-04:00", + "end": "2020-08-13T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + } + ], + "period": { + "start": "2020-08-13T19:33:18-04:00", + "end": "2020-08-13T19:48:18-04:00" + }, + "hospitalization": { + "dischargeDisposition": { + "coding": [ + { + "system": "http://www.nubc.org/patient-discharge", + "code": "01", + "display": "Discharged to home care or self care (routine discharge)" + } + ], + "text": "Discharged to home care or self care (routine discharge)" + } + }, + "location": [ + { + "location": { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44", + "display": "HOLYOKE MEDICAL CENTER" + } + } + ], + "serviceProvider": { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b", + "display": "HOLYOKE MEDICAL CENTER" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/50dfe4af-cebf-4f4f-b2ab-b3737d2306ff", + "resource": { + "resourceType": "Observation", + "id": "50dfe4af-cebf-4f4f-b2ab-b3737d2306ff", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/3b141980-dcb2-4a37-b0ea-6eb4c6792119" + }, + "effectiveDateTime": "2020-08-13T19:33:18-04:00", + "issued": "2020-08-13T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/MedicationRequest/e2cbb91b-cffa-4a42-aa8a-b5f443e65f1b", + "resource": { + "resourceType": "MedicationRequest", + "id": "e2cbb91b-cffa-4a42-aa8a-b5f443e65f1b", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-medicationrequest" + ] + }, + "status": "stopped", + "intent": "plan", + "reportedBoolean": true, + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "2123111", + "display": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + } + ], + "text": "NDA020503 200 ACTUAT Albuterol 0.09 MG/ACTUAT Metered Dose Inhaler" + }, + "subject": { + "reference": "Patient/355" + }, + "authoredOn": "2020-08-13T19:33:18-04:00", + "requester": { + "reference": "Patient/355" + }, + "reasonReference": [ + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "text": "Take as needed.", + "asNeededBoolean": true + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/ed4b91ac-04de-4705-a96b-6cfeb5bdd27a", + "resource": { + "resourceType": "Encounter", + "id": "ed4b91ac-04de-4705-a96b-6cfeb5bdd27a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "use": "official", + "system": "https://github.com/synthetichealth/synthea", + "value": "a2590942-80e3-b27b-39ab-017a88b3fed1" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "162673000", + "display": "General examination of patient (procedure)" + } + ], + "text": "General examination of patient (procedure)" + } + ], + "subject": { + "reference": "Patient/355", + "display": "Mr. Dustin31 Ritchie586" + }, + "participant": [ + { + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", + "code": "PPRF", + "display": "primary performer" + } + ], + "text": "primary performer" + } + ], + "period": { + "start": "2020-10-15T19:33:18-04:00", + "end": "2020-10-15T19:48:18-04:00" + }, + "individual": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + } + ], + "period": { + "start": "2020-10-15T19:33:18-04:00", + "end": "2020-10-15T19:48:18-04:00" + }, + "location": [ + { + "location": { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580", + "display": "PCP170967" + } + } + ], + "serviceProvider": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/eab1d63c-faca-477a-b99a-d751b8b3d5e1", + "resource": { + "resourceType": "Observation", + "id": "eab1d63c-faca-477a-b99a-d751b8b3d5e1", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/ed4b91ac-04de-4705-a96b-6cfeb5bdd27a" + }, + "effectiveDateTime": "2020-10-15T19:33:18-04:00", + "issued": "2020-10-15T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "266919005", + "display": "Never smoked" + } + ], + "text": "Never smoked" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Provenance/78c56bd8-f2f8-42e4-afd3-1161cb8beb35", + "resource": { + "resourceType": "Provenance", + "id": "78c56bd8-f2f8-42e4-afd3-1161cb8beb35", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance" + ] + }, + "target": [ + { + "reference": "Patient/355" + }, + { + "reference": "Location/40e13468-91c1-41f9-a0dc-aaf7f9ad1580" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "PractitionerRole/97af97b1-0724-43ae-b5aa-b0de2f4e8012" + }, + { + "reference": "Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f" + }, + { + "reference": "Observation/d944fd93-1f7a-4a25-96fc-b7a3f59647e9" + }, + { + "reference": "Observation/0e80b0f3-279c-4cd1-9955-0cf6bd3779dd" + }, + { + "reference": "DiagnosticReport/5ad6d4fb-8e6f-45b1-bc32-50e5cdcb1f1d" + }, + { + "reference": "DocumentReference/5debfebb-7007-4653-917c-aaac191e4a7f" + }, + { + "reference": "Encounter/5616e478-17c0-4178-bbdb-41a5e88d3d0d" + }, + { + "reference": "Observation/db528ae2-7993-4781-95dd-ef25442a6a4f" + }, + { + "reference": "Location/24ac42ce-d29d-4f9d-8837-8a78cfe1ea44" + }, + { + "reference": "Organization/22b35b4e-0731-4e8c-8327-21365b331f4b" + }, + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61" + }, + { + "reference": "PractitionerRole/9638642e-1a6e-49c2-a7e1-05b2804c896d" + }, + { + "reference": "Encounter/71e58db9-5d2d-46a7-aee6-ebacebba5b9d" + }, + { + "reference": "Condition/4f1240c4-8dd9-4d0e-96dd-fb100788b307" + }, + { + "reference": "Encounter/afcc27a0-9f36-4ab0-a274-00d8b6b25bc8" + }, + { + "reference": "Observation/80975a92-7b69-4c8e-b6d5-1fdc4aae6496" + }, + { + "reference": "Encounter/91fd8375-7d03-48ae-a70e-619e98fa0463" + }, + { + "reference": "Observation/1a74bee9-3858-4912-a66a-af081a5f0b2c" + }, + { + "reference": "Procedure/25a96069-773b-44a5-b9d3-75e2f2e0ccfc" + }, + { + "reference": "Encounter/0568278d-ede6-4396-82b1-3d84c8d8fc6c" + }, + { + "reference": "Observation/a278b554-5880-4d5d-9c0b-b48c8cc11837" + }, + { + "reference": "Encounter/7b4a44b7-3686-4183-b8d9-6c051ab044b6" + }, + { + "reference": "Observation/d97ad6a8-2e0c-439c-b0fb-5694c4653599" + }, + { + "reference": "Encounter/c2fb077d-892f-4e4f-a45d-49c0fa196d05" + }, + { + "reference": "CareTeam/a5739208-261d-4cf7-979b-8bb1891f05c8" + }, + { + "reference": "CarePlan/f7de8208-7d93-4437-b643-588895f70332" + }, + { + "reference": "AllergyIntolerance/45a8062a-3d8a-41b5-8eb0-c62cb787a647" + }, + { + "reference": "AllergyIntolerance/db4529df-eb07-4863-8c6b-a52021ad20cb" + }, + { + "reference": "AllergyIntolerance/f61a03bf-e1a5-4d95-8bb7-5b7cdef04b76" + }, + { + "reference": "AllergyIntolerance/8967bc59-2e94-4048-94e9-8f148f8429dd" + }, + { + "reference": "AllergyIntolerance/fe1b6196-4894-49d1-aaf0-b300e6fac791" + }, + { + "reference": "AllergyIntolerance/04c7e857-d630-4915-a359-75552fc9730c" + }, + { + "reference": "AllergyIntolerance/f59ec773-37a4-46e8-abff-db6bb6ca6123" + }, + { + "reference": "AllergyIntolerance/34de543a-ec0c-4b9e-b2d2-4b5072c5dd8e" + }, + { + "reference": "AllergyIntolerance/52f07d7c-979a-4836-a722-0b53c7d5f896" + }, + { + "reference": "AllergyIntolerance/97645508-6ebf-44d6-8758-ac6d4f2c8a0e" + }, + { + "reference": "Encounter/e4b9ce36-2183-489f-8a7f-b2baf5c3b54b" + }, + { + "reference": "Observation/f0636e0d-a80a-46a8-9efe-0ae51f12038e" + }, + { + "reference": "Encounter/166b99c9-93f1-4187-ad57-0465142cf19a" + }, + { + "reference": "Condition/ddfa852a-376c-4457-bed3-b2d11286477d" + }, + { + "reference": "CareTeam/f06dc4f2-e688-4782-9643-81ca4808ff44" + }, + { + "reference": "CarePlan/74b2208a-4b7c-45e4-8c3d-926faaf46ffc" + }, + { + "reference": "Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2" + }, + { + "reference": "Organization/b293761b-00ce-4fee-b608-6c5eb0f45447" + }, + { + "reference": "Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729" + }, + { + "reference": "PractitionerRole/fd53e663-e554-4808-a76b-2145c69681fa" + }, + { + "reference": "Encounter/66af6a8e-9488-4e55-bb05-839910cda7c4" + }, + { + "reference": "Observation/1252fa2b-062b-45e2-a26d-a3a05118b176" + }, + { + "reference": "Encounter/5c30d319-07e3-4b21-9229-994aff4a34f7" + }, + { + "reference": "Condition/fccc7c6a-f09b-42f2-ab7f-e4d282b6294a" + }, + { + "reference": "CareTeam/5fcb0194-92ba-4d07-98a7-60cd772731c6" + }, + { + "reference": "CarePlan/7819a00c-6854-4d3e-bfda-65b190fae5a5" + }, + { + "reference": "Encounter/84e912fe-1d69-4ccd-aa51-00e257816ffc" + }, + { + "reference": "Observation/001305ed-308f-4f13-b59b-929e69e61086" + }, + { + "reference": "Encounter/66fba613-d072-4aec-a079-5e598f95b94b" + }, + { + "reference": "Observation/1162de29-a6aa-4e7e-a121-9cc1eb737961" + }, + { + "reference": "Encounter/70c14704-e5a7-4e24-918e-33eb3aeba547" + }, + { + "reference": "Observation/138a0d76-12e0-401b-9909-ee5145597748" + }, + { + "reference": "DiagnosticReport/7eb74fd6-ee29-4ded-944c-54370a291d6b" + }, + { + "reference": "DocumentReference/0f688432-d8d6-486e-a17c-0a4b6c81b4ba" + }, + { + "reference": "Encounter/f8d53c2d-da4b-4c83-a7c6-fea600515106" + }, + { + "reference": "Observation/565d89b2-dbea-40b5-a357-960169e0d181" + }, + { + "reference": "Observation/f5afcba9-a214-4813-a97e-160cf31ffad7" + }, + { + "reference": "Encounter/cea368ca-1784-4cd9-8ec8-c22a299cb8ff" + }, + { + "reference": "Observation/a89474e7-5820-4956-9571-356576530f7d" + }, + { + "reference": "Encounter/59700f1c-d393-445d-b4a5-a81bfe1e099c" + }, + { + "reference": "Condition/e42aa37b-4129-4ecc-a7a3-f4b02380b522" + }, + { + "reference": "MedicationRequest/b972e87d-73cd-41bd-ae90-96195eb23cc2" + }, + { + "reference": "CareTeam/a5dbcb07-2e86-4289-9ff7-e49974e534d7" + }, + { + "reference": "CarePlan/f44018f4-7377-47b6-a315-748c35e128ff" + }, + { + "reference": "Encounter/01261faf-a14f-4f2a-9050-33fd94a3a30a" + }, + { + "reference": "Observation/b752dd5e-cebe-46c4-a09a-503c9dbbf099" + }, + { + "reference": "Encounter/d4d751c7-744a-4faa-8fc6-f2c351381403" + }, + { + "reference": "Observation/5700858f-dd25-4b2a-9a77-16817cce71ee" + }, + { + "reference": "Encounter/1427667f-baeb-4859-ab52-0a683cb2abcb" + }, + { + "reference": "Immunization/dc284d89-d6a2-4ecf-95ce-52b1296b6014" + }, + { + "reference": "Encounter/1225800d-4790-46f8-b93c-0b55e0c74b15" + }, + { + "reference": "Condition/5397e8fe-8961-4332-aed7-6b37c45b3ea5" + }, + { + "reference": "CareTeam/1edbb13a-2ddd-4c6d-916b-2099393c2d6e" + }, + { + "reference": "CarePlan/99b842d7-1053-40c4-81ba-c854786cce7a" + }, + { + "reference": "Encounter/65db610f-2a75-4323-bcf0-1186b3cbc7c5" + }, + { + "reference": "Observation/d242e2a0-dbbf-45c2-ba9a-019041430aef" + }, + { + "reference": "Encounter/77b8df32-3440-40fb-9ed1-c3afb4bfe29b" + }, + { + "reference": "Condition/0b39f529-ab4b-4479-a2c1-5b764caf764f" + }, + { + "reference": "Encounter/da4aab3a-7e5c-4a53-ac8b-fca65b21b544" + }, + { + "reference": "Observation/d2c74470-dda3-4b7f-92ea-50745c554ee5" + }, + { + "reference": "MedicationRequest/7346f3bf-90f0-45f1-9325-9a00a02d05f0" + }, + { + "reference": "Encounter/2a84191a-20d2-4495-b423-7f045499d6ee" + }, + { + "reference": "Observation/8f022d51-4c2f-4f1f-b2c6-2f0b4273e183" + }, + { + "reference": "Encounter/68d2ea4f-2e3a-4ae4-bb1e-db100681aafc" + }, + { + "reference": "Observation/8725cbdc-771d-477f-838a-0c62fb8af9e6" + }, + { + "reference": "Encounter/0015facf-cf04-406a-a161-3bb3d30680ae" + }, + { + "reference": "Observation/7ec6ce0b-503f-4ff0-a124-828fa34fac4d" + }, + { + "reference": "Encounter/048e4913-82ce-4f84-b1e2-4bdb7bd449d9" + }, + { + "reference": "Observation/5f59e713-f0cb-45c2-82ea-ad87392fea2f" + }, + { + "reference": "Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3" + }, + { + "reference": "Observation/f9730f3b-6828-4f67-88bc-4c8ba3a7a961" + }, + { + "reference": "Observation/0d2b9c50-02e8-4ae0-95d3-1929d7bebb79" + }, + { + "reference": "Procedure/c7aac051-202d-455c-8b21-1492da260d5f" + }, + { + "reference": "Immunization/5d706391-59a2-43fe-b9f9-4361e2385e4a" + }, + { + "reference": "Encounter/e9e439a5-b4c7-4b6e-8531-45d42b7a9662" + }, + { + "reference": "Condition/d00138f3-299e-4f2e-8d67-1bbb8bda72c3" + }, + { + "reference": "MedicationRequest/cd805598-da4c-4d98-81ea-085e0187822c" + }, + { + "reference": "CareTeam/429fc800-ee28-4aed-9f50-270d28ea0feb" + }, + { + "reference": "CarePlan/af16cb99-b775-4030-9de0-3a75210f4095" + }, + { + "reference": "Encounter/34f30fab-fc20-4f17-aff3-62d0862e082d" + }, + { + "reference": "Immunization/f1c7d7d3-a64e-476a-a248-bec5523dad97" + }, + { + "reference": "Encounter/98b7fd17-6af7-4a3d-80e2-4bf02e2d9035" + }, + { + "reference": "Observation/341ad73e-a69d-4ec0-ac75-c0a7bb42afa4" + }, + { + "reference": "Encounter/bc0d4a51-dea3-4f8e-800e-e8c625b40c02" + }, + { + "reference": "Observation/894d121f-d3b6-4de1-9e08-2c8b19e8ea13" + }, + { + "reference": "MedicationRequest/7e7e0cea-020a-40df-92c5-8e46bb33b0ae" + }, + { + "reference": "Immunization/7ecbe928-99cb-40ff-bad9-78a60cfb56c0" + }, + { + "reference": "Encounter/fd8bbc8e-b5a3-4b04-b43e-e8ad7b0c5b0c" + }, + { + "reference": "Condition/d35cb424-79b4-44b6-86f7-b476b493b8b3" + }, + { + "reference": "CareTeam/c9ea760f-7dc4-47ec-aa19-0888e657815a" + }, + { + "reference": "CarePlan/b830842d-a740-419b-826c-1be3da6219af" + }, + { + "reference": "Encounter/32fbffd9-d44c-4d9e-b48c-40f55c764217" + }, + { + "reference": "Observation/09f1a427-c7f9-4473-8442-04749d414f2f" + }, + { + "reference": "Immunization/7b066268-77a1-42a0-86ee-60a82dec47ac" + }, + { + "reference": "Encounter/2b04813c-2d46-41a4-a913-f28d54f87735" + }, + { + "reference": "Condition/112fe972-0e68-4f66-8df9-ade60179a122" + }, + { + "reference": "CareTeam/33fb3c33-48b3-44b4-98e7-9823c2fd6d5f" + }, + { + "reference": "CarePlan/fea8d11a-7617-4f2f-9abb-59427cf8c591" + }, + { + "reference": "Encounter/4bc713a2-cf16-489a-b686-c0f4056c4ab7" + }, + { + "reference": "Observation/759b766f-63dc-43c7-ac7c-57b08893f8ca" + }, + { + "reference": "Encounter/769ed6ea-5f01-4c3a-af57-5791f0da7161" + }, + { + "reference": "Observation/268800f2-d121-4323-9b02-2c32b03ea76a" + }, + { + "reference": "Encounter/b7873a00-6473-4c1f-a29d-503fa357b262" + }, + { + "reference": "Condition/851ce984-f049-45ee-a3da-ac836d56957e" + }, + { + "reference": "Encounter/f6152868-8144-4a77-ac77-d89976048abf" + }, + { + "reference": "Observation/aa18b45e-10e3-4903-918e-18e189e3fc3e" + }, + { + "reference": "Encounter/44b20736-0879-4b03-a833-cf5a1dcf80f7" + }, + { + "reference": "Observation/c8b0302c-ffb5-436d-b4cc-189e40cae97e" + }, + { + "reference": "Encounter/a03d1153-630a-4fa3-9763-9f61ee7ca873" + }, + { + "reference": "Condition/bdf59041-be95-4d6d-875e-3f25a1e245f2" + }, + { + "reference": "MedicationRequest/61c84f88-c723-47fe-b270-0d2dbdf5d58c" + }, + { + "reference": "CareTeam/be2c35fd-91a2-479d-ab38-85dc67cf76c4" + }, + { + "reference": "CarePlan/dca817e3-9792-48a2-b65e-90c31f200696" + }, + { + "reference": "Encounter/0905c13c-4e44-47ad-a2a1-08cee96a9967" + }, + { + "reference": "Observation/9bc6466e-2e97-4f32-8ee0-260e3b3ad719" + }, + { + "reference": "Encounter/f25061f0-6af2-420b-b39c-6e45be59567e" + }, + { + "reference": "Observation/b66b6414-4d79-46d2-a588-c049b8d020ae" + }, + { + "reference": "Encounter/4af4feb7-487c-4b4f-aa4d-5512b4a3f2a1" + }, + { + "reference": "Observation/a1c9185f-8e6f-4f51-ba29-ed9f989c6967" + }, + { + "reference": "Immunization/56287113-09c6-4f6f-a3d0-df9c60312ae0" + }, + { + "reference": "Encounter/124fbf3b-f3cd-4ba0-b1f9-212bac634e75" + }, + { + "reference": "Condition/79c66c2c-5d68-4dc5-8660-b0ffd2d05fb5" + }, + { + "reference": "CareTeam/ea614dbf-857f-4e38-a3c5-05a1655c87ab" + }, + { + "reference": "CarePlan/a0e13d71-0fa3-4b19-85fe-0a038ed59087" + }, + { + "reference": "Encounter/090f9c0f-1bd3-408f-8e7d-ee94e8d91308" + }, + { + "reference": "Observation/ff975e55-4c78-495d-b662-9caf06f5c67f" + }, + { + "reference": "MedicationRequest/5e19989e-12e8-4983-addd-84b7304d7419" + }, + { + "reference": "Encounter/b7df9fa5-b84a-4d64-8574-ebf0d0317302" + }, + { + "reference": "Observation/68c714e1-484d-4be0-bee6-5fdcfdaf5c41" + }, + { + "reference": "MedicationRequest/cb54a1ea-2de4-4bea-8a4a-850f0d893766" + }, + { + "reference": "Encounter/4cb17f96-7f35-41e5-b21a-21960a7a6d86" + }, + { + "reference": "Observation/dfa8b8c2-702a-4cd6-b744-2101a548f588" + }, + { + "reference": "Encounter/299dea75-a869-4075-b7fa-3da6ca7a8060" + }, + { + "reference": "Observation/16f891fc-37fb-4806-be48-97b42bb43f10" + }, + { + "reference": "Encounter/8194e744-f66a-4b8e-aa16-5158694bddd0" + }, + { + "reference": "Observation/b7c86d3f-ce98-43b0-8a4c-0344ab95a7b6" + }, + { + "reference": "Encounter/8df66184-01af-4344-adcb-3c11662e8baf" + }, + { + "reference": "Observation/9465abac-6920-4a2d-8ada-a4d91b73fa3c" + }, + { + "reference": "Encounter/46496ae5-5d95-462e-8819-bb4cda9a11c0" + }, + { + "reference": "Observation/0fd9f7c5-d7a0-42f4-ae74-bb55db075014" + }, + { + "reference": "MedicationRequest/42416eaa-87f3-4b0e-baf7-613caf12e436" + }, + { + "reference": "Encounter/9d368f9a-4b52-4c4d-bd40-f8756c62cbe5" + }, + { + "reference": "Condition/83e8533b-4fce-4aa7-a5f9-e46d8fe18973" + }, + { + "reference": "Procedure/4a173dc7-e5ae-4bc8-91e9-11ccd7f7b2cf" + }, + { + "reference": "Procedure/bf41884d-fb47-4ffe-bdbf-3010f36ca46b" + }, + { + "reference": "CareTeam/d1f453c7-a3c9-4ffc-9227-f6588ee43302" + }, + { + "reference": "CarePlan/56d07b39-2108-4d41-a2c0-e0a8ad2afd2e" + }, + { + "reference": "Encounter/8c884f87-46ab-4c21-91e9-48520b6712fb" + }, + { + "reference": "Observation/00c0a6e7-c58c-4360-a3a2-c397f6aebb22" + }, + { + "reference": "MedicationRequest/93f738c7-3393-4b4a-ac59-6b0f5e879386" + }, + { + "reference": "Encounter/92ea3d63-59c6-452d-bc3f-bdde7a10d087" + }, + { + "reference": "Observation/fb658167-4e99-4937-8e97-04988639c327" + }, + { + "reference": "Observation/caeb5cc3-9719-40c3-899c-5d26e38291b3" + }, + { + "reference": "Encounter/601662e4-7f14-46bc-bb2b-986337d82170" + }, + { + "reference": "Observation/a9c8a6de-e255-4d22-8677-c195a595fd60" + }, + { + "reference": "Encounter/6c7a0cdb-6d34-45a5-a910-8cc13d54ccb0" + }, + { + "reference": "Observation/aa052463-320f-490d-bf46-1f8edfa43a72" + }, + { + "reference": "Immunization/161b3b09-73cd-4f53-ae3c-fdb3c7c6a3ea" + }, + { + "reference": "DiagnosticReport/cc18ba30-0c37-4072-a50e-7b9718c1d9c7" + }, + { + "reference": "DocumentReference/0b3e4d43-c7e0-4d97-98f5-6d490ebd3d37" + }, + { + "reference": "Encounter/b6120992-c369-4912-b70e-bde963ff3ed8" + }, + { + "reference": "Condition/1cdf8081-fcd0-4674-8f0b-4bb2584e7517" + }, + { + "reference": "Observation/3900baaa-10ca-41a9-87f2-738b15f6d4ae" + }, + { + "reference": "CareTeam/7a10b5c0-7a9d-4fa1-a136-5c99c9038651" + }, + { + "reference": "CarePlan/dcc5e8d8-c71f-4583-8824-130645f83026" + }, + { + "reference": "Encounter/2bab7cb6-92c2-47b3-8158-d863d1cd60ad" + }, + { + "reference": "Condition/631e61ce-4a88-4031-8604-99494d8ae68e" + }, + { + "reference": "Observation/42329f5b-953a-42e7-84fe-1bcaedd8d835" + }, + { + "reference": "Observation/b702f5e8-0245-4e10-a335-3f2826cab32f" + }, + { + "reference": "Encounter/9c526bce-d593-462f-bd3f-778010ccf098" + }, + { + "reference": "Procedure/76e50d44-0cda-4017-8447-0d58fd97e8e5" + }, + { + "reference": "Procedure/84b29d30-adc3-40bb-b214-c8edd8df9739" + }, + { + "reference": "Encounter/078933ad-761a-4873-b33d-dee7e96d3c67" + }, + { + "reference": "Observation/e5b5de5b-3f53-4997-aa65-5a98bbd579c9" + }, + { + "reference": "Procedure/f833951e-0e8c-4820-89bc-7d773887e5aa" + }, + { + "reference": "Encounter/1bb8ae17-850c-48ef-a118-9cfdc8eb2b48" + }, + { + "reference": "Immunization/5ffcef69-9b59-4a70-9ee8-fe5fb9012160" + }, + { + "reference": "Encounter/b0dc1307-c129-4b7a-9983-c2a105afb9c6" + }, + { + "reference": "Observation/015d48ff-bf49-4cb9-86ba-66f495252de1" + }, + { + "reference": "Encounter/03da0eb1-a183-4c3b-ac62-35dcf9e70148" + }, + { + "reference": "Condition/d7f98458-755a-4dd7-9efe-a1558d2fecb2" + }, + { + "reference": "Encounter/af074e38-b0d7-4665-95bf-1cdbb40d9818" + }, + { + "reference": "Observation/e0782c1d-228e-4f86-a26a-c6cc8920d598" + }, + { + "reference": "Procedure/660bedd7-b601-4f48-8797-7123bca5d815" + }, + { + "reference": "DiagnosticReport/ff13c410-dfa3-45a9-b192-bddb40051bb3" + }, + { + "reference": "DocumentReference/229b8546-0624-416e-aef9-62482becba8b" + }, + { + "reference": "Encounter/94914230-5dea-46c3-aad9-d84c4c818b71" + }, + { + "reference": "Observation/9d81eaf8-4526-4570-b983-d1d6bb5be0c8" + }, + { + "reference": "Procedure/93b76323-91f2-43cf-8345-3381be31876c" + }, + { + "reference": "DiagnosticReport/b46789b4-933b-46da-91b2-16634368a815" + }, + { + "reference": "DocumentReference/c89f31b4-3913-41d5-835e-530d01644be6" + }, + { + "reference": "Encounter/a2721212-21a0-48b5-8f57-08757c3bce0f" + }, + { + "reference": "Observation/1b1bb089-0b0d-44f9-b279-e6be18f32466" + }, + { + "reference": "Encounter/89e41b0f-54ac-4779-baba-295fdd78bc45" + }, + { + "reference": "Observation/ed307f1b-ec78-4fed-b5ec-b989c6eea02c" + }, + { + "reference": "MedicationRequest/e29d2a8a-9826-48e1-8474-e4c6ab2a109b" + }, + { + "reference": "Encounter/ee033ff0-1458-4c9f-8607-09b56ca1180c" + }, + { + "reference": "Observation/1839c579-71cf-439a-a227-cd0e53516626" + }, + { + "reference": "Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688" + }, + { + "reference": "Observation/dc1496d4-329b-45ef-8713-d047f3568f8e" + }, + { + "reference": "Observation/29605325-0d5f-4c04-bd0e-5bd6dbff3220" + }, + { + "reference": "Procedure/279c37da-d970-491a-a35c-a811b42b6d87" + }, + { + "reference": "MedicationRequest/ebc22808-da82-4089-95b3-13fd4fdecbe3" + }, + { + "reference": "Encounter/4b45fe5a-1061-4fca-aaa9-9cd89b652439" + }, + { + "reference": "Observation/68d5d947-94ed-489c-a59e-6a775c52be64" + }, + { + "reference": "Encounter/79cbf8f3-2c37-40d8-8696-90c60819bf62" + }, + { + "reference": "Observation/1ef68686-363d-481e-93a0-29a8608ddb96" + }, + { + "reference": "Encounter/47c6dc67-ff88-410a-91e0-b0371c50f8c8" + }, + { + "reference": "Observation/a65c91f7-c624-41f9-ab99-e4aedfed16dd" + }, + { + "reference": "Procedure/8e9a596a-18ed-4cf2-ab71-67c7cef23fdd" + }, + { + "reference": "Encounter/485144a3-62c9-4b5c-bb1b-e45c5f238686" + }, + { + "reference": "Observation/6933f9e9-58df-4c66-a8f4-87dd467ea245" + }, + { + "reference": "DiagnosticReport/0ac535c1-9c2d-4b92-8282-5df291b200b0" + }, + { + "reference": "DocumentReference/6324358d-7790-4eab-a59a-ee9eced3dc6d" + }, + { + "reference": "Encounter/c75beb06-534b-4908-8e5a-27b7a9f895a8" + }, + { + "reference": "Observation/45766ce3-1034-4d07-a295-60f70d8a555b" + }, + { + "reference": "Encounter/64b8d0fc-c973-4c78-b8ad-bf9612cda746" + }, + { + "reference": "Observation/48c588f9-94a9-46bd-98e9-5b4d6b56c78d" + }, + { + "reference": "Encounter/761f6a0e-7cf8-433d-9151-79780866ed8c" + }, + { + "reference": "Observation/e2b0a9ed-1dba-42b3-9b1e-4beb815f816a" + }, + { + "reference": "Immunization/c07821a4-4da0-44fa-b15c-2daa67c4a09b" + }, + { + "reference": "Encounter/b2ac5712-6e6d-495b-8ade-1275d45bdd91" + }, + { + "reference": "Observation/942a0fd1-b1da-49b5-a1ed-57531b5445bf" + }, + { + "reference": "Encounter/1c350b7c-4b16-47d1-bb62-e4ca9619c104" + }, + { + "reference": "Observation/b5e71495-97ef-419d-bb3c-5dd88725daa8" + }, + { + "reference": "Immunization/28a7cf00-ff10-4aec-8264-ed4c9b6b4ad4" + }, + { + "reference": "DiagnosticReport/04cd13ed-6859-4a17-ac76-d644b1e7339e" + }, + { + "reference": "DocumentReference/d19850b4-cf69-4844-a94b-661068464209" + }, + { + "reference": "Encounter/ce49d24f-5b4f-4823-9058-6b8b26d600f6" + }, + { + "reference": "Observation/ed24ab16-fce5-46ef-b858-b35f58f28355" + }, + { + "reference": "Procedure/bedb37c7-73ae-4332-86b9-a7d3d73ecab2" + }, + { + "reference": "Encounter/4475bf2f-c407-4eb4-9963-d54421a266e2" + }, + { + "reference": "Observation/e3ac022b-ea92-4d1a-89ac-8ca08acbba57" + }, + { + "reference": "Immunization/ea2b85a8-42fd-4271-8759-91bc8a0a2b55" + }, + { + "reference": "Encounter/9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25" + }, + { + "reference": "Observation/b8de16a5-486e-4e37-a3fd-b634a918e290" + }, + { + "reference": "Observation/c68e98f6-39e8-4df6-85fe-4457b26d2a5f" + }, + { + "reference": "Encounter/882f0954-47a9-47dc-86b8-27095ce9e4e2" + }, + { + "reference": "Observation/9816828c-b1aa-4f9b-a3a7-5cb3541b3464" + }, + { + "reference": "Procedure/bed2d0ad-8829-4897-8352-053036c3d3c5" + }, + { + "reference": "Encounter/7912781b-9984-42cb-86b9-ed6e2e38018e" + }, + { + "reference": "Condition/236a970e-9931-4367-b270-cdf739f2608f" + }, + { + "reference": "DiagnosticReport/e105b3cf-9261-4089-aad9-9df6bba4f1e7" + }, + { + "reference": "DocumentReference/2af2c09c-5fef-4259-85ee-d6cd4902c64b" + }, + { + "reference": "Encounter/3deae24e-43da-40a7-aed0-42cb72b42229" + }, + { + "reference": "Observation/084fdc27-b2f8-44bd-9f01-ce6c878d48bd" + }, + { + "reference": "MedicationRequest/b856fe02-a057-4455-aefe-b4853b256771" + }, + { + "reference": "Immunization/034cd42a-e3a0-4ec6-844e-42bb0b5490c7" + }, + { + "reference": "Encounter/2c0dc527-f6bd-4e48-9768-8948da60ee21" + }, + { + "reference": "Observation/4228a6ad-b705-4e3f-90d4-a6f680876335" + }, + { + "reference": "Encounter/624929fb-5d50-4283-98aa-ecdf42dc6114" + }, + { + "reference": "Observation/6ac9434b-84cb-4696-91bc-b974a572e434" + }, + { + "reference": "MedicationRequest/b25b96a8-c09e-407a-b393-139580ac5b11" + }, + { + "reference": "Encounter/68ef9abe-dffc-415e-b30c-8f0627fed8eb" + }, + { + "reference": "DiagnosticReport/06722418-90a1-4bdc-ba14-843cf07027eb" + }, + { + "reference": "DocumentReference/233f8c4a-82d1-40c0-9807-52771c0b308b" + }, + { + "reference": "Encounter/fdd10a40-0acf-4828-8818-6a8377d9d111" + }, + { + "reference": "Condition/be92fbf2-0e03-4133-a2ab-bb79348919f6" + }, + { + "reference": "DiagnosticReport/9db2c386-e7eb-40fd-b228-708005b1fbe6" + }, + { + "reference": "DocumentReference/698d0694-5f3d-42cb-9180-81e147d17ba6" + }, + { + "reference": "Encounter/0628881a-61b5-4aeb-8284-280b5427707f" + }, + { + "reference": "Observation/21d284d3-1223-42c1-8fff-c1f40b5152e9" + }, + { + "reference": "DiagnosticReport/77acef96-2e2c-49d3-8b15-16d64ef2b02b" + }, + { + "reference": "DocumentReference/390f4b9f-9623-4561-a76b-32f4bc4a833d" + }, + { + "reference": "Encounter/59c8a06b-d4cf-4359-b041-4838af360e26" + }, + { + "reference": "Observation/0e209bce-e042-4f6b-9c20-213356adbf88" + }, + { + "reference": "Encounter/dfa71d7a-1aa1-4777-beda-0a35bceb18cb" + }, + { + "reference": "Condition/f375b68a-1ef0-44ff-8dca-a82e4d052ddb" + }, + { + "reference": "Procedure/b1518130-81ab-4f62-8753-0234a6031d19" + }, + { + "reference": "Device/b14f1d62-8890-4813-8c27-f3f2540fbfb0" + }, + { + "reference": "DiagnosticReport/2fccd652-80bd-4072-af74-e97ecb1c2fe7" + }, + { + "reference": "DocumentReference/141f625d-12e0-4b85-88b0-013ce928f003" + }, + { + "reference": "Encounter/85c6f2af-eeb1-4466-b407-814efc47a8bb" + }, + { + "reference": "Observation/49f0a147-4fdf-43a4-89a4-301c7cba1519" + }, + { + "reference": "Encounter/99699734-78b1-47a5-a36b-0676bbc131ef" + }, + { + "reference": "Observation/a025c7bd-8c53-4321-bb5d-5affe04482a9" + }, + { + "reference": "Immunization/f9b63e94-63df-4857-a024-44c56620299a" + }, + { + "reference": "Encounter/1abbd548-f921-4ca8-bbb5-ba44ca33b830" + }, + { + "reference": "Observation/eab0a149-35b0-47fb-a280-3b792be983cb" + }, + { + "reference": "Immunization/9bd44f61-7cc3-41e5-a479-836473985655" + }, + { + "reference": "Encounter/f4ca7306-536d-4a44-8c9c-88b7e0bdb5d1" + }, + { + "reference": "Observation/a764f2d3-6ef0-4d47-9992-8f1d30f9b05d" + }, + { + "reference": "Observation/769a81c5-32ee-427e-b35e-fcfcbbebae14" + }, + { + "reference": "Encounter/53c77ae1-f76a-4157-b576-79604c83f5b6" + }, + { + "reference": "Observation/c71e5b55-da93-483f-9e7a-5ef69f685a49" + }, + { + "reference": "Immunization/08406a81-e790-4397-bb64-5b90d23947ad" + }, + { + "reference": "Encounter/f4f29fb9-7b60-4288-b35b-88adedfc51ab" + }, + { + "reference": "Observation/57e2cde7-e7ae-4c61-b528-8ae3e6b19c3e" + }, + { + "reference": "Encounter/12b3e386-b1c1-402c-b319-ba5f3f60a13e" + }, + { + "reference": "Observation/2c10419a-a5ec-42a6-829f-b8eba3641ef6" + }, + { + "reference": "Immunization/5939a732-b45e-4cdd-9b8d-a22f846e4fac" + }, + { + "reference": "DiagnosticReport/65261ba6-fb8d-4910-a3f5-3c7abcb26575" + }, + { + "reference": "DocumentReference/e5e23c90-9d25-463b-a9da-888b974d5f69" + }, + { + "reference": "Encounter/150cda68-4cc4-42f1-8245-593bef449e9b" + }, + { + "reference": "Condition/156c71a6-8813-4940-943c-41fae081f24a" + }, + { + "reference": "CareTeam/bb5b4413-960e-4d8c-8622-cbef443cd9d5" + }, + { + "reference": "CarePlan/1f9538e8-2b4c-403b-9741-420b4b564221" + }, + { + "reference": "Encounter/7fa81288-c0f2-4c99-b1c2-4bef7635d2b1" + }, + { + "reference": "Condition/3439eaa9-1617-47af-a51e-3cd15c521024" + }, + { + "reference": "DiagnosticReport/5b97414f-21b4-4158-a576-ef7c89248711" + }, + { + "reference": "DocumentReference/997213cf-6b26-41ae-b3ea-79491c26de6e" + }, + { + "reference": "Encounter/bdb6729c-06ec-457a-986e-ce67a00d7a04" + }, + { + "reference": "Observation/906eda09-138c-4603-8c39-d3fb528090fe" + }, + { + "reference": "DiagnosticReport/5e6e636b-7144-45e8-add9-3c71daf8deb6" + }, + { + "reference": "DocumentReference/1be51188-1d13-4929-8486-ae631639832c" + }, + { + "reference": "Encounter/2a81f82f-f217-4425-90e4-c07ebc5243fa" + }, + { + "reference": "Condition/88c1c3a7-38d7-40c4-a4c1-50a4b882eb70" + }, + { + "reference": "DiagnosticReport/a3d45b1f-28de-452b-b606-d9ea48d3a833" + }, + { + "reference": "DocumentReference/4eb32623-5a0d-4bcb-a0ed-8f5e0593d15f" + }, + { + "reference": "Encounter/b3f79d58-6cfb-4081-9ab1-f340f10d5a61" + }, + { + "reference": "Condition/28576eac-c318-46b8-983d-d780d4443cc5" + }, + { + "reference": "CareTeam/b30c6822-d970-4070-80c0-6cc6f57c933d" + }, + { + "reference": "CarePlan/4dece6cc-f2bd-4406-bda2-8a9b5cc2b0c8" + }, + { + "reference": "Encounter/8a31da60-f426-42b0-b434-99098bd810cb" + }, + { + "reference": "CareTeam/1d2b8436-1acd-4055-9df4-b844fcc3aa0d" + }, + { + "reference": "CarePlan/2d837af5-e3e8-429e-8f25-80d76635921d" + }, + { + "reference": "Encounter/bffe99dd-9f78-42cf-91b0-6f96d0eeb251" + }, + { + "reference": "Observation/310bc2a9-ad7f-4461-9e86-cfeb10d656d8" + }, + { + "reference": "DiagnosticReport/85159e41-a589-4ecb-a93f-d25c3414cd76" + }, + { + "reference": "DocumentReference/c9181849-21dc-4db5-8c0e-603d562ee148" + }, + { + "reference": "Encounter/66bba914-34ab-458c-bda7-30f1d801272a" + }, + { + "reference": "Observation/f2acb364-ce31-4783-9a0d-9f2178d0df99" + }, + { + "reference": "Encounter/3789d5cc-d2e8-43d6-a64a-23e9c45c6dee" + }, + { + "reference": "Observation/87687561-1ecb-4c72-b7d8-d319cf448504" + }, + { + "reference": "Encounter/89c33835-dc4c-4a06-a86e-7de53964ed2f" + }, + { + "reference": "Condition/954be85a-97db-4b7d-a07a-0b8448ab3f37" + }, + { + "reference": "Observation/51d65f64-47a7-4763-b7a1-bca2595ffd71" + }, + { + "reference": "Encounter/a1456342-3118-4e14-991d-7e80db12d0de" + }, + { + "reference": "Observation/f6aed97c-a723-4867-bf7c-505eaf3b4214" + }, + { + "reference": "Procedure/4f982bb5-6cdf-468b-9230-27820b48950f" + }, + { + "reference": "Immunization/deaeb128-519a-4b9a-8c0d-1cecae3f5e5c" + }, + { + "reference": "DiagnosticReport/4fd00988-e28f-4c07-bd19-66917c0a2132" + }, + { + "reference": "Encounter/42f0aefc-74f0-4d68-8c98-fade7f41ef68" + }, + { + "reference": "Observation/f7f86c28-560d-4835-bd71-4949edf99bd6" + }, + { + "reference": "Encounter/8d008d4e-4402-4e60-946a-19fb51b58541" + }, + { + "reference": "Observation/d7555d04-7c51-4699-84ba-7576bffbe112" + }, + { + "reference": "Procedure/bb569b96-dc67-4f6d-ae88-a7fad899ca04" + }, + { + "reference": "Immunization/45d1e045-1e9f-4400-9312-058d9369ba68" + }, + { + "reference": "Encounter/c2a341b9-20fd-4ecc-8170-dec5267e1d5e" + }, + { + "reference": "Observation/885993b6-643f-4c50-8431-ef703058e18b" + }, + { + "reference": "Observation/6914ed77-32e4-4225-a1dc-cec7e158bde4" + }, + { + "reference": "MedicationRequest/7024f69d-0ce7-469b-9f4d-b692f0d50cc8" + }, + { + "reference": "DiagnosticReport/362082ce-60f5-4f7a-b25a-a8832c71d0f4" + }, + { + "reference": "DocumentReference/75d6b165-1809-48ba-a4df-11d57f51f555" + }, + { + "reference": "Encounter/48ad00f6-86c6-414b-9229-f2c58728c5d3" + }, + { + "reference": "Observation/c16cf211-1457-46b7-9978-eb609ce4a363" + }, + { + "reference": "Immunization/d567105a-ea2d-4eae-9304-c2f3de0077dd" + }, + { + "reference": "Encounter/5315626e-e90a-43ae-bb1d-7a5ae5fad4db" + }, + { + "reference": "Condition/a4971955-2258-4286-86b2-f958daade9f8" + }, + { + "reference": "CareTeam/1c592032-03a3-454b-b0f4-c788b74b565b" + }, + { + "reference": "CarePlan/08f39959-fcb4-4107-b49d-f5e29ba0abc0" + }, + { + "reference": "Encounter/02f84c09-a131-4170-aaf7-7639dab7d8a9" + }, + { + "reference": "Observation/18183885-c2b1-4441-8737-6d6b65046a3e" + }, + { + "reference": "Encounter/e9fa71a5-df9e-4ff3-b3f4-859d646ed18c" + }, + { + "reference": "Immunization/fcd6e59c-de97-445a-8c16-770085d8eb14" + }, + { + "reference": "Encounter/6fcf54c2-f2e4-4461-9ff0-5c257793b4de" + }, + { + "reference": "Observation/62345db9-6ba4-4683-8b73-b25550a1d24e" + }, + { + "reference": "Procedure/caf34c82-47b2-4c5b-a806-7eaa94bc2e5d" + }, + { + "reference": "MedicationRequest/656c25ad-09f1-4a96-ac5f-cfb007c203b7" + }, + { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + { + "reference": "Observation/80a8b837-b725-4485-ad30-d601531cec6a" + }, + { + "reference": "Observation/30fcbb0b-e3d4-43db-bd69-e6b57672b600" + }, + { + "reference": "Observation/d4776b33-180c-4841-a77b-9cc5271a1628" + }, + { + "reference": "Observation/401cb2af-ca73-4448-be68-9925b4ffb2bf" + }, + { + "reference": "Observation/94a71e4d-4424-46ca-ad4a-2ac58538f4d2" + }, + { + "reference": "Observation/fce04d41-4ed7-4642-86b9-ca12aef0f443" + }, + { + "reference": "Observation/f7ff920b-c830-4fd3-9e2c-3814c2409cfb" + }, + { + "reference": "Observation/4f0f9771-ba5b-4245-b9be-7cebd6e6e164" + }, + { + "reference": "Observation/bc2b7b7b-860f-4d0e-bab1-7b1c11d49bca" + }, + { + "reference": "Procedure/bcd4557c-0b3c-4d21-881f-54e4223138ed" + }, + { + "reference": "DiagnosticReport/110c5785-3883-452b-b13a-0b451d3f4ea5" + }, + { + "reference": "Encounter/4bacfa96-d82b-4240-926c-e6bdff076054" + }, + { + "reference": "Condition/07a44c88-c965-40dd-a819-b28e739bd015" + }, + { + "reference": "Procedure/5f72a6c0-d05e-405d-8587-86ca7d5be004" + }, + { + "reference": "CareTeam/fbb9f858-9f03-4ef0-acd5-822b3c8e4ea7" + }, + { + "reference": "CarePlan/51eca3a0-e03a-41a2-831d-e2a348aacc9e" + }, + { + "reference": "DiagnosticReport/7bda0303-036c-4db7-a5e5-5d9c3e318335" + }, + { + "reference": "DocumentReference/ef03f149-526d-4bd6-b25f-ab5e2549bd86" + }, + { + "reference": "Encounter/7a6a6000-83f8-4a6f-9435-32181d2a7459" + }, + { + "reference": "Observation/92698f3f-2d70-4903-bbd3-644ad7172ecb" + }, + { + "reference": "Procedure/b6f5a081-d8db-4977-9467-a4c0aff408c2" + }, + { + "reference": "DiagnosticReport/b6f91894-4bbd-4d73-affd-161e15a7f9ac" + }, + { + "reference": "DocumentReference/7cbda6c7-297e-4ad3-a1f2-9d12149eb341" + }, + { + "reference": "Encounter/6a0b7c1d-a673-4b2e-9cbf-ebe5f839780d" + }, + { + "reference": "Condition/e4e20b4d-9683-487f-a13f-1a7d33f828a3" + }, + { + "reference": "Observation/6b090672-7db1-4d22-9b3f-b2fb57663555" + }, + { + "reference": "MedicationRequest/a046ab48-fc48-472c-89a4-bef0e60e972f" + }, + { + "reference": "CareTeam/26823447-3297-4ce9-90bb-9a934fc6032a" + }, + { + "reference": "CarePlan/cfe7401c-5d3f-469c-8978-d5fc6e18b3b6" + }, + { + "reference": "Encounter/6fbd5d06-4454-4f6d-9e02-17a5d7391bf4" + }, + { + "reference": "Condition/a49c9f29-95c0-4996-bbd8-ef9af3d3bbcd" + }, + { + "reference": "MedicationRequest/5039140b-4400-4b90-99e8-b4467c6041cb" + }, + { + "reference": "CareTeam/cf292743-2715-42ad-913b-18a42f89d366" + }, + { + "reference": "CarePlan/23a6fa78-46b2-4c99-b3a3-5681ab89340c" + }, + { + "reference": "Encounter/0141bb6c-f37f-4738-93f1-d50c6cd00314" + }, + { + "reference": "Observation/40565178-27a5-4c64-8fe9-d5c0d861a550" + }, + { + "reference": "MedicationRequest/dba14bba-d6c6-4bed-82e5-c5f079c8101a" + }, + { + "reference": "MedicationRequest/2a283a40-d84e-4ec2-9b12-790019abca3f" + }, + { + "reference": "Encounter/8d77fdfd-75b5-4bef-a3f7-120ad6e984c1" + }, + { + "reference": "Condition/3b787cbf-9223-4a58-8e3a-73e8943d9657" + }, + { + "reference": "CareTeam/567598ba-adb4-4759-a456-7d9083a35173" + }, + { + "reference": "CarePlan/90643341-ccf3-4dd3-bc3f-827961466230" + }, + { + "reference": "Encounter/3b141980-dcb2-4a37-b0ea-6eb4c6792119" + }, + { + "reference": "Observation/50dfe4af-cebf-4f4f-b2ab-b3737d2306ff" + }, + { + "reference": "MedicationRequest/e2cbb91b-cffa-4a42-aa8a-b5f443e65f1b" + }, + { + "reference": "Encounter/ed4b91ac-04de-4705-a96b-6cfeb5bdd27a" + }, + { + "reference": "Observation/eab1d63c-faca-477a-b99a-d751b8b3d5e1" + }, + { + "reference": "Device/ad1618c4-c645-4657-8592-5278c9f9b797" + }, + { + "reference": "Goal/aca8b5fc-dfb1-450e-95a8-082de5cc0ffb" + }, + { + "reference": "Observation/19cae3ca-ecfc-4a36-bd03-09971b9614a9" + }, + { + "reference": "Observation/313d2fcc-bd96-4f71-b984-96ced01ede86" + }, + { + "reference": "Observation/77cfc28b-1b0a-4e22-b2a2-b4fba225d102" + }, + { + "reference": "Observation/6a59cc75-bee1-42d2-bf54-8876518b4c9e" + }, + { + "reference": "Observation/52851ef7-a01f-40d7-ad1f-3fe196e94ed9" + }, + { + "reference": "Observation/31763489-7e3e-4742-aa65-3381804f7bbd" + }, + { + "reference": "Observation/a919ca3c-3d1d-43d6-8412-38405ce6d040" + }, + { + "reference": "Observation/4686864b-ad09-479c-ba81-b35b01080a2f" + }, + { + "reference": "Observation/2ad43e48-1d80-4757-b500-c2c6e947e9d2" + }, + { + "reference": "Observation/12c4165d-0907-4595-8794-e0d32b1bb58d" + }, + { + "reference": "Observation/b04ed46f-9758-420f-9d58-63891eae3ce7" + }, + { + "reference": "Observation/9126e618-027a-42cb-9aa1-6b9caef52e6a" + }, + { + "reference": "Observation/242aba00-921c-4657-ab46-9ab99b9e476f" + }, + { + "reference": "Observation/745da49b-e398-4d10-a668-98876a1e0310" + }, + { + "reference": "Observation/b7e05abc-9f46-4a37-b5e4-afee2822ea40" + }, + { + "reference": "Observation/8a86de79-0ab1-47de-a0c3-cae9252340e7" + }, + { + "reference": "Observation/993f8179-a407-4320-b8f7-16d38f77e177" + }, + { + "reference": "Observation/67916e3b-33e3-461c-a9a6-4fbe0ea577a7" + }, + { + "reference": "Observation/3c593eb0-8c69-464e-8b86-42a963a6e977" + }, + { + "reference": "DiagnosticReport/de7ed378-04c8-41d9-821b-136fa23272d5" + }, + { + "reference": "Condition/f6cda4f5-7fbb-4403-9710-109d5a2f9b18" + }, + { + "reference": "Condition/069299da-ec0a-45b2-802f-fc1b401f4995" + }, + { + "reference": "Observation/827d2566-0216-4b21-9399-6fdad26efbf0" + }, + { + "reference": "Observation/84c2116f-f03a-4ccf-bab6-7b298c09c32c" + }, + { + "reference": "Observation/449bffaf-6849-42c5-804b-c58d20b14652" + }, + { + "reference": "Observation/4230c636-9691-428c-b1f4-eaed5113a3a8" + }, + { + "reference": "Observation/3f49f5ad-c36a-4c6b-ae2b-01bfa05140cc" + }, + { + "reference": "Observation/cf6f6131-0048-42ba-a2ab-e02326dfc935" + }, + { + "reference": "Observation/edc4d330-5c24-4652-ad24-175253e74240" + }, + { + "reference": "ServiceRequest/41066903-7470-4d8b-a5aa-8b72984c5191" + }, + { + "reference": "ServiceRequest/d5130df3-e303-40e0-9923-f9e5b53c2315" + }, + { + "reference": "DocumentReference/bb176123-929d-4ca9-a021-7e46eb98ecbb" + } + ], + "recorded": "2020-12-10T18:33:18.715-05:00", + "agent": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", + "code": "author", + "display": "Author" + } + ], + "text": "Author" + }, + "who": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "onBehalfOf": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + }, + { + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-provenance-participant-type", + "code": "transmitter", + "display": "Transmitter" + } + ], + "text": "Transmitter" + }, + "who": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + }, + "onBehalfOf": { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Device/ad1618c4-c645-4657-8592-5278c9f9b797", + "resource": { + "resourceType": "Device", + "id": "ad1618c4-c645-4657-8592-5278c9f9b797", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-implantable-device" + ] + }, + "udiCarrier": [ + { + "deviceIdentifier": "43069338026389", + "carrierAIDC": "iVBORw0KGgoAAAANSUhEUgAAAioAAAB2CAIAAABpgS9BAAADHUlEQVR42u3aXY+iMBiAUbrZ//+XuxcmpunXvkABNedczahAReWZdkxbIee8bVtK6f3zS3tLaXTv6/b5nttHtuMZHaW8JXJvu8/4GNp72+NGxhN5jvPnHn8tInubn4fIfiKjHZ35+fth1bM49g4/dpaOfWrOnMk7X829449/ciOfzcjrFX/FV73f4sfdexWdv8fOvB9G17T4FW/+WkfOw8ufDQBuJz8AyA8A8gMA8gOA/ACA/AAgPwAgPwDIDwDIDwDyA4D8AID8ACA/ACA/AMgPAMgPAPIDAPIDgPwAID8AID8AyA8AyA8A8gMA8gOA/ACA/AAgPwDIDwDIDwDyAwDyA4D8AID8ACA/ACA/AMgPAPIDAPIDgPwAgPwAID8AID8AyA8AyA8A8gOA/ACA/AAgPwAgPwDIDwDIDwDyAwDyA4D8ACA/ACA/AMgPAMgPAPIDAPIDgPwAgPwAID8AyA8AyA8A8gMA8gOA/ACA/AAgPwAgPwDIDwDyAwDyA4D8AID8ACA/ACA/AMgPAMgPAPIDgPw4BQDIDwDyAwDyA4D8AID8ACA/ACA/AMgPAMgPAPIDgPwAgPwAID8AID8AfJuUc3YWADD7AUB+AOACf50CrpBSqm65dJn3dbgDhyjHeWaEKS1bx141pAefAsgPT7rzWpZzboO3d5yfc/39wCHBchbfYGXDPmdIYPYDW/dv+fev3eWm93pa+bDycjy/4p9cwhoNafRzdZTJM9o1pPYo5eajExI/evdkPrX6h/zAstgEO9FtUtmeqkDdDYP7PJPJ4Bylu/mufXaLMip39Zj40bttO3nqQH54XnvZ6oZk19XtGy+FB8bcVme0k//uPHh0q3zID7/fpPlS1fK518LN29nY1UOqgn1Pm3UI+eEHtbOfdrXnqTnH1dOshV/svrQQVtu4h2++8UB7tqOrPccuu8GtRnOa6l/xB/6TtHxIVzx3MyHMfvid2ET+pp53qNpq/kWv97Jetc/gd+RGaQxuPj/62iHN5y7Bo1cns/yqoZkQd1wivL34xskT8O0svgFg9gOA2Q8AyA8Av+MfJjJq5w+06kcAAAAASUVORK5CYII=" + } + ], + "status": "active", + "distinctIdentifier": "43069338026389", + "manufactureDate": "2000-03-02T18:33:18-05:00", + "expirationDate": "2025-03-17T19:33:18-04:00", + "lotNumber": "1134", + "serialNumber": "842026117977", + "deviceName": [ + { + "name": "Implantable defibrillator, device (physical object)", + "type": "user-friendly-name" + } + ], + "type": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "72506001", + "display": "Implantable defibrillator, device (physical object)" + } + ], + "text": "Implantable defibrillator, device (physical object)" + }, + "patient": { + "reference": "Patient/355" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Goal/aca8b5fc-dfb1-450e-95a8-082de5cc0ffb", + "resource": { + "resourceType": "Goal", + "id": "aca8b5fc-dfb1-450e-95a8-082de5cc0ffb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal" + ] + }, + "lifecycleStatus": "active", + "description": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "281004", + "display": "Alcoholic dementia" + } + ], + "text": "Alcoholic dementia" + }, + "subject": { + "reference": "Patient/355" + }, + "target": [ + { + "dueDate": "2020-12-07" + } + ], + "expressedBy": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/19cae3ca-ecfc-4a36-bd03-09971b9614a9", + "resource": { + "resourceType": "Observation", + "id": "19cae3ca-ecfc-4a36-bd03-09971b9614a9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/vitalsigns", + "http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8289-1", + "display": "Head Occipital-frontal circumference Percentile" + } + ] + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "1940-10-05T00:00:00+00:00", + "valueQuantity": { + "value": 23, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/313d2fcc-bd96-4f71-b984-96ced01ede86", + "resource": { + "resourceType": "Observation", + "id": "313d2fcc-bd96-4f71-b984-96ced01ede86", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "785-6", + "display": "MCH [Entitic mass] by Automated count" + } + ], + "text": "MCH [Entitic mass] by Automated count" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/92ea3d63-59c6-452d-bc3f-bdde7a10d087" + }, + "effectiveDateTime": "1972-01-13T18:33:18-05:00", + "issued": "1972-01-13T18:33:18.715-05:00", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/77cfc28b-1b0a-4e22-b2a2-b4fba225d102", + "resource": { + "resourceType": "Observation", + "id": "77cfc28b-1b0a-4e22-b2a2-b4fba225d102", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-smokingstatus" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "72166-2", + "display": "Tobacco smoking status" + } + ], + "text": "Tobacco smoking status" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f" + }, + "effectiveDateTime": "1940-09-05T19:33:18-04:00", + "issued": "1940-09-05T19:33:18.715-04:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/6a59cc75-bee1-42d2-bf54-8876518b4c9e", + "resource": { + "resourceType": "Observation", + "id": "6a59cc75-bee1-42d2-bf54-8876518b4c9e", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/vitalsigns", + "http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8289-1", + "display": "Head Occipital-frontal circumference Percentile" + } + ] + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "1940-10-05T00:00:00+00:00", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/52851ef7-a01f-40d7-ad1f-3fe196e94ed9", + "resource": { + "resourceType": "Observation", + "id": "52851ef7-a01f-40d7-ad1f-3fe196e94ed9", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-respiratory-rate" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "9279-1", + "display": "Respiratory rate" + } + ], + "text": "Respiratory rate" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2bab7cb6-92c2-47b3-8158-d863d1cd60ad" + }, + "effectiveDateTime": "1976-02-05T18:33:18-05:00", + "issued": "1976-02-05T18:33:18.715-05:00", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/31763489-7e3e-4742-aa65-3381804f7bbd", + "resource": { + "resourceType": "Observation", + "id": "31763489-7e3e-4742-aa65-3381804f7bbd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-heart-rate" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8867-4", + "display": "Heart rate" + } + ], + "text": "Heart rate" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f4ca7306-536d-4a44-8c9c-88b7e0bdb5d1" + }, + "effectiveDateTime": "2003-07-10T19:33:18-04:00", + "issued": "2003-07-10T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/a919ca3c-3d1d-43d6-8412-38405ce6d040", + "resource": { + "resourceType": "Observation", + "id": "a919ca3c-3d1d-43d6-8412-38405ce6d040", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-temperature" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8310-5", + "display": "Body temperature" + }, + { + "system": "http://loinc.org", + "code": "8331-1", + "display": "Oral temperature" + } + ], + "text": "Body temperature" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/3789d5cc-d2e8-43d6-a64a-23e9c45c6dee" + }, + "effectiveDateTime": "2009-08-19T19:33:18-04:00", + "issued": "2009-08-19T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/3b378eb1-6cee-46dc-8f22-3fa938943a61", + "display": "Dr. Patricia625 Kilback373" + } + ], + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4686864b-ad09-479c-ba81-b35b01080a2f", + "resource": { + "resourceType": "Observation", + "id": "4686864b-ad09-479c-ba81-b35b01080a2f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bodyheight", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8302-2", + "display": "Body Height" + } + ], + "text": "Body Height" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3" + }, + "effectiveDateTime": "1952-09-25T19:33:18-04:00", + "issued": "1952-09-25T19:33:18.715-04:00", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/2ad43e48-1d80-4757-b500-c2c6e947e9d2", + "resource": { + "resourceType": "Observation", + "id": "2ad43e48-1d80-4757-b500-c2c6e947e9d2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bodyweight", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "29463-7", + "display": "Body Weight" + } + ], + "text": "Body Weight" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688" + }, + "effectiveDateTime": "1983-03-17T18:33:18-05:00", + "issued": "1983-03-17T18:33:18.715-05:00", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/12c4165d-0907-4595-8794-e0d32b1bb58d", + "resource": { + "resourceType": "Observation", + "id": "12c4165d-0907-4595-8794-e0d32b1bb58d", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bp", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "85354-9", + "display": "Blood pressure panel with all children optional" + } + ], + "text": "Blood pressure panel with all children optional" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25" + }, + "effectiveDateTime": "1994-05-19T19:33:18-04:00", + "issued": "1994-05-19T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + }, + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + } + ], + "text": "Diastolic Blood Pressure" + }, + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic Blood Pressure" + } + ], + "text": "Systolic Blood Pressure" + }, + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "unknown", + "display": "Unknown" + } + ], + "text": "Unknown" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b04ed46f-9758-420f-9d58-63891eae3ce7", + "resource": { + "resourceType": "Observation", + "id": "b04ed46f-9758-420f-9d58-63891eae3ce7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-respiratory-rate" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "9279-1", + "display": "Respiratory rate" + } + ], + "text": "Respiratory rate" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/2bab7cb6-92c2-47b3-8158-d863d1cd60ad" + }, + "effectivePeriod": { + "start": "1976-02-05T18:33:18-05:00", + "end": "1976-02-05T19:33:18-05:00" + }, + "issued": "1976-02-05T18:33:18.715-05:00", + "valueQuantity": { + "value": 14, + "unit": "/min", + "system": "http://unitsofmeasure.org", + "code": "/min" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/9126e618-027a-42cb-9aa1-6b9caef52e6a", + "resource": { + "resourceType": "Observation", + "id": "9126e618-027a-42cb-9aa1-6b9caef52e6a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-heart-rate" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8867-4", + "display": "Heart rate" + } + ], + "text": "Heart rate" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f4ca7306-536d-4a44-8c9c-88b7e0bdb5d1" + }, + "effectivePeriod": { + "start": "2003-07-10T19:33:18-04:00", + "end": "2003-07-10T20:33:18-04:00" + }, + "issued": "2003-07-10T19:33:18.715-04:00", + "valueQuantity": { + "value": 65, + "unit": "/min", + "system": "http://unitsofmeasure.org", + "code": "/min" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/242aba00-921c-4657-ab46-9ab99b9e476f", + "resource": { + "resourceType": "Observation", + "id": "242aba00-921c-4657-ab46-9ab99b9e476f", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bodyweight", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "29463-7", + "display": "Body Weight" + } + ], + "text": "Body Weight" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/7830d2f5-51f7-45bb-8b0a-b5a3f6ce7688" + }, + "effectivePeriod": { + "start": "1983-03-17T18:33:18-05:00", + "end": "1983-03-17T19:33:18-05:00" + }, + "issued": "1983-03-17T18:33:18.715-05:00", + "valueQuantity": { + "value": 99.3, + "unit": "kg", + "system": "http://unitsofmeasure.org", + "code": "kg" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/745da49b-e398-4d10-a668-98876a1e0310", + "resource": { + "resourceType": "Observation", + "id": "745da49b-e398-4d10-a668-98876a1e0310", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bp", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "85354-9", + "display": "Blood pressure panel with all children optional" + } + ], + "text": "Blood pressure panel with all children optional" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/9bda09b3-42dd-4f8f-88b5-4a6ee2e9af25" + }, + "effectivePeriod": { + "start": "1994-05-19T19:33:18-04:00", + "end": "1994-05-19T20:33:18-04:00" + }, + "issued": "1994-05-19T19:33:18.715-04:00", + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + } + ], + "text": "Diastolic Blood Pressure" + }, + "valueQuantity": { + "value": 85, + "unit": "mm[Hg]", + "system": "http://unitsofmeasure.org", + "code": "mm[Hg]" + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic Blood Pressure" + } + ], + "text": "Systolic Blood Pressure" + }, + "valueQuantity": { + "value": 129, + "unit": "mm[Hg]", + "system": "http://unitsofmeasure.org", + "code": "mm[Hg]" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/b7e05abc-9f46-4a37-b5e4-afee2822ea40", + "resource": { + "resourceType": "Observation", + "id": "b7e05abc-9f46-4a37-b5e4-afee2822ea40", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/pediatric-weight-for-height" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "77606-2", + "display": "Weight-for-length Per age and sex" + } + ], + "text": "Weight-for-length Per age and sex" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/5ad6a2f6-577c-4360-b86d-3417ba94034f" + }, + "effectivePeriod": { + "start": "1940-09-05T19:33:18-04:00", + "end": "1940-09-05T20:33:18-04:00" + }, + "issued": "1940-09-05T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "valueQuantity": { + "value": 7.5192, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/8a86de79-0ab1-47de-a0c3-cae9252340e7", + "resource": { + "resourceType": "Observation", + "id": "8a86de79-0ab1-47de-a0c3-cae9252340e7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/pediatric-bmi-for-age" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "59576-9", + "display": "Body mass index (BMI) [Percentile] Per age and sex" + } + ], + "text": "Body mass index (BMI) [Percentile] Per age and sex" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/f8d53c2d-da4b-4c83-a7c6-fea600515106" + }, + "effectivePeriod": { + "start": "1944-02-10T19:33:18-04:00", + "end": "1944-02-10T20:33:18-04:00" + }, + "issued": "1944-02-10T19:33:18.715-04:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "valueQuantity": { + "value": 34.705, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/993f8179-a407-4320-b8f7-16d38f77e177", + "resource": { + "resourceType": "Observation", + "id": "993f8179-a407-4320-b8f7-16d38f77e177", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/vitalsigns", + "http://hl7.org/fhir/us/core/StructureDefinition/head-occipital-frontal-circumference-percentile" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8289-1", + "display": "Head Occipital-frontal circumference Percentile" + } + ] + }, + "subject": { + "reference": "Patient/355" + }, + "effectivePeriod": { + "start": "1940-10-05T00:00:00+00:00", + "end": "1940-10-05T01:00:00+00:00" + }, + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe", + "display": "Dr. Blossom971 Christiansen251" + } + ], + "valueQuantity": { + "value": 23, + "unit": "%", + "system": "http://unitsofmeasure.org", + "code": "%" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/67916e3b-33e3-461c-a9a6-4fbe0ea577a7", + "resource": { + "resourceType": "Observation", + "id": "67916e3b-33e3-461c-a9a6-4fbe0ea577a7", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/StructureDefinition/bodyheight", + "http://hl7.org/fhir/StructureDefinition/vitalsigns" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8302-2", + "display": "Body Height" + } + ], + "text": "Body Height" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/c236dccc-5a05-40b4-91e6-28850c0a66e3" + }, + "effectivePeriod": { + "start": "1952-09-25T19:33:18-04:00", + "end": "1952-09-25T20:33:18-04:00" + }, + "issued": "1952-09-25T19:33:18.715-04:00", + "valueQuantity": { + "value": 160, + "unit": "cm", + "system": "http://unitsofmeasure.org", + "code": "cm" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/3c593eb0-8c69-464e-8b86-42a963a6e977", + "resource": { + "resourceType": "Observation", + "id": "3c593eb0-8c69-464e-8b86-42a963a6e977", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-body-temperature" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8310-5", + "display": "Body temperature" + }, + { + "system": "http://loinc.org", + "code": "8331-1", + "display": "Oral temperature" + } + ], + "text": "Body temperature" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/3789d5cc-d2e8-43d6-a64a-23e9c45c6dee" + }, + "effectivePeriod": { + "start": "2009-08-19T19:33:18-04:00", + "end": "2009-08-19T20:33:18-04:00" + }, + "issued": "2009-08-19T19:33:18.715-04:00", + "valueQuantity": { + "value": 37.799, + "unit": "Cel", + "system": "http://unitsofmeasure.org", + "code": "Cel" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DiagnosticReport/de7ed378-04c8-41d9-821b-136fa23272d5", + "resource": { + "resourceType": "DiagnosticReport", + "id": "de7ed378-04c8-41d9-821b-136fa23272d5", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-diagnosticreport-lab" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0074", + "code": "LAB", + "display": "Laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "51990-0", + "display": "Basic metabolic panel - Blood" + } + ], + "text": "Basic metabolic panel - Blood" + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/6e17a849-ef1b-419b-bc7f-d99d560c6966" + }, + "effectivePeriod": { + "start": "2017-09-28T19:33:18-04:00", + "end": "2017-09-28T20:33:18-04:00" + }, + "issued": "2017-09-28T19:33:18.715-04:00", + "performer": [ + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429", + "display": "PCP170967" + }, + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + { + "reference": "Organization/06843b0a-3101-4077-884f-63440ee8d429" + } + ], + "result": [ + { + "reference": "Observation/80a8b837-b725-4485-ad30-d601531cec6a", + "display": "Glucose" + }, + { + "reference": "Observation/30fcbb0b-e3d4-43db-bd69-e6b57672b600", + "display": "Urea Nitrogen" + }, + { + "reference": "Observation/d4776b33-180c-4841-a77b-9cc5271a1628", + "display": "Creatinine" + }, + { + "reference": "Observation/401cb2af-ca73-4448-be68-9925b4ffb2bf", + "display": "Calcium" + }, + { + "reference": "Observation/94a71e4d-4424-46ca-ad4a-2ac58538f4d2", + "display": "Sodium" + }, + { + "reference": "Observation/fce04d41-4ed7-4642-86b9-ca12aef0f443", + "display": "Potassium" + }, + { + "reference": "Observation/f7ff920b-c830-4fd3-9e2c-3814c2409cfb", + "display": "Chloride" + }, + { + "reference": "Observation/4f0f9771-ba5b-4245-b9be-7cebd6e6e164", + "display": "Carbon Dioxide" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/f6cda4f5-7fbb-4403-9710-109d5a2f9b18", + "resource": { + "resourceType": "Condition", + "id": "f6cda4f5-7fbb-4403-9710-109d5a2f9b18", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-problems-health-concerns" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate", + "valueDateTime": "2016-08-10" + } + ], + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "b9fbaa22-6097-11ed-9b6a-0242ac120002" + } + ], + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved", + "display": "Resolved" + } + ], + "text": "Resolved" + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed", + "display": "Confirmed" + } + ], + "text": "Confirmed" + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "problem-list-item", + "display": "Problem List Item" + } + ], + "text": "Problem List Item" + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-tags", + "code": "sdoh", + "display": "SDOH" + }, + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "sdoh", + "display": "SDOH" + } + ], + "text": "Social Determinants Of Health" + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "445281000124101", + "display": "Nutrition impaired due to limited access to healthful foods (finding)" + } + ], + "text": "Nutrition impaired due to limited access to healthful foods (finding)" + }, + "subject": { + "reference": "Patient/355" + }, + "abatementDateTime": "2016-08-10T07:15:07-08:00", + "recordedDate": "2016-08-10T07:15:07-08:00", + "recorder": { + "reference": "Patient/355" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Condition/069299da-ec0a-45b2-802f-fc1b401f4995", + "resource": { + "resourceType": "Condition", + "id": "069299da-ec0a-45b2-802f-fc1b401f4995", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition-problems-health-concerns" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate", + "valueDateTime": "2007-12-14" + } + ], + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active", + "display": "Active" + } + ], + "text": "Active" + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed", + "display": "Confirmed" + } + ], + "text": "Confirmed" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/condition-category", + "code": "health-concern", + "display": "Health Concern" + } + ], + "text": "Health Concern" + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "247824007", + "display": "Fear of becoming fat" + } + ], + "text": "Fear of becoming fat" + }, + "subject": { + "reference": "Patient/355" + }, + "onsetDateTime": "2007-12-14", + "recordedDate": "2007-12-14T07:15:07-08:00" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/827d2566-0216-4b21-9399-6fdad26efbf0", + "resource": { + "resourceType": "Observation", + "id": "827d2566-0216-4b21-9399-6fdad26efbf0", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-test" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-observation-category", + "code": "clinical-test", + "display": "Clinical Test" + } + ], + "text": "Clinical Test" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8601-7", + "display": "EKG impression" + } + ], + "text": "EKG impression" + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "2021-11-10T16:48:57.246958-08:00", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "64730000", + "display": "Normal sinus rhythm" + } + ] + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/84c2116f-f03a-4ccf-bab6-7b298c09c32c", + "resource": { + "resourceType": "Observation", + "id": "84c2116f-f03a-4ccf-bab6-7b298c09c32c", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-test" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-observation-category", + "code": "clinical-test", + "display": "Clinical Test" + } + ], + "text": "Clinical Test" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "80954-1", + "display": "DXA Femur-L ArMass BMD" + } + ], + "text": "DXA Femur-L ArMass BMD" + }, + "subject": { + "reference": "Patient/355" + }, + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "not-performed", + "display": "Not Performed" + } + ] + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/449bffaf-6849-42c5-804b-c58d20b14652", + "resource": { + "resourceType": "Observation", + "id": "449bffaf-6849-42c5-804b-c58d20b14652", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-result", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-imaging" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "a4c9c602-60a6-11ed-9b6a-0242ac120002" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "imaging", + "display": "Imaging" + } + ], + "text": "Imaging" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "19005-8", + "display": "Radiology Imaging study [Impression] (narrative)" + } + ], + "text": "Impression" + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "2019-02-03T19:43:30.000Z", + "valueString": "No acute abnormality" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/4230c636-9691-428c-b1f4-eaed5113a3a8", + "resource": { + "resourceType": "Observation", + "id": "4230c636-9691-428c-b1f4-eaed5113a3a8", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-clinical-result", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-imaging" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "9659d9e0-60a6-11ed-9b6a-0242ac120002" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "imaging", + "display": "Imaging" + } + ], + "text": "Imaging" + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18782-3", + "display": "Radiology Study observation (narrative)" + } + ], + "text": "Findings" + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "2019-02-03T19:43:30.000Z", + "dataAbsentReason": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/data-absent-reason", + "code": "not-performed", + "display": "Not Performed" + } + ] + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/3f49f5ad-c36a-4c6b-ae2b-01bfa05140cc", + "resource": { + "resourceType": "Observation", + "id": "3f49f5ad-c36a-4c6b-ae2b-01bfa05140cc", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-social-history" + ] + }, + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-tags", + "code": "sdoh", + "display": "SDOH" + }, + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "sdoh", + "display": "SDOH" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "741062008", + "display": "Not in labor force (finding)" + } + ], + "text": "Not in labor force (finding)" + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "2021-06-04T12:19:16-05:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + } + ], + "valueBoolean": true + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/cf6f6131-0048-42ba-a2ab-e02326dfc935", + "resource": { + "resourceType": "Observation", + "id": "cf6f6131-0048-42ba-a2ab-e02326dfc935", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-screening-assessment", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-social-history", + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-simple-observation" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "57775cdd-354a-6342-954b-f47f21a72578" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + }, + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "survey", + "display": "Survey" + } + ] + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-tags", + "code": "sdoh", + "display": "SDOH" + }, + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "sdoh", + "display": "SDOH" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "63586-2", + "display": "What was your best estimate of the total income of all family members from all sources, before taxes, in last year [PhenX]" + } + ], + "text": "What was your best estimate of the total income of all family members from all sources, before taxes, in last year [PhenX]" + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "1993-01-13T21:54:22-06:00", + "issued": "1993-01-13T21:54:22.840-06:00", + "performer": [ + { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + } + ], + "valueQuantity": { + "value": 43450, + "unit": "/a", + "system": "http://unitsofmeasure.org", + "code": "/a" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Observation/edc4d330-5c24-4652-ad24-175253e74240", + "resource": { + "resourceType": "Observation", + "id": "edc4d330-5c24-4652-ad24-175253e74240", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation-social-history" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "d1ee0707-00f8-462c-aca3-63cf6dd1be82" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history", + "display": "Social History" + } + ] + }, + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-tags", + "code": "sdoh", + "display": "SDOH" + }, + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-category", + "code": "sdoh", + "display": "SDOH" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "93028-9", + "display": "Have you spent more than 2 nights in a row in a jail, prison, detention center, or juvenile correctional facility in past 1 year [PRAPARE]" + } + ], + "text": "Have you spent more than 2 nights in a row in a jail, prison, detention center, or juvenile correctional facility in past 1 year [PRAPARE]" + }, + "subject": { + "reference": "Patient/355" + }, + "effectiveDateTime": "1993-01-13T21:54:22-06:00", + "issued": "1993-01-13T21:54:22.840-06:00", + "performer": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason", + "valueCode": "unknown" + } + ] + } + ], + "valueString": "No" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/ServiceRequest/41066903-7470-4d8b-a5aa-8b72984c5191", + "resource": { + "resourceType": "ServiceRequest", + "id": "41066903-7470-4d8b-a5aa-8b72984c5191", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-servicerequest" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "ba89c2af-ce2b-405d-8eff-793eabe1c38d" + } + ], + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "387713003", + "display": "Surgical procedure" + } + ], + "text": "Surgical procedure" + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "233169004", + "display": "Automatic defibrillator procedure (procedure)" + } + ] + }, + "subject": { + "reference": "Patient/355" + }, + "encounter": { + "reference": "Encounter/84e912fe-1d69-4ccd-aa51-00e257816ffc" + }, + "authoredOn": "2015-03-30", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + }, + "reasonCode": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "71908006", + "display": "Ventricular fibrillation (disorder)" + } + ], + "text": "Bradycardia" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/ServiceRequest/d5130df3-e303-40e0-9923-f9e5b53c2315", + "resource": { + "resourceType": "ServiceRequest", + "id": "d5130df3-e303-40e0-9923-f9e5b53c2315", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-servicerequest" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "706eb626-2e3a-4f23-bb58-dd11cde7da98" + } + ], + "status": "active", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "410606002", + "display": "Social Service Procedure" + } + ], + "text": "Social Determinants Of Health" + } + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "24165007", + "display": "Alcoholism counseling" + } + ], + "text": "Alcohol rehabilitation" + }, + "subject": { + "reference": "Patient/355" + }, + "occurrencePeriod": { + "start": "2021-11-20", + "end": "2021-12-04" + }, + "authoredOn": "2021-11-12T10:59:38-08:00", + "requester": { + "reference": "Practitioner/7ed17db9-db48-4d5b-9699-e298eac89dfe" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/DocumentReference/bb176123-929d-4ca9-a021-7e46eb98ecbb", + "resource": { + "resourceType": "DocumentReference", + "id": "bb176123-929d-4ca9-a021-7e46eb98ecbb", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-documentreference" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "4b056f97-383a-416f-94a8-624972f4a440" + } + ], + "status": "entered-in-error", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "11488-4", + "display": "Consult note" + } + ], + "text": "Consult note" + }, + "category": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/us/core/CodeSystem/us-core-documentreference-category", + "code": "clinical-note", + "display": "Clinical Note" + } + ], + "text": "Clinical Note" + } + ], + "subject": { + "reference": "Patient/355" + }, + "date": "2016-03-09T15:29:46Z", + "description": "Report created by error. Discarded", + "content": [ + { + "attachment": { + "contentType": "text/plain", + "_data": { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason", + "valueCode": "error" + } + ] + } + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Group/1a", + "resource": { + "resourceType": "Group", + "id": "1a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:52.663+00:00" + }, + "active": true, + "type": "person", + "actual": true, + "name": "Synthea US Core Patients", + "quantity": 2, + "member": [ + { + "entity": { + "reference": "Patient/85" + } + }, + { + "entity": { + "reference": "Patient/355" + } + }, + { + "entity": { + "reference": "Patient/907" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Location/f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "resource": { + "resourceType": "Location", + "id": "f8c9d92d-74fa-4086-a3d7-2171cc56bfd2", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-location" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "4c34c0db-7434-8c8f-1936-30dd023babc2" + } + ], + "status": "active", + "name": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE", + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-RoleCode", + "code": "OF", + "display": "Outpatient facility" + } + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "413-594-3111" + } + ], + "address": { + "line": [ + "444 MONTGOMERY STREET" + ], + "city": "CHICOPEE", + "state": "MA", + "postalCode": "1020", + "country": "US" + }, + "position": { + "longitude": -72.5849672, + "latitude": 42.1718584 + }, + "managingOrganization": { + "reference": "Organization/b293761b-00ce-4fee-b608-6c5eb0f45447", + "display": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Organization/b293761b-00ce-4fee-b608-6c5eb0f45447", + "resource": { + "resourceType": "Organization", + "id": "b293761b-00ce-4fee-b608-6c5eb0f45447", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization" + ] + }, + "identifier": [ + { + "system": "https://github.com/synthetichealth/synthea", + "value": "a9afd4c9-8443-3b5a-a486-07c3bb109b3f" + } + ], + "active": true, + "type": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/organization-type", + "code": "prov", + "display": "Healthcare Provider" + } + ], + "text": "Healthcare Provider" + } + ], + "name": "RIVER BEND MEDICAL GROUP - CHICOPEE OFFICE - URGENT CARE", + "telecom": [ + { + "system": "phone", + "value": "413-594-3111" + } + ], + "address": [ + { + "line": [ + "444 MONTGOMERY STREET" + ], + "city": "CHICOPEE", + "state": "MA", + "postalCode": "1020", + "country": "US" + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Practitioner/c7b28fbd-54a1-439c-9054-478869d0a729", + "resource": { + "resourceType": "Practitioner", + "id": "c7b28fbd-54a1-439c-9054-478869d0a729", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:44.949+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner" + ] + }, + "identifier": [ + { + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "9706202469" + } + ], + "active": true, + "name": [ + { + "family": "DuBuque211", + "given": [ + "Sammie902" + ], + "prefix": [ + "Dr." + ] + } + ], + "telecom": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-direct", + "valueBoolean": true + } + ], + "system": "email", + "value": "Sammie902.DuBuque211@example.com", + "use": "work" + } + ], + "address": [ + { + "line": [ + "444 MONTGOMERY STREET" + ], + "city": "CHICOPEE", + "state": "MA", + "postalCode": "1020", + "country": "US" + } + ], + "gender": "male" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Patient/907", + "resource": { + "resourceType": "Patient", + "id": "907", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:52.155+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient" + ] + }, + "text": { + "status": "generated", + "div": "
Sample patient derived from US Core v7.0.0 examples
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-sex", + "valueCode": "248152002" + }, + { + "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-genderIdentity", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-NullFlavor", + "code": "ASKU", + "display": "asked but unknown" + } + ] + } + } + ], + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "a24eb240-9ea3-4fa5-b12d-b798587879d7" + } + ], + "name": [ + { + "family": "Baxter", + "given": [ + "Amy", + "V." + ], + "suffix": [ + "PharmD" + ], + "period": { + "start": "2020-07-22" + } + } + ], + "gender": "female", + "birthDate": "1987-02-20" + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Encounter/80180787-3480-4c07-b7c3-fd2d9793aefd", + "resource": { + "resourceType": "Encounter", + "id": "80180787-3480-4c07-b7c3-fd2d9793aefd", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:52.155+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter" + ] + }, + "identifier": [ + { + "system": "https://github.com/inferno-framework/us-core-test-kit", + "value": "4fedd1a7-a5fa-444a-8b1b-05f19db339d0" + } + ], + "status": "finished", + "class": { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", + "code": "AMB", + "display": "ambulatory" + }, + "type": [ + { + "coding": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "code": "99211" + } + ], + "text": "Office Visit" + } + ], + "subject": { + "reference": "Patient/907" + } + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Provenance/a7ec4974-c2af-4383-b2ec-b1a40e8e0785", + "resource": { + "resourceType": "Provenance", + "id": "a7ec4974-c2af-4383-b2ec-b1a40e8e0785", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:52.155+00:00", + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-provenance" + ] + }, + "target": [ + { + "reference": "Patient/907" + }, + { + "reference": "Encounter/80180787-3480-4c07-b7c3-fd2d9793aefd" + } + ], + "recorded": "2023-02-28T15:26:23.217+00:00", + "agent": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", + "code": "informant", + "display": "Informant" + } + ], + "text": "Informant" + }, + "who": { + "reference": "Patient/907", + "display": "Amy Baxter" + } + } + ] + }, + "search": { + "mode": "match" + } + }, + { + "fullUrl": "https://inferno-qa.healthit.gov/reference-server/r4/Group/1a", + "resource": { + "resourceType": "Group", + "id": "1a", + "meta": { + "versionId": "1", + "lastUpdated": "2025-08-25T15:21:52.663+00:00" + }, + "active": true, + "type": "person", + "actual": true, + "name": "Synthea US Core Patients", + "quantity": 2, + "member": [ + { + "entity": { + "reference": "Patient/85" + } + }, + { + "entity": { + "reference": "Patient/355" + } + }, + { + "entity": { + "reference": "Patient/907" + } + } + ] + }, + "search": { + "mode": "match" + } + } + ] +} \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb new file mode 100644 index 00000000..8c6a80f2 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/endpoints/mock_ehr_endpoints.rb @@ -0,0 +1,95 @@ +require_relative 'mock_ehr/fhir_read_endpoint' +require_relative 'mock_ehr/fhir_search_endpoint' +require_relative 'mock_ehr/fhir_create_endpoint' +require_relative 'mock_ehr/fhir_update_endpoint' +require_relative 'mock_ehr/fhir_delete_endpoint' +require_relative 'mock_ehr/fhir_metadata_endpoint' + +module DaVinciCRDTestKit + # Include this module within a suite class to add Mock FHIR Server + # endpoints with data supplied by an input containing a Bundle + # that can be accessed and updated by calls to the suite's endpoints. + # Defaults to driving the CapabilityStatement and supported search + # parameters off of US Core 6.1.0, but a different set of metadata + # can be provided at inclusion time by using `with` and specifying + # either a `metadata_dir:` or providing a block that resolves to + # a list of metadata files to use. + # + # @example Default US Core 6.1.0 metadata + # class MyTestSuite < Inferno::TestSuite + # include MockEHREndpoints + # end + # + # @example Custom metadata directory (e.g. US Core 7.0.0) + # US_CORE_7_DIR = File.join( + # Gem::Specification.find_by_name('us_core_test_kit').gem_dir, + # 'lib', 'us_core_test_kit', 'generated', 'v7.0.0' + # ) + # + # class MyTestSuite < Inferno::TestSuite + # include MockEHREndpoints.with(metadata_dir: US_CORE_7_DIR) + # end + # + # @example Custom file list via block + # class MyTestSuite < Inferno::TestSuite + # include(MockEHREndpoints.with { Dir.glob('/path/to/my/metadata/**/metadata.yml') }) + # end + module MockEHREndpoints + def self.included(base) + configure(base) + end + + def self.with(metadata_dir: nil, &block) + Module.new do + define_singleton_method(:included) do |base| + MockEHREndpoints.send(:configure, base, metadata_dir:, metadata_files_proc: block) + end + end + end + + def self.configure(base, metadata_dir: nil, metadata_files_proc: nil) + base.route :get, FHIR_METADATA_ROUTE, build_metadata_endpoint(metadata_dir:, metadata_files_proc:) + search_endpoint = + if metadata_dir || metadata_files_proc + build_search_endpoint(metadata_dir:, metadata_files_proc:) + else + MockEHR::FHIRSearchEndpoint + end + base.suite_endpoint :post, FHIR_SEARCH_POST_ROUTE, search_endpoint + base.suite_endpoint :get, FHIR_RESOURCE_TYPE_ROUTE, search_endpoint + base.suite_endpoint :get, FHIR_INSTANCE_ROUTE, MockEHR::FHIRReadEndpoint + base.suite_endpoint :post, FHIR_RESOURCE_TYPE_ROUTE, MockEHR::FHIRCreateEndpoint + base.suite_endpoint :put, FHIR_INSTANCE_ROUTE, MockEHR::FHIRUpdateEndpoint + base.suite_endpoint :delete, FHIR_INSTANCE_ROUTE, MockEHR::FHIRDeleteEndpoint + end + private_class_method :configure + + def self.build_metadata_endpoint(metadata_dir: nil, metadata_files_proc: nil) + return MockEHR::FHIRMetadataEndpoint unless metadata_dir || metadata_files_proc + + if metadata_files_proc + Class.new(MockEHR::FHIRMetadataEndpoint) do + define_singleton_method(:metadata_files) { metadata_files_proc.call } + end + else + Class.new(MockEHR::FHIRMetadataEndpoint) do + define_singleton_method(:metadata_dir) { metadata_dir } + end + end + end + private_class_method :build_metadata_endpoint + + def self.build_search_endpoint(metadata_dir: nil, metadata_files_proc: nil) + if metadata_files_proc + Class.new(MockEHR::FHIRSearchEndpoint) do + define_singleton_method(:metadata_files) { metadata_files_proc.call } + end + else + Class.new(MockEHR::FHIRSearchEndpoint) do + define_method(:metadata_directory) { metadata_dir } + end + end + end + private_class_method :build_search_endpoint + end +end diff --git a/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb b/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb new file mode 100644 index 00000000..3158f5a2 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/jobs/invoke_hook.rb @@ -0,0 +1,225 @@ +# frozen_string_literal: true + +require_relative '../../cross_suite/tags' +require_relative '../../cross_suite/base_urls' +require_relative '../../cross_suite/cards_identification' +require_relative '../endpoints/mock_ehr/fhir_request_handler' +require_relative '../server_base_urls' + +module DaVinciCRDTestKit + module Jobs + class InvokeHook + include Sidekiq::Job + include DaVinciCRDTestKit::CardsIdentification + include DaVinciCRDTestKit::ServerBaseURLs + + sidekiq_options retry: false + + def perform(test_session_id, request_bodies, service_endpoint, inferno_base_url, jwks_kid, + encryption_method, request_tag, continuation_url, failure_url, acknowledge_before_continuing, + coverage_info_configuration_supported) + @test_session_id = test_session_id + @service_endpoint = service_endpoint + @inferno_base_url = inferno_base_url + @jwks_kid = jwks_kid + @encryption_method = encryption_method + @request_tag = request_tag + @continuation_url = continuation_url + @failure_url = failure_url + @acknowledge_before_continuing = acknowledge_before_continuing + @coverage_info_configuration_supported = coverage_info_configuration_supported + + perform_hook_invocations(request_bodies) + end + + def perform_hook_invocations(request_bodies) + await_test_waiting # let Inferno start waiting so it can respond to FHIR requests + + request_bodies.each do |request| + break unless test_waiting? + + request_body = prepare_hook_request(request) + response = send_hook_invocation(request_body.to_json) + send_coverage_info_configuration_invocation(request_body, response) + send_unknown_configuration_invocation(request_body, response) + send_unknown_context_invocation(request_body, response) + send_unknown_cds_hooks_element_invocation(request_body, response) + end + + return unless test_waiting? + + # end the wait to continue the tests + Faraday.get(@continuation_url) unless @acknowledge_before_continuing + rescue StandardError => e + Faraday.get(@failure_url, { message: "Hook invocation failed: #{e.message}" }) + end + + def test_run_id + @test_run_id ||= test_runs_repo.last_test_run(@test_session_id).id + end + + def test_runs_repo + @test_runs_repo ||= Inferno::Repositories::TestRuns.new + end + + def requests_repo + @requests_repo ||= Inferno::Repositories::Requests.new + end + + def results_repo + @results_repo ||= Inferno::Repositories::Results.new + end + + def service_connection + @service_connection ||= Faraday.new(url: @service_endpoint, request: { open_timeout: 30 }) + end + + def test_done? + test_runs_repo.status_for_test_run(test_run_id) == 'done' + end + + def await_test_waiting + sleep 0.5 until test_waiting? || test_done? + + @result_id = results_repo.find_waiting_result(test_run_id:)&.id + end + + def test_waiting? + results_repo.find_waiting_result(test_run_id:).present? + end + + def prepare_hook_request(parsed_request) + parsed_request['hookInstance'] = SecureRandom.uuid + parsed_request['fhirServer'] = fhir_url + update_simulated_server_token(parsed_request) + parsed_request + end + + def update_simulated_server_token(parsed_request) + parsed_request['fhirAuthorization'] = {} if parsed_request['fhirAuthorization'].nil? + fhir_authorization = parsed_request['fhirAuthorization'] + + fhir_authorization['expires_in'] = 300 unless fhir_authorization['expires_in'].present? + fhir_authorization['access_token'] = + MockEHR::FHIRRequestHandler.session_id_to_token(@test_session_id, fhir_authorization['expires_in'].to_i / 60) + end + + def send_hook_invocation(request_body, extra_tags = []) + token = JwtHelper.build( + aud: @service_endpoint, + iss: @inferno_base_url, + jku: "#{@inferno_base_url}/jwks.json", + kid: @jwks_kid, + encryption_method: @encryption_method + ) + headers = { 'Content-type' => 'application/json', 'Authorization' => "Bearer #{token}" } + response = invoke_hook(request_body, headers) + persist_hook_request(response, [@request_tag] + extra_tags, headers) + response + end + + def send_coverage_info_configuration_invocation(request_body, response) + return unless @coverage_info_configuration_supported + return if @coverage_info_configuration_invoked + return unless response.status == 200 + return unless coverage_info_response?(parsed_response_body(response)) + return unless test_waiting? + + configured_request_body = JSON.parse(request_body.to_json) + prepare_hook_request(configured_request_body) + disable_coverage_info_configuration!(configured_request_body) + send_hook_invocation(configured_request_body.to_json, [COVERAGE_INFO_DISABLED_TAG]) + @coverage_info_configuration_invoked = true + end + + def send_unknown_configuration_invocation(request_body, response) + return if @unknown_configuration_invoked + return unless response.status == 200 + return unless coverage_info_response?(parsed_response_body(response)) + return unless test_waiting? + + request_body = JSON.parse(request_body.to_json) + prepare_hook_request(request_body) + add_unknown_configuration(request_body) + send_hook_invocation(request_body.to_json, [UNKNOWN_CONFIGURATION_TAG]) + + @unknown_configuration_invoked = true + end + + def send_unknown_context_invocation(request_body, response) + return if @unknown_context_invoked + return unless response.status == 200 + return unless coverage_info_response?(parsed_response_body(response)) + return unless test_waiting? + + request_body = JSON.parse(request_body.to_json) + prepare_hook_request(request_body) + add_unknown_context(request_body) + send_hook_invocation(request_body.to_json, [UNKNOWN_CONTEXT_TAG]) + + @unknown_context_invoked = true + end + + def send_unknown_cds_hooks_element_invocation(request_body, response) + return if @unknown_cds_hooks_element_invoked + return unless response.status == 200 + return unless coverage_info_response?(parsed_response_body(response)) + return unless test_waiting? + + request_body = JSON.parse(request_body.to_json) + prepare_hook_request(request_body) + add_unknown_element(request_body) + send_hook_invocation(request_body.to_json, [UNKNOWN_ELEMENT_TAG]) + + @unknown_cds_hooks_element_invoked = true + end + + def random_key + ('a'..'z').to_a.sample(16).join + end + + def add_unknown_configuration(request_body) + request_body['extension'] ||= {} + request_body['extension']['davinci-crd.configuration'] ||= {} + request_body['extension']['davinci-crd.configuration'][random_key] = true + end + + def add_unknown_context(request_body) + request_body['context'] ||= {} + request_body['context'][random_key] ||= random_key + end + + def add_unknown_element(request_body) + request_body[random_key] ||= random_key + end + + def parsed_response_body(response) + JSON.parse(response.env.response_body.to_s) + rescue JSON::ParserError, TypeError + nil + end + + def invoke_hook(request_body, headers) + service_connection.post('', request_body, headers) + end + + def persist_hook_request(response, tags, headers) + inferno_request_headers = headers.map { |name, value| { name:, value: } } + inferno_response_headers = response.headers&.map { |name, value| { name:, value: } } + requests_repo.create( + verb: 'POST', + url: response.env.url.to_s, + direction: 'outgoing', + status: response.status, + request_body: response.env.request_body, + response_body: response.env.response_body, + test_session_id: @test_session_id, + result_id: @result_id, + request_headers: inferno_request_headers, + response_headers: inferno_response_headers, + tags: + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/jwt_helper.rb b/lib/davinci_crd_test_kit/server/jwt_helper.rb similarity index 98% rename from lib/davinci_crd_test_kit/jwt_helper.rb rename to lib/davinci_crd_test_kit/server/jwt_helper.rb index 13cb47f9..ca80ef66 100644 --- a/lib/davinci_crd_test_kit/jwt_helper.rb +++ b/lib/davinci_crd_test_kit/server/jwt_helper.rb @@ -1,4 +1,4 @@ -require_relative 'jwks' +require_relative 'endpoints/jwks' module DaVinciCRDTestKit class JwtHelper diff --git a/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb b/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb new file mode 100644 index 00000000..654e9690 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/server_abstract_invoke_hook_test.rb @@ -0,0 +1,164 @@ +require_relative 'server_hook_helper' +require_relative '../cross_suite/tags' +require_relative 'jobs/invoke_hook' + +module DaVinciCRDTestKit + class ServerAbstractInvokeHookTest < Inferno::Test + include ServerHookHelper + # must include the corresponding server_urls class when using in a suite + + title 'Invoke Hook' + id :crd_server_invoke_hook_test + description %( + This test initiates POST request(s) to a specified CDS Service using the JSON body list provided by the user. + As indicated in the [CDS Hooks specification section on Calling a CDS Service](https://cds-hooks.hl7.org/2.0/#calling-a-cds-service), + the service endpoint is constructed by appending the individual service id to the CDS Service base URL, + following the format `{baseUrl}/cds-services/{service.id}`. While the requests are being made, + Inferno will enable FHIR endpoints that serve the data indicated in the Mock EHR Bundle so that the + tested server can access additional information not provided in the hook request. + + If running this group only, the user will need to provide the `service.id` to call the specified service. + Otherwise, the `service.id` is derived from the CDS Services that are retrieved through a query to the + discovery endpoint. + + The test will be skipped if the CRD server does not host a CDS Service corresponding to the hook that + is being tested. + + The test is deemed successful if the CRD server returns a 200 HTTP response for all requests. + ) + input_order :base_url, :encryption_method, :jwks_kid + input :base_url + input :service_ids, + description: %( + If blank, Inferno will attempt to infer the service id to use by finding a service entry in the + Discovery response for the target hook. If it cannot be inferred, the tests will be skipped. + ), + optional: true + input :service_request_bodies, + optional: true, + type: 'textarea', + description: 'To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].' + input :encryption_method, + title: 'JWT Signing Algorithm', + description: <<~DESCRIPTION, + CDS Hooks recommends ES384 and RS384 for JWT signature verification. + Select which method to use. + DESCRIPTION + type: 'radio', + options: { + list_options: [ + { + label: 'ES384', + value: 'ES384' + }, + { + label: 'RS384', + value: 'RS384' + } + ] + } + input :jwks_kid, + title: 'CDS Services JWKS kid', + description: <<~DESCRIPTION, + The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint + requiring authentication. + Defaults to the first JWK in the list if no kid is supplied. + DESCRIPTION + optional: true + input :mock_ehr_bundle, + title: 'Mock EHR Data', + description: <<~DESCRIPTION, + A FHIR Bundle containing resources that Inferno will make available via the FHIR API hosted + by its simulated CRD client that will initiate the CDS Hooks requests. + DESCRIPTION + type: 'textarea', + optional: true, + default: '{"resourceType":"Bundle","type":"collection"}' + input :manual_continuation, + title: 'Require acknowledgement of completed hook requests?', + description: %( + By default, Inferno will continue evaluation of the hook response(s) immediately after completing + the request(s). To keep Inferno's simulated CRD Client and its FHIR endpoints active longer, + select the "Continue on user acknowledgement" option and you will be asked to click a link when + you are ready for Inferno to continue. + ), + type: 'radio', + default: 'no', + options: { + list_options: [ + { + label: 'Continue when hook invocation(s) complete', + value: 'no' + }, { + label: 'Continue on user acknowledgement', + value: 'yes' + } + ] + }, + optional: true + + output :invoked_hook + output :continuation_url + + run do + discovery_url = "#{base_url.chomp('/')}/cds-services" + + begin + bundle_resource = FHIR.from_contents(mock_ehr_bundle) + rescue StandardError + bundle_resource = nil + end + skip_if !bundle_resource.is_a?(FHIR::Bundle), + 'mock_ehr_bundle input must be a FHIR Bundle resource; skipping test.' + + skip_if service_request_bodies.blank?, + 'Request body not provided, skipping test.' + assert_valid_json(service_request_bodies) + + payloads = [JSON.parse(service_request_bodies)].flatten + skip_if tested_hook_name == ANY_HOOK_TAG && payloads.length != 1, + 'The *Demonstrate a Hook Invocation* test supports only one request body.' + invoked_hook = identify_hook(payloads) + output(invoked_hook:) + service_id = target_service_id(service_ids, invoked_hook) + skip_if service_id.blank?, "No service id provided or discovered for the #{invoked_hook} hook" + + service_endpoint = "#{discovery_url}/#{service_id}" + continuation_url = "#{resume_pass_url}?token=#{test_session_id}" + output(continuation_url:) + failure_url = "#{resume_fail_url}?token=#{test_session_id}" + + acknowledge_before_continuing = manual_continuation == 'yes' + Inferno::Jobs.perform(DaVinciCRDTestKit::Jobs::InvokeHook, test_session_id, + payloads, service_endpoint, inferno_base_url, jwks_kid, encryption_method, + tested_hook_name, continuation_url, failure_url, acknowledge_before_continuing, + coverage_info_configuration_supported?) + + wait( + identifier: test_session_id, + timeout: acknowledge_before_continuing ? 900 : 300, + message: wait_message(acknowledge_before_continuing, continuation_url) + ) + end + + def wait_message(acknowledge_before_continuing, continuation_url) + message = "Inferno's simulated CRD Client will initiate hook requests to the server. " \ + 'During these invocations the server will be able to make FHIR requests ' \ + "against Inferno's simulated CRD Client." + + return message unless acknowledge_before_continuing + + "#{message}\n\n#{continuation_message(continuation_url)}" + end + + def continuation_message(continuation_url) + 'Once all hook requests have been made and the server has gathered all desired information ' \ + "from the FHIR server of Inferno's simulated CRD Client, [click here](#{continuation_url}) " \ + 'to continue the tests.' + end + + def coverage_info_configuration_supported? + false + end + end +end diff --git a/lib/davinci_crd_test_kit/server/server_base_urls.rb b/lib/davinci_crd_test_kit/server/server_base_urls.rb new file mode 100644 index 00000000..7c6037eb --- /dev/null +++ b/lib/davinci_crd_test_kit/server/server_base_urls.rb @@ -0,0 +1,30 @@ +require_relative '../cross_suite/base_urls' + +module DaVinciCRDTestKit + FHIR_ROUTE = '/fhir'.freeze + FHIR_METADATA_ROUTE = "#{FHIR_ROUTE}/metadata".freeze + FHIR_INSTANCE_ROUTE = "#{FHIR_ROUTE}/:resource_type/:resource_id".freeze + FHIR_RESOURCE_TYPE_ROUTE = "#{FHIR_ROUTE}/:resource_type".freeze + FHIR_SEARCH_POST_ROUTE = "#{FHIR_ROUTE}/:resource_type/_search".freeze + + module ServerBaseURLs + include BaseURLs + + def fhir_url + inferno_base_url + FHIR_ROUTE + end + + # alias for OIDC from SMART client tests + def client_fhir_base_url + fhir_url + end + + def instance_url + inferno_base_url + INSTANCE_ROUTE + end + + def search_url + inferno_base_url + RESOURCE_TYPE_ROUTE + end + end +end diff --git a/lib/davinci_crd_test_kit/server_hook_helper.rb b/lib/davinci_crd_test_kit/server/server_hook_helper.rb similarity index 97% rename from lib/davinci_crd_test_kit/server_hook_helper.rb rename to lib/davinci_crd_test_kit/server/server_hook_helper.rb index a5a96319..0735975d 100644 --- a/lib/davinci_crd_test_kit/server_hook_helper.rb +++ b/lib/davinci_crd_test_kit/server/server_hook_helper.rb @@ -1,4 +1,4 @@ -require_relative 'tags' +require_relative '../cross_suite/tags' module DaVinciCRDTestKit module ServerHookHelper diff --git a/lib/davinci_crd_test_kit/server_hook_request_validation.rb b/lib/davinci_crd_test_kit/server/server_hook_request_validation.rb similarity index 76% rename from lib/davinci_crd_test_kit/server_hook_request_validation.rb rename to lib/davinci_crd_test_kit/server/server_hook_request_validation.rb index 86a0f546..bf4fd675 100644 --- a/lib/davinci_crd_test_kit/server_hook_request_validation.rb +++ b/lib/davinci_crd_test_kit/server/server_hook_request_validation.rb @@ -1,4 +1,4 @@ -require_relative 'hook_request_field_validation' +require_relative '../cross_suite/hook_request_field_validation' module DaVinciCRDTestKit module ServerHookRequestValidation diff --git a/lib/davinci_crd_test_kit/test_helper.rb b/lib/davinci_crd_test_kit/server/server_test_helper.rb similarity index 66% rename from lib/davinci_crd_test_kit/test_helper.rb rename to lib/davinci_crd_test_kit/server/server_test_helper.rb index a78273f2..bc4474dc 100644 --- a/lib/davinci_crd_test_kit/test_helper.rb +++ b/lib/davinci_crd_test_kit/server/server_test_helper.rb @@ -1,13 +1,17 @@ +require_relative '../cross_suite/tags' + module DaVinciCRDTestKit - module TestHelper + module ServerTestHelper def parse_json(input) assert_valid_json(input) JSON.parse(input) end - def verify_at_least_one_test_passes(test_groups, id_pattern, error_message, id_exclude_pattern = nil) + def verify_at_least_one_test_passes(test_groups, id_pattern, error_message, id_exclude_pattern = nil) # rubocop:disable Metrics/CyclomaticComplexity runnables = test_groups.map do |group| - group.tests.find do |test| + next if ALL_HOOK_TAGS.none? { |hook_name| group.title.include?(hook_name) } + + group.groups[2].tests.find do |test| # response verification subgroup test.id.include?(id_pattern) && (!id_exclude_pattern || !test.id.include?(id_exclude_pattern)) end end.compact diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Appointment.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Appointment.yml new file mode 100644 index 00000000..16bfaca8 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Appointment.yml @@ -0,0 +1,5 @@ +--- +:resource: Appointment +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment +:profile_name: CRD Appointment +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ClaimResponse.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ClaimResponse.yml new file mode 100644 index 00000000..381c77af --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ClaimResponse.yml @@ -0,0 +1,5 @@ +--- +:resource: ClaimResponse +:profile_url: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-claimresponse +:profile_name: HRex Prior authorization +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/CommunicationRequest.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/CommunicationRequest.yml new file mode 100644 index 00000000..45ff266a --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/CommunicationRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: CommunicationRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest +:profile_name: CRD CommunicationRequest +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Coverage.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Coverage.yml new file mode 100644 index 00000000..79569481 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Coverage.yml @@ -0,0 +1,21 @@ +--- +:resource: Coverage +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-coverage +:profile_name: CRD Coverage +:profile_version: 2.0.1 +:search_definitions: + :patient: + :paths: + - beneficiary + :full_paths: + - Coverage.beneficiary + :type: Reference + :status: + :paths: + - status + :full_paths: + - Coverage.status + :type: code +:include_params: [] +:revincludes: +- Provenance:target diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Device.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Device.yml new file mode 100644 index 00000000..a4af0e46 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Device.yml @@ -0,0 +1,5 @@ +--- +:resource: Device +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-device +:profile_name: CRD Device +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/DeviceRequest.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/DeviceRequest.yml new file mode 100644 index 00000000..b8374532 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/DeviceRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: DeviceRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest +:profile_name: CRD DeviceRequest +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Encounter.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Encounter.yml new file mode 100644 index 00000000..3068dc5d --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Encounter.yml @@ -0,0 +1,7 @@ +--- +:resource: Encounter +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter +:profile_name: CRD Encounter +:profile_version: 2.0.1 +:include_params: +- Encounter:location \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Location.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Location.yml new file mode 100644 index 00000000..5ca52726 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Location.yml @@ -0,0 +1,5 @@ +--- +:resource: Location +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location +:profile_name: CRD Location +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/MedicationRequest.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/MedicationRequest.yml new file mode 100644 index 00000000..aee52612 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/MedicationRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: MedicationRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest +:profile_name: CRD MedicationRequest +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/NutritionOrder.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/NutritionOrder.yml new file mode 100644 index 00000000..3d4624f6 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/NutritionOrder.yml @@ -0,0 +1,5 @@ +--- +:resource: NutritionOrder +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-nutritionorder +:profile_name: CRD NutritionOrder +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Organization.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Organization.yml new file mode 100644 index 00000000..ea454069 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Organization.yml @@ -0,0 +1,5 @@ +--- +:resource: Organization +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization +:profile_name: CRD Organization +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Patient.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Patient.yml new file mode 100644 index 00000000..9c5fd449 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Patient.yml @@ -0,0 +1,5 @@ +--- +:resource: Patient +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient +:profile_name: CRD Patient +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Practitioner.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Practitioner.yml new file mode 100644 index 00000000..da854198 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Practitioner.yml @@ -0,0 +1,5 @@ +--- +:resource: Practitioner +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-practitioner +:profile_name: CRD Practitioner +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/PractitionerRole.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/PractitionerRole.yml new file mode 100644 index 00000000..bdbccf62 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/PractitionerRole.yml @@ -0,0 +1,40 @@ +--- +:resource: PractitionerRole +:profile_url: http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitionerrole +:profile_name: US Core PractitionerRole +:profile_version: 3.1.1 +:search_definitions: + :_id: + :paths: + - id + :full_paths: + - PractitionerRole.id + :type: http://hl7.org/fhirpath/System.String + :specialty: + :paths: + - specialty + :full_paths: + - PractitionerRole.specialty + :type: CodeableConcept + :organization: + :paths: + - organization + :full_paths: + - PractitionerRole.organization + :type: Reference + :practitioner: + :paths: + - practitioner + :full_paths: + - PractitionerRole.practitioner + :type: Reference + :chain: + - :chain: identifier + :expectation: SHALL + - :chain: name + :expectation: SHALL +:include_params: +- PractitionerRole:endpoint +- PractitionerRole:practitioner +:revincludes: +- Provenance:target diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ServiceRequest.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ServiceRequest.yml new file mode 100644 index 00000000..446447f6 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/ServiceRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: ServiceRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest +:profile_name: CRD ServiceRequest +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Task.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Task.yml new file mode 100644 index 00000000..9b527f3d --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/Task.yml @@ -0,0 +1,5 @@ +--- +:resource: Task +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-taskquestionnaire +:profile_name: CRD Questionnaire Task +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/VisionPrescription.yml b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/VisionPrescription.yml new file mode 100644 index 00000000..307c021a --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_metadata/VisionPrescription.yml @@ -0,0 +1,5 @@ +--- +:resource: VisionPrescription +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription +:profile_name: CRD VisionPrescription +:profile_version: 2.0.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb b/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb new file mode 100644 index 00000000..2f1b29a1 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/crd_server_suite.rb @@ -0,0 +1,94 @@ +require_relative '../jwt_helper' +require_relative '../endpoints/jwk_set_endpoint_handler' +require_relative 'server_discovery_group' +require_relative 'server_demonstrate_hook_response_group' +require_relative 'server_hooks_group' +require_relative 'server_urls' +require_relative '../endpoints/mock_ehr_endpoints' + +module DaVinciCRDTestKit + module V201 + class CRDServerSuite < Inferno::TestSuite + include ServerURLs + + id :crd_server + title 'Da Vinci CRD Server v2.0.1 Test Suite' + description <<~DESCRIPTION + The Da Vinci CRD Server Test Suite tests the conformance of server systems + to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) + Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). + + For details on the design and use of these tests, see the wiki including + - [Suite Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Details) + for a high-level description of the test + organization, including its components and limitations. + - [Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Instructions) + for a step-by-step guide to execution of these + tests against a CRD client, including [instructions for a demonstration execution](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Instructions#demonstration-execution) + against the [public reference implementation](https://crd.davinci.hl7.org/). + DESCRIPTION + + suite_summary <<~SUMMARY + The Da Vinci CRD Server Test Suite tests the conformance of server systems + to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) + Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). + SUMMARY + + links [ + { + label: 'Report Issue', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/issues' + }, + { + label: 'Open Source', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit' + }, + { + label: 'Download', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/releases' + } + ] + + requirement_sets( + { + identifier: 'hl7.fhir.us.davinci-crd_2.0.1', + title: 'Da Vinci Coverage Requirements Discovery (CRD) v2.0.1', + actor: 'Server' + } + ) + + input :base_url, + title: 'CRD server base URL' + + fhir_resource_validator do + igs('hl7.fhir.us.davinci-crd#2.0.1') + + exclude_message do |message| + # extension definition issue present in 2.0.1 but corrected in later versions + message.message.match?(%r{The extension http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information is not allowed to be used at this point \(allowed = e:QuestionnaireResponse, e:Encounter, e:NutritionOrder, e:CommunicationRequest, e:DeviceRequest, e:ServiceRequest, e:MedicationRequest; this element is \[Appointment\]\)}) # rubocop:disable Layout/LineLength + end + end + + US_CORE_3_METADATA_PATTERN = File.join( + Gem::Specification.find_by_name('us_core_test_kit').gem_dir, + 'lib', 'us_core_test_kit', 'generated', 'v3.1.1', '*', 'metadata.yml' + ) + CRD_V201_METADATA_PATTERN = File.join(__dir__, 'crd_metadata', '*.yml') + include(MockEHREndpoints.with do + Dir.glob([US_CORE_3_METADATA_PATTERN, CRD_V201_METADATA_PATTERN]) + end) + route :get, '/jwks.json', JWKSetEndpointHandler + resume_test_route :get, RESUME_PASS_PATH do |request| + request.query_parameters['token'] + end + resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request| + request.query_parameters['token'] + end + group from: :crd_v201_server_discovery_group + + group from: :crd_v201_server_demonstrate_hook_response + + group from: :crd_v201_server_hooks + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_endpoint_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_endpoint_test.rb new file mode 100644 index 00000000..a7863464 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_endpoint_test.rb @@ -0,0 +1,90 @@ +module DaVinciCRDTestKit + module V201 + class DiscoveryEndpointTest < Inferno::Test + title 'Server returns a discovery response' + id :crd_v201_discovery_endpoint_test + description %( + A CDS Service provider must expose its discovery endpoint at `{baseURL}/cds-services` + as specified in the [CDS Hooks Specification](https://cds-hooks.hl7.org/2.0/#discovery). + + This test checks that the server responds to a GET request at the following endpoint: + + `GET {baseURL}/cds-services` + + It does this by checking that the server responds with an HTTP OK 200 status code + and that the body of the response is a valid JSON object. This test does not + inspect the structure and content of the response body to see if it contains the required information. + It only checks to see if the RESTful interaction is supported and returns a valid JSON object. + ) + + input_order :base_url, :authentication_required, :encryption_method, :jwks_kid + input :base_url + input :authentication_required, + title: 'Discovery endpoint requires authentication?', + type: 'radio', + default: 'no', + options: { + list_options: [ + { + label: 'No', + value: 'no' + }, + { + label: 'Yes', + value: 'yes' + } + ] + } + input :encryption_method, + title: 'JWT Signing Algorithm', + description: <<~DESCRIPTION, + CDS Hooks recommends ES384 and RS384 for JWT signature verification. + Select which method to use. + DESCRIPTION + type: 'radio', + default: 'ES384', + options: { + list_options: [ + { + label: 'ES384', + value: 'ES384' + }, + { + label: 'RS384', + value: 'RS384' + } + ] + } + input :jwks_kid, + title: 'CDS Services JWKS kid', + description: <<~DESCRIPTION, + The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint + requiring authentication. + Defaults to the first JWK in the list if no kid is supplied. + DESCRIPTION + optional: true + output :cds_services + + run do + discovery_url = "#{base_url.chomp('/')}/cds-services" + headers = { 'Accept' => 'application/json' } + + if authentication_required == 'yes' + token = JwtHelper.build( + aud: discovery_url, + iss: inferno_base_url, + jku: "#{inferno_base_url}/jwks.json", + kid: jwks_kid, + encryption_method: + ) + headers['Authorization'] = "Bearer #{token}" + end + get(discovery_url, headers:, tags: [DISCOVERY_TAG]) + assert_response_status(200) + assert_valid_json(request.response_body) + + output cds_services: request.response_body + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_services_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_services_validation_test.rb new file mode 100644 index 00000000..7aabd2a3 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/discovery/discovery_services_validation_test.rb @@ -0,0 +1,67 @@ +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V201 + class DiscoveryServicesValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Discovery response contains valid services' + id :crd_v201_discovery_services_validation + description %( + As per the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#response), + the response to the discovery endpoint SHALL be an object containing + a list of CDS services. If your CDS server hosts no CDS services, + the discovery endpoint should return a 200 HTTP response with + an empty array of services. + + Each CDS service must contain the following required fields: + `hook`, `description`, and `id`. + + This test checks for the presence of the required fields and + validates that they are of the correct type. + + The test will be skipped if the server hosts no CDS services. + ) + + input :cds_services + output :appointment_book_service_ids, :encounter_start_service_ids, :encounter_discharge_service_ids, + :order_dispatch_service_ids, :order_select_service_ids, :order_sign_service_ids + + def required_fields + { + 'hook' => String, + 'description' => String, + 'id' => String + } + end + + run do + object = parse_json(cds_services) + assert object['services'], 'Discovery response did not contain `services`' + + services = object['services'] + assert services.is_a?(Array), 'Services field of the CDS Discovery response object is not an array.' + skip_if services.empty?, 'Server hosts no CDS Services.' + + service_hooks_to_ids = services.each_with_object({}) do |service, hash| + hash[service['hook']] ||= [] + hash[service['hook']] << service['id'] if service['id'] + end + + output appointment_book_service_ids: service_hooks_to_ids['appointment-book']&.join(', '), + encounter_start_service_ids: service_hooks_to_ids['encounter-start']&.join(', '), + encounter_discharge_service_ids: service_hooks_to_ids['encounter-discharge']&.join(', '), + order_dispatch_service_ids: service_hooks_to_ids['order-dispatch']&.join(', '), + order_select_service_ids: service_hooks_to_ids['order-select']&.join(', '), + order_sign_service_ids: service_hooks_to_ids['order-sign']&.join(', ') + + services.each do |service| + required_fields.each do |field, type| + assert(service[field], "Service `#{service}` did not contain required field: `#{field}`") + assert(service[field].is_a?(type), "Service `#{service}`: field `#{field}` is not of type #{type}") + end + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/interaction/server_invoke_hook_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/interaction/server_invoke_hook_test.rb new file mode 100644 index 00000000..714d25f2 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/interaction/server_invoke_hook_test.rb @@ -0,0 +1,11 @@ +require_relative '../server_urls' +require_relative '../../server_abstract_invoke_hook_test' + +module DaVinciCRDTestKit + module V201 + class ServerInvokeHookTest < ServerAbstractInvokeHookTest + include ServerURLs + id :crd_v201_server_invoke_hook_test + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb new file mode 100644 index 00000000..376b5ee4 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb @@ -0,0 +1,34 @@ +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V201 + class CoverageInformationSystemActionAcrossHooksValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Valid Coverage Information system actions received across all hooks' + id :crd_v201_coverage_info_system_action_across_hooks_validation + description %( + This test verifies the presence of valid [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + system action returned by CRD services across all hooks invoked. It verifies the following for each action: + - The action type is `update`. + - The resource within the action conforms its respective FHIR profile. + + Additionally, the test examines the `coverage-info` extensions within the resource to ensure that: + - Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + - Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + + The test will be skipped if no valid Coverage Information system actions are returned across all hooks. + ) + + run do + verify_at_least_one_test_passes( + self.class.parent.parent.groups, + 'crd_v201_coverage_info_system_action_validation', + 'None of the hooks invoked returned valid Coverage Info system actions.' + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/must_support/external_reference_card_across_hooks_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/must_support/external_reference_card_across_hooks_validation_test.rb new file mode 100644 index 00000000..769f3c18 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/must_support/external_reference_card_across_hooks_validation_test.rb @@ -0,0 +1,30 @@ +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V201 + class ExternalReferenceCardAcrossHooksValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Valid External Reference cards received across all hooks' + id :crd_v201_external_reference_card_across_hooks_validation + description %( + This test verifies the presence of valid External Reference returned by CRD services across all hooks invoked. + As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference), + External Reference cards must contain links with the type set to `absolute`. + This test checks for the presence of any External Reference cards by verifying: + - The presence of a `links` array within each card. + - That every link in the `links` array of a card is of type `absolute`. + + The test will be skipped if no valid External Reference cards are returned across all hooks. + ) + + run do + verify_at_least_one_test_passes( + self.class.parent.parent.groups, + 'crd_v201_external_reference_card_validation', + 'None of the hooks invoked returned an External Reference card.' + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/must_support/instructions_card_received_across_hooks_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/must_support/instructions_card_received_across_hooks_test.rb new file mode 100644 index 00000000..cb0fecf5 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/must_support/instructions_card_received_across_hooks_test.rb @@ -0,0 +1,27 @@ +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V201 + class InstructionsCardReceivedAcrossHooksTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Valid Instructions cards received across all hooks' + id :crd_v201_valid_instructions_card_received_across_hooks + description %( + This test validates that a valid [Instructions card](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) + was received across all hooks responses. + + The test will be skipped if no valid Instructions cards are returned across all hooks. + ) + + run do + verify_at_least_one_test_passes( + self.class.parent.parent.groups, + 'crd_v201_valid_instructions_card_received', + 'None of the hooks invoked returned a valid Instructions card.', + 'across_hooks' + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_appointment_book_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_appointment_book_group.rb new file mode 100644 index 00000000..2c3e907c --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_appointment_book_group.rb @@ -0,0 +1,191 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/coverage_information_system_action_received_test' +require_relative 'verify_response/coverage_information_system_action_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerAppointmentBookGroup < Inferno::TestGroup + title 'appointment-book' + id :crd_v201_server_appointment_book + description %( + This group of tests invokes the appointment-book hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + and the [CDS Hooks specification section on appointment-book context](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + The [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + states that "servers SHALL, at minimum, support returning and processing the Coverage Information + system action for all invocations of this hook." + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', + 'hl7.fhir.us.davinci-crd_2.0.1@170', 'hl7.fhir.us.davinci-crd_2.0.1@184' + + config options: { hook_name: APPOINTMENT_BOOK_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v201_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :appointment_book_service_ids, + title: 'Service id for the service that implements the `appointment-book` hook' + }, + service_request_bodies: { + name: :appointment_book_request_bodies, + title: 'Request body or bodies for invoking the `appointment-book` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v201_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :appointment_book_contexts + } + } + } + test from: :crd_v201_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :appointment_book_contexts + } + } + } + test from: :crd_v201_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v201_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :appointment_book_valid_cards + }, + valid_system_actions: { + name: :appointment_book_valid_system_actions + } + } + } + test from: :crd_v201_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :appointment_book_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :appointment_book_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :appointment_book_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :appointment_book_valid_cards_with_links + } + } + } + test from: :crd_v201_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :appointment_book_valid_cards_with_links + } + } + } + test from: :crd_v201_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :appointment_book_valid_cards + } + } + } + test from: :crd_v201_coverage_info_system_action_received, + config: { + inputs: { + valid_system_actions: { + name: :appointment_book_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :appointment_book_coverage_info + } + } + } + test from: :crd_v201_coverage_info_system_action_validation, + config: { + inputs: { + coverage_info: { + name: :appointment_book_coverage_info + } + } + } + test from: :crd_v201_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :appointment_book_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :appointment_book_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :appointment_book_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :appointment_book_valid_cards_with_suggestions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_demonstrate_hook_response_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_demonstrate_hook_response_group.rb new file mode 100644 index 00000000..5b20f809 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_demonstrate_hook_response_group.rb @@ -0,0 +1,93 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerDemonstrateHookResponseGroup < Inferno::TestGroup + title 'Demonstrate A Hook Response' + id :crd_v201_server_demonstrate_hook_response + description %( + This group of tests allows the system to demonstrate its ability to respond to a CRD Hook invocation + and return a valid response. Inferno will use the provided request body and will either use the provided service + id or infer one from the hook indicated in the request and the server's discovery response. + It ensures that the user-provided request and the server's response are both + valid as per the requirements described in the [CRD IG section](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html) + and the [CDS Hooks](https://cds-hooks.hl7.org/) hook specification for the corresponding hook. + ) + + config options: { hook_name: ANY_HOOK_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v201_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :any_hook_service_ids, + title: 'Service id to use for the "Demonstrate a Hook Response" test', + description: %( + If blank, Inferno will attempt to infer the service id to use by finding a service entry in the + Discovery response for the hook indicated in the provided request body. If it cannot be inferred, + the tests will be skipped. + ) + }, + service_request_bodies: { + name: :any_hook_request_body, + title: 'Request body to use for the "Demonstrate a Hook Response" test', + description: %( + Provide a single JSON request body to submit for the hook invocation. The type of hook invoked + will be inferred based on the `hook` element in the request. + ) + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v201_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :any_hook_contexts + } + } + } + test from: :crd_v201_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :any_hook_contexts + }, + request_body: { + name: :any_hook_request_body + } + } + } + end + + group do + title 'Verify Responses' + + test from: :crd_v201_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :any_hook_valid_cards + }, + valid_system_actions: { + name: :any_hook_valid_system_actions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_discovery_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_discovery_group.rb new file mode 100644 index 00000000..0e62e8bc --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_discovery_group.rb @@ -0,0 +1,62 @@ +require 'tls_test_kit' +require_relative 'discovery/discovery_endpoint_test' +require_relative 'discovery/discovery_services_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerDiscoveryGroup < Inferno::TestGroup + title 'Discovery' + id :crd_v201_server_discovery_group + description %( + # Background + + The #{title} Group checks for a CDS Service's Discovery endpoint as described by the + [CDS Hooks Specification](https://cds-hooks.hl7.org/2.0/#discovery). + A CDS Service is discoverable via a stable endpoint by CDS Clients. The Discovery endpoint + includes information such as a description of the CDS Service, when it should be invoked, + and any data that is requested to be prefetched. + The Discovery endpoint SHALL always be available at `{baseUrl}/cds-services`. + + # Test Methodology + + This test sequence accesses the CRD server Discovery endpoint at /cds-services using a GET request. + It parses the response and verifies that: + - The Discovery endpoint is TLS secured. + - The Discovery endpoint is available at `{baseURL}/cds-services`. + - Each CDS Service in the response contains the required fields as specified in the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#response). + + It collects the following information that is saved in the testing session for use by later tests: + - List of supported CDS Services/Hooks + - List of service IDs for each supported Hook. + ) + + run_as_group + + test from: :tls_version_test do + title 'CRD Server is secured by transport layer security' + description <<~DESCRIPTION + Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html), + the CRD Implementation Guide imposes the following rule about TLS: + + As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety), + communications between CRD Clients and CRD Servers SHALL + use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and + CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based + on HRex rules for PHI exchange. + + This test verifies that the CRD server is using TLS 1.2 or higher. + DESCRIPTION + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@89' + id :crd_v201_server_tls_version_stu2 + + config( + options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION }, + inputs: { url: { name: :base_url } } + ) + end + + test from: :crd_v201_discovery_endpoint_test + test from: :crd_v201_discovery_services_validation + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_discharge_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_discharge_group.rb new file mode 100644 index 00000000..a6cb0ed8 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_discharge_group.rb @@ -0,0 +1,186 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerEncounterDischargeGroup < Inferno::TestGroup + title 'encounter-discharge' + id :crd_v201_server_encounter_discharge + description %( + This group of tests invokes the encounter-discharge hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + and the [CDS Hooks specification section on encounter-discharge context](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@196' + + config options: { hook_name: ENCOUNTER_DISCHARGE_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v201_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :encounter_discharge_service_ids, + title: 'Service id for the service that implements the `encounter-discharge` hook' + }, + service_request_bodies: { + name: :encounter_discharge_request_bodies, + title: 'Request body or bodies for invoking the `encounter-discharge` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v201_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :encounter_discharge_contexts + } + } + } + test from: :crd_v201_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :encounter_discharge_contexts + } + } + } + test from: :crd_v201_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v201_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :encounter_discharge_valid_cards + }, + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + } + } + } + test from: :crd_v201_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :encounter_discharge_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :encounter_discharge_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :encounter_discharge_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_discharge_valid_cards_with_links + } + } + } + test from: :crd_v201_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_discharge_valid_cards_with_links + } + } + } + test from: :crd_v201_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :encounter_discharge_valid_cards + } + } + } + test from: :crd_v201_coverage_info_system_action_received, + optional: true, + config: { + inputs: { + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :encounter_discharge_coverage_info + } + } + } + test from: :crd_v201_coverage_info_system_action_validation, + optional: true, + config: { + inputs: { + coverage_info: { + name: :encounter_discharge_coverage_info + } + } + } + test from: :crd_v201_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_discharge_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_discharge_valid_cards_with_suggestions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_start_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_start_group.rb new file mode 100644 index 00000000..c91ca627 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_encounter_start_group.rb @@ -0,0 +1,186 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerEncounterStartGroup < Inferno::TestGroup + title 'encounter-start' + id :crd_v201_server_encounter_start + description %( + This group of tests invokes the encounter-start hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on encounter-start hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + and the [CDS Hooks specification section on encounter-start context](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on encounter-start hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@185' + + config options: { hook_name: ENCOUNTER_START_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v201_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :encounter_start_service_ids, + title: 'Service id for the service that implements the `encounter-start` hook' + }, + service_request_bodies: { + name: :encounter_start_request_bodies, + title: 'Request body or bodies for invoking the `encounter-start` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v201_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :encounter_start_contexts + } + } + } + test from: :crd_v201_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :encounter_start_contexts + } + } + } + test from: :crd_v201_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v201_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :encounter_start_valid_cards + }, + valid_system_actions: { + name: :encounter_start_valid_system_actions + } + } + } + test from: :crd_v201_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :encounter_start_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :encounter_start_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :encounter_start_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_start_valid_cards_with_links + } + } + } + test from: :crd_v201_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_start_valid_cards_with_links + } + } + } + test from: :crd_v201_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :encounter_start_valid_cards + } + } + } + test from: :crd_v201_coverage_info_system_action_received, + optional: true, + config: { + inputs: { + valid_system_actions: { + name: :encounter_start_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :encounter_start_coverage_info + } + } + } + test from: :crd_v201_coverage_info_system_action_validation, + optional: true, + config: { + inputs: { + coverage_info: { + name: :encounter_start_coverage_info + } + } + } + test from: :crd_v201_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_start_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_start_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_start_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_start_valid_cards_with_suggestions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb new file mode 100644 index 00000000..a76c9cdd --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_hooks_group.rb @@ -0,0 +1,73 @@ +require_relative 'server_appointment_book_group' +require_relative 'server_encounter_start_group' +require_relative 'server_encounter_discharge_group' +require_relative 'server_order_select_group' +require_relative 'server_order_dispatch_group' +require_relative 'server_order_sign_group' +require_relative 'server_required_card_response_validation_group' + +module DaVinciCRDTestKit + module V201 + class ServerHooksGroup < Inferno::TestGroup + title 'Hook Tests' + id :crd_v201_server_hooks + description %( + # Background + + The #{title} Group verifies that a [CRD Server](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-server.html) + supports at least one of the hooks supported by the [CRD IG](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks). + The supported hooks include: + - [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + - [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + - [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + - [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + - [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + - [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + + The [CRD STU2 IG section on Supported Hooks](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks) + states that "CRD Servers conforming to this implementation guide + SHALL provide a service for all hooks and order resource types required of + CRD clients by this implementation guide unless the server has determined that + the hook will not be reasonably useful in determining coverage or documentation + expectations for the types of coverage provided." + + # Test Methodology + + In these tests, Inferno acts as a [CRD Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html) + that initiates CDS Hooks calls. This test sequence is broken up into groups, + each group corresponding to a supported hook and defining a set of tests verifying + the ability of the server to respond to the given hook invocation. Additionally, an additional + group checks the required [response types](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types) + across all hooks invoked. + + Each hook group test verifies that: + - The hook can be invoked. + - The user-provided request payload contains the required fields as specified + in the [CDS Hooks section on HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1). + - The user-provided request payload contains the optional fields as specified + in the [CDS Hooks section on HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1) - + optional. + - Each card and system action returned by the server is valid as described in the + [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + - Each [CRD response type](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types) + returned is valid - optional for some response types. See the individual test groups for more details. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@4', 'hl7.fhir.us.davinci-crd_2.0.1@152', + 'hl7.fhir.us.davinci-crd_2.0.1@153' + + group from: :crd_v201_server_appointment_book, + optional: true + group from: :crd_v201_server_encounter_start, + optional: true + group from: :crd_v201_server_encounter_discharge, + optional: true + group from: :crd_v201_server_order_select, + optional: true + group from: :crd_v201_server_order_dispatch, + optional: true + group from: :crd_v201_server_order_sign, + optional: true + group from: :crd_v201_server_required_card_response_validation + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_order_dispatch_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_order_dispatch_group.rb new file mode 100644 index 00000000..b1d011c8 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_order_dispatch_group.rb @@ -0,0 +1,191 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/coverage_information_system_action_received_test' +require_relative 'verify_response/coverage_information_system_action_validation_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerOrderDispatchGroup < Inferno::TestGroup + title 'order-dispatch' + id :crd_v201_server_order_dispatch + description %( + This group of tests invokes the order-dispatch hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + and the [CDS Hooks specification section on order-dispatch context](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + The [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + states that "servers SHALL, at minimum, support returning and processing the Coverage Information + system action for all invocations of this hook." + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', + 'hl7.fhir.us.davinci-crd_2.0.1@204', 'hl7.fhir.us.davinci-crd_2.0.1@207' + + config options: { hook_name: ORDER_DISPATCH_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v201_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :order_dispatch_service_ids, + title: 'Service id for the service that implements the `order-dispatch` hook' + }, + service_request_bodies: { + name: :order_dispatch_request_bodies, + title: 'Request body or bodies for invoking the `order-dispatch` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v201_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :order_dispatch_contexts + } + } + } + test from: :crd_v201_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :order_dispatch_contexts + } + } + } + test from: :crd_v201_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v201_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :order_dispatch_valid_cards + }, + valid_system_actions: { + name: :order_dispatch_valid_system_actions + } + } + } + test from: :crd_v201_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :order_dispatch_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :order_dispatch_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :order_dispatch_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_dispatch_valid_cards_with_links + } + } + } + test from: :crd_v201_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_dispatch_valid_cards_with_links + } + } + } + test from: :crd_v201_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :order_dispatch_valid_cards + } + } + } + test from: :crd_v201_coverage_info_system_action_received, + config: { + inputs: { + valid_system_actions: { + name: :order_dispatch_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :order_dispatch_coverage_info + } + } + } + test from: :crd_v201_coverage_info_system_action_validation, + config: { + inputs: { + coverage_info: { + name: :order_dispatch_coverage_info + } + } + } + test from: :crd_v201_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_dispatch_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_dispatch_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_dispatch_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_dispatch_valid_cards_with_suggestions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_order_select_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_order_select_group.rb new file mode 100644 index 00000000..864684f3 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_order_select_group.rb @@ -0,0 +1,211 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/propose_alternate_request_card_validation_test' +require_relative 'verify_response/additional_orders_validation_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerOrderSelectGroup < Inferno::TestGroup + title 'order-select' + id :crd_v201_server_order_select + description %( + This group of tests invokes the order-select hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + and the [CDS Hooks specification section on order-select context](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + This group includes tests to validate the following CRD response types: + - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\ + - optional + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@208' + + config options: { hook_name: ORDER_SELECT_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v201_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :order_select_service_ids, + title: 'Service id for the service that implements the `order-select` hook' + }, + service_request_bodies: { + name: :order_select_request_bodies, + title: 'Request body or bodies for invoking the `order-select` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v201_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :order_select_contexts + } + } + } + test from: :crd_v201_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :order_select_contexts + } + } + } + test from: :crd_v201_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v201_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :order_select_valid_cards + }, + valid_system_actions: { + name: :order_select_valid_system_actions + } + } + } + test from: :crd_v201_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :order_select_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :order_select_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_select_valid_cards_with_links + } + } + } + test from: :crd_v201_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_select_valid_cards_with_links + } + } + } + test from: :crd_v201_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :order_select_valid_cards + } + } + } + test from: :crd_v201_coverage_info_system_action_received, + optional: true, + config: { + inputs: { + valid_system_actions: { + name: :order_select_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :order_select_coverage_info + } + } + } + test from: :crd_v201_coverage_info_system_action_validation, + optional: true, + config: { + inputs: { + coverage_info: { + name: :order_select_coverage_info + } + } + } + test from: :crd_v201_propose_alternate_request_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + }, + contexts: { + name: :order_select_contexts + } + } + } + test from: :crd_v201_additional_orders_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_select_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_select_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_order_sign_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_order_sign_group.rb new file mode 100644 index 00000000..f1338404 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_order_sign_group.rb @@ -0,0 +1,216 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/coverage_information_system_action_received_test' +require_relative 'verify_response/coverage_information_system_action_validation_test' +require_relative 'verify_response/propose_alternate_request_card_validation_test' +require_relative 'verify_response/additional_orders_validation_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerOrderSignGroup < Inferno::TestGroup + title 'order-sign' + id :crd_v201_server_order_sign + description %( + This group of tests invokes the order-sign hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + and the [CDS Hooks specification section on order-sign context](https://cds-hooks.hl7.org/hooks/order-sign/2023SepSTU1Ballot/order-sign/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + The [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + states that "servers SHALL, at minimum, support returning and processing the Coverage Information + system action for all invocations of this hook." + + This group includes tests to validate the following CRD response types: + - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\ + - optional + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', + 'hl7.fhir.us.davinci-crd_2.0.1@217', 'hl7.fhir.us.davinci-crd_2.0.1@226' + + config options: { hook_name: ORDER_SIGN_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v201_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :order_sign_service_ids, + title: 'Service id for the service that implements the `order-sign` hook' + }, + service_request_bodies: { + name: :order_sign_request_bodies, + title: 'Request body or bodies for invoking the `order-sign` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v201_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :order_sign_contexts + } + } + } + test from: :crd_v201_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :order_sign_contexts + } + } + } + test from: :crd_v201_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v201_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :order_sign_valid_cards + }, + valid_system_actions: { + name: :order_sign_valid_system_actions + } + } + } + test from: :crd_v201_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :order_sign_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :order_sign_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_sign_valid_cards_with_links + } + } + } + test from: :crd_v201_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_sign_valid_cards_with_links + } + } + } + test from: :crd_v201_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :order_sign_valid_cards + } + } + } + test from: :crd_v201_coverage_info_system_action_received, + config: { + inputs: { + valid_system_actions: { + name: :order_sign_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :order_sign_coverage_info + } + } + } + test from: :crd_v201_coverage_info_system_action_validation, + config: { + inputs: { + coverage_info: { + name: :order_sign_coverage_info + } + } + } + test from: :crd_v201_propose_alternate_request_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + }, + contexts: { + name: :order_sign_contexts + } + } + } + test from: :crd_v201_additional_orders_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_sign_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + test from: :crd_v201_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_sign_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_required_card_response_validation_group.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_required_card_response_validation_group.rb new file mode 100644 index 00000000..8920cc93 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_required_card_response_validation_group.rb @@ -0,0 +1,28 @@ +require_relative 'must_support/external_reference_card_across_hooks_validation_test' +require_relative 'must_support/instructions_card_received_across_hooks_test' +require_relative 'must_support/coverage_information_system_action_across_hooks_validation_test' + +module DaVinciCRDTestKit + module V201 + class ServerRequiredCardResponseValidationGroup < Inferno::TestGroup + title 'Required Card Response Validation' + description %( + This group contains tests to verify the presence and validity of required response types + across all hooks invoked. As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types), + CRD Servers SHALL, at minimum, demonstrate an ability to return the following response types: + - Coverage Information System Action + - External Reference Card + - Instructions Card + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@247', 'hl7.fhir.us.davinci-crd_2.0.1@248', + 'hl7.fhir.us.davinci-crd_2.0.1@249' + + id :crd_v201_server_required_card_response_validation + run_as_group + + test from: :crd_v201_external_reference_card_across_hooks_validation + test from: :crd_v201_valid_instructions_card_received_across_hooks + test from: :crd_v201_coverage_info_system_action_across_hooks_validation + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/server_urls.rb b/lib/davinci_crd_test_kit/server/v2.0.1/server_urls.rb new file mode 100644 index 00000000..dcfa96ad --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/server_urls.rb @@ -0,0 +1,13 @@ +require_relative '../server_base_urls' + +module DaVinciCRDTestKit + module V201 + module ServerURLs + include ServerBaseURLs + + def suite_id + DaVinciCRDTestKit::V201::CRDServerSuite.id + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_context_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_context_validation_test.rb new file mode 100644 index 00000000..6eb735f8 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_context_validation_test.rb @@ -0,0 +1,30 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V201 + class ServiceRequestContextValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service requests contain valid context' + id :crd_v201_service_request_context_validation + description %( + This test verifies that all service requests `context` field is valid and contains all the + required fields. + ) + input :contexts, :invoked_hook + + run do + parsed_contexts = parse_json(contexts) + parsed_contexts.each do |context| + hook_request_context_check(context, invoked_hook, ig_version: 'v201') + end + + no_error_validation('Some contexts are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_optional_fields_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_optional_fields_validation_test.rb new file mode 100644 index 00000000..a119b289 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_optional_fields_validation_test.rb @@ -0,0 +1,39 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V201 + class ServiceRequestOptionalFieldsValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service requests contain optional fields' + id :crd_v201_service_request_optional_fields_validation + description %( + This optional test reviews the user-submitted CRD service requests for the presence of optional fields: + `fhirAuthorization` and `prefetch`. + + The test will not fail if these optional fields are missing from a service request; instead, it generates an + informational message. + ) + optional + + run do + load_tagged_requests(tested_hook_name) + skip_if requests.empty?, "No #{tested_hook_name} request was made in a previous test as expected." + + requests.each_with_index do |request, index| + @request_number = index + 1 + request_body = json_parse(request.request_body) + if request_body.blank? + add_message('error', "#{request_number}Hook request body cannot be empty.") + next + end + + hook_request_optional_fields_check(request_body, ig_version: 'v201') + end + no_error_validation('Some service requests have invalid optional fields.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_required_fields_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_required_fields_validation_test.rb new file mode 100644 index 00000000..d7dbd203 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_request/service_request_required_fields_validation_test.rb @@ -0,0 +1,40 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V201 + class ServiceRequestRequiredFieldsValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service requests contain required fields' + id :crd_v201_service_request_required_fields_validation + description %( + This test validates all CRD service requests provided by the user, ensuring each includes all required fields + specified in the [CDS Hooks spec section on Calling a CDS Service](https://cds-hooks.hl7.org/2.0/#calling-a-cds-service): + `hook`, `hookInstance`, and `context`. Furthermore, the test checks for the conditional presence of the + `fhirServer` field if `fhirAuthorization` is included. + ) + input :invoked_hook + output :contexts + + run do + load_tagged_requests(tested_hook_name) + skip_if requests.empty?, "No #{tested_hook_name} request was made in a previous test as expected." + contexts = [] + requests.each_with_index do |request, index| + @request_number = index + 1 + request_body = json_parse(request.request_body) + next if request_body.blank? + + contexts << request_body['context'] if request_body['context'].is_a?(Hash) + hook_request_required_fields_check(request_body, invoked_hook, ig_version: 'v201') + end + + output contexts: contexts.to_json + + no_error_validation('Some service requests made are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/additional_orders_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/additional_orders_validation_test.rb new file mode 100644 index 00000000..1e77632c --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/additional_orders_validation_test.rb @@ -0,0 +1,59 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class AdditionalOrdersValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Additional Orders as companions/prerequisites cards received' + id :crd_v201_additional_orders_card_validation + description %( + This test validates that an [Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order) + card was received. It does so by: + - Filtering cards with the following criteria: + - For each suggestion in the card's suggestions array, all actions have a type of 'create' + and the action's resource type is one of the expected types: CommunicationRequest, Device, + DeviceRequest, Medication, MedicationRequest, NutritionOrder, ServiceRequest, or VisionPrescription. + - Then, for each valid Additional Orders card retrieved, verifying that each action within the + card's suggestions complies with their respective profiles as specified in the + [CRD IG section on Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order): + - [crd-profile-communicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html) + - [crd-profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) + - [crd-profile-deviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) + - [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html) + - [crd-profile-medicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) + - [crd-profile-nutritionOrder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) + - [crd-profile-serviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) + - [crd-profile-visionPrescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html). + + The test will skip if no Additional Orders cards are found. + ) + + optional + input :valid_cards_with_suggestions + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + additional_orders_cards = parsed_cards.filter do |card| + additional_orders_response_type?(card) + end + skip_if additional_orders_cards.blank?, + "#{tested_hook_name} hook response does not include Additional Orders as companion/prerequisite cards." + + additional_orders_cards.each do |card| + card['suggestions'].each do |suggestion| + actions_check(suggestion['actions'], ig_version: 'v201') + end + end + + no_error_validation('Some companions/prerequisites Additional Order cards are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/card_optional_fields_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/card_optional_fields_validation_test.rb new file mode 100644 index 00000000..00f7a037 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/card_optional_fields_validation_test.rb @@ -0,0 +1,51 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_request_validation' +require_relative '../../../cross_suite/cards_validation' + +module DaVinciCRDTestKit + module V201 + class CardOptionalFieldsValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::CardsValidation + + title 'Cards contain valid optional fields' + id :crd_v201_card_optional_fields_validation + description %( + This test checks for the presence and validity of optional fields in a card, + but only if the card's required fields are valid. As specified in the + [CDS Hooks specification section on Card Attributes](https://cds-hooks.hl7.org/2.0/#card-attributes), + the optional fields include `uuid`, `detail`, `suggestions`, `overrideReasons`, and `links`. + + Additionally, the test validates the presence of the conditional field `selectionBehavior` + only if the `suggestions` field is present. + ) + optional + input :valid_cards + output :valid_cards_with_links, :valid_cards_with_suggestions + + def cards_with_suggestions + @cards_with_suggestions ||= [] + end + + def cards_with_links + @cards_with_links ||= [] + end + + run do + parsed_cards = parse_json(valid_cards) + parsed_cards.each do |card| + if valid_card_with_optionals?(card) + cards_with_links << card if card['links'] + cards_with_suggestions << card if card['suggestions'] + end + end + + output valid_cards_with_links: cards_with_links.to_json + output valid_cards_with_suggestions: cards_with_suggestions.to_json + + no_error_validation('Some cards with valid required fields have invalid optional fields.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_received_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_received_test.rb new file mode 100644 index 00000000..025f1521 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_received_test.rb @@ -0,0 +1,65 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class CoverageInformationSystemActionReceivedTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Coverage Information system action was received' + id :crd_v201_coverage_info_system_action_received + description %( + This test validates that a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + system action was returned. It does so by: + - First checking for the presence of actions with a `resource` element of the following types: + - For `appointment-book`: Appointment + - For `order-sign` or `order-dispatch`: DeviceRequest, MedicationRequest, NutritionOrder, + ServiceRequest, or VisionPrescription + - Then, among the target actions, checking if their resource has the [coverage-information extension](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information). + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@272', 'hl7.fhir.us.davinci-crd_2.0.1@273', + 'hl7.fhir.us.davinci-crd_2.0.1@274', 'hl7.fhir.us.davinci-crd_2.0.1@275', + 'hl7.fhir.us.davinci-crd_2.0.1@276', 'hl7.fhir.us.davinci-crd_2.0.1@277' + + input :valid_system_actions, :invoked_hook + output :coverage_info + + def resources_by_hook + shared_resources = [ + 'DeviceRequest', 'MedicationRequest', 'NutritionOrder', + 'ServiceRequest', 'VisionPrescription' + ] + { + 'appointment-book' => ['Appointment'], + 'order-sign' => shared_resources, + 'order-dispatch' => shared_resources, + 'order-select' => shared_resources, + 'encounter-start' => ['Encounter'], + 'encounter-discharge' => ['Encounter'] + } + end + + run do + parsed_actions = parse_json(valid_system_actions) + target_resources = resources_by_hook[invoked_hook] + + target_actions = parsed_actions.select do |action| + resource = FHIR.from_contents(action['resource'].to_json) + target_resources.include?(resource&.resourceType) + end + + coverage_info_system_actions = target_actions.select do |action| + coverage_information_response_type?(action) + end + + assert coverage_info_system_actions.present?, + "Coverage Information system action was not returned in the #{tested_hook_name} hook response." + + output coverage_info: coverage_info_system_actions.to_json + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_validation_test.rb new file mode 100644 index 00000000..8bb8fa6b --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/coverage_information_system_action_validation_test.rb @@ -0,0 +1,120 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V201 + class CoverageInformationSystemActionValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerTestHelper + + title 'All Coverage Information system actions received are valid' + id :crd_v201_coverage_info_system_action_validation + description %( + This test validates all [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + system actions received. It verifies the following for each action: + - The action type is `update`. + - The resource within the action conforms its respective FHIR profile. + + Additionally, the test examines the `coverage-info` extensions within the resource to ensure that: + - Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + - Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + ) + input :coverage_info + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@264', 'hl7.fhir.us.davinci-crd_2.0.1@265' + + def find_extension_value(extension, url, *properties) + found_extension = extension.extension.find { |ext| ext.url == url } + return nil unless found_extension + + properties.reduce(found_extension) do |current, prop| + return current unless current.respond_to?(prop) + + current.send(prop) + end + end + + def extract_and_group_coverage_info(resource) + resource.extension.each_with_object({}) do |extension, grouped_extensions| + next unless extension.url == 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' + + coverage_key = find_extension_value(extension, 'coverage', 'valueReference', 'reference') + grouped_extensions[coverage_key] ||= [] + grouped_extensions[coverage_key] << extension + end + end + + # For the same coverage, ensure coverage-assertion-ids and satisfied-pa-ids are the same. + # For different coverages, ensure coverage-assertion-ids and satisfied-pa-ids are distinct. + def multiple_extensions_conformance_check(grouped_coverage_info, resource) + resource_ref = "#{resource.resourceType}/#{resource.id}" + assertion_ids_across_coverages = Set.new + pa_ids_across_coverages = Set.new + + grouped_coverage_info.each do |coverage, extensions| + coverage_assertion_ids = collect_extensions_id(extensions, 'coverage-assertion-id', 'valueString').uniq + satisfied_pa_ids = collect_extensions_id(extensions, 'satisfied-pa-id', 'valueString').uniq.compact + assert coverage_assertion_ids.length == 1, + same_coverage_conformance_error_msg(resource_ref, coverage, 'coverage-assertion-ids') + + assert satisfied_pa_ids.length <= 1, + same_coverage_conformance_error_msg(resource_ref, coverage, 'satisfied-pa-ids') + + assertion_id = coverage_assertion_ids.first + assert !assertion_ids_across_coverages.include?(assertion_id), + different_coverage_conformance_error_msg(resource_ref, 'coverage-assertion-ids') + assertion_ids_across_coverages.add(assertion_id) + pa_id = satisfied_pa_ids.first + next unless pa_id + + assert !pa_ids_across_coverages.include?(pa_id), + different_coverage_conformance_error_msg(resource_ref, 'satisfied-pa-ids') + pa_ids_across_coverages.add(pa_id) + end + end + + def collect_extensions_id(extensions, url, *properties) + extensions.map do |extension| + find_extension_value(extension, url, *properties) + end + end + + def same_coverage_conformance_error_msg(resource_ref, coverage, id_name) + "#{resource_ref}: extension has multiple repetitions of coverage `#{coverage}` with different #{id_name}." + end + + def different_coverage_conformance_error_msg(resource_ref, id_name) + "#{resource_ref}: extensions referencing differing coverage SHALL have distinct #{id_name}." + end + + def coverage_info_system_action_check(coverage_info_system_action) + type = coverage_info_system_action['type'] + assert type, '`type` field is missing.' + assert type == 'update', "`type` must be `update`, but was `#{type}`" + + resource = FHIR.from_contents(coverage_info_system_action['resource'].to_json) + profile_url = structure_definition_map('v201')[resource.resourceType] + assert_valid_resource(resource:, profile_url:) + + grouped_coverage_info = extract_and_group_coverage_info(resource) + multiple_extensions_conformance_check(grouped_coverage_info, resource) + end + + run do + parsed_coverage_info = parse_json(coverage_info) + error_messages = [] + parsed_coverage_info.each do |action| + coverage_info_system_action_check(action) + rescue Inferno::Exceptions::AssertionException => e + error_messages << "Coverage Info system action `#{action}`: #{e.message}" + end + + error_messages.each do |msg| + messages << { type: 'error', message: msg } + end + assert error_messages.empty?, 'Some Coverage Info system actions are not valid.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/create_or_update_coverage_info_response_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/create_or_update_coverage_info_response_validation_test.rb new file mode 100644 index 00000000..d04a298c --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/create_or_update_coverage_info_response_validation_test.rb @@ -0,0 +1,70 @@ +require_relative '../../server_test_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class CreateOrUpdateCoverageInfoResponseValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Create or Update Coverage Information cards or system actions received' + id :crd_v201_create_or_update_coverage_info_response_validation + description %( + This test validates the Create or Update Coverage Information cards or system actions received from the + CRD service, as per the specifications outlined in the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information). + + - **Checking for Presence:** + The test first checks if any Create or Update Coverage Information cards or system actions are present in + the returned valid cards or valid system actions. + - **For cards**: it ensures there are cards with a `suggestions` array containing a single suggestion, + and the `actions` array of that suggestion has one `create` or `update` action for the `Coverage` resource. + - **For system actions**: it checks for the presence of `create` or `update` actions for the `Coverage` + resource. + + - **Validating:** + If any Create or Update Coverage Information cards or system actions are found, each `Coverage` resource is + validated against the base FHIR Coverage resource. + + If no Create or Update Coverage Information cards or system actions are received, the test is skipped. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@306' + optional + input :valid_cards_with_suggestions, :valid_system_actions + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + parsed_actions = parse_json(valid_system_actions) + + create_or_update_coverage_info_cards = parsed_cards.select do |card| + create_or_update_coverage_card_response_type?(card) + end + create_or_update_coverage_info_actions = parsed_actions.select do |action| + create_or_update_coverage_action_response_type?(action) + end + + skip_msg = "#{tested_hook_name} hook response does not contain any Create or Update Coverage Information " \ + 'cards or system actions.' + skip_if create_or_update_coverage_info_cards.blank? && create_or_update_coverage_info_actions.blank?, skip_msg + + if create_or_update_coverage_info_actions.present? + actions_check(create_or_update_coverage_info_actions, + ig_version: 'v201') + end + + if create_or_update_coverage_info_cards.present? + create_or_update_coverage_info_cards.each do |card| + actions_check(card['suggestions'].first['actions'].select do |action| + create_or_update_coverage_action_response_type?(action) + end, ig_version: 'v201') + end + end + + no_error_validation('Some Create or Update Coverage Information received are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/external_reference_card_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/external_reference_card_validation_test.rb new file mode 100644 index 00000000..f18b63b9 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/external_reference_card_validation_test.rb @@ -0,0 +1,37 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class ExternalReferenceCardValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid External Reference cards received' + id :crd_v201_external_reference_card_validation + description %( + This test verifies the presence of valid External Reference cards within the list of valid cards + returned by the CRD service. + As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference), + External Reference cards must contain links with the type set to `absolute`. + This test checks for the presence of any External Reference cards by verifying: + - The presence of a `links` array within each card. + - That every link in the `links` array of a card is of type `absolute`. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@258', 'hl7.fhir.us.davinci-crd_2.0.1@259' + + input :valid_cards_with_links + optional + + run do + parsed_cards = parse_json(valid_cards_with_links) + external_reference_cards = parsed_cards.select { |card| external_reference_response_type?(card) } + + assert external_reference_cards.present?, + "#{tested_hook_name} hook response did not contain an External Reference card." + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/form_completion_response_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/form_completion_response_validation_test.rb new file mode 100644 index 00000000..b3f5a1d9 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/form_completion_response_validation_test.rb @@ -0,0 +1,67 @@ +require_relative '../../server_test_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class FormCompletionResponseValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Request Form Completion cards or system actions received' + id :crd_v201_request_form_completion_response_validation + description %( + This test validates the Request Form Completion cards or system actions received from the CRD service, + as per the specifications outlined in the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion). + + - **Checking for Presence:** + The test begins by verifying whether any Request Form Completion cards or system actions are present. + - **For cards:** It ensures that there are cards with `suggestions` containing `create` actions + for the `Task` resource, specifically: + - The `Task` must have a `code` of `complete-questionnaire`. + - The `Task` should include an input of type `text` (`Task.input.type.text`) labeled as `questionnaire` + and associated with a valid canonical URL (`Task.input.valueCanonical`). + - **For system actions:** It checks for the presence of `create` actions for the `Task` resource with + the characteristics described above. + + - **Validating:** + If any Request Form Completion cards or system actions are found, the test proceeds to validate them. + Each `Task` resource is validated against the [CRD Questionnaire Task profile](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-taskquestionnaire). + + If no Request Form Completion cards or system actions are received, the test is skipped. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@299' + optional + input :valid_cards_with_suggestions, :valid_system_actions + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + parsed_actions = parse_json(valid_system_actions) + + form_completion_cards = parsed_cards.select { |card| form_completion_card_response_type?(card) } + form_completion_actions = parsed_actions.select { |action| form_completion_action_response_type?(action) } + + skip_if form_completion_cards.blank? && form_completion_actions.blank?, + "#{tested_hook_name} hook response does not contain any " \ + 'Request Form Completion cards or system actions.' + + actions_check(form_completion_actions, ig_version: 'v201') if form_completion_actions.present? + + if form_completion_cards.present? + form_completion_cards.each do |card| + card['suggestions'].each do |suggestion| + actions_check(suggestion['actions']&.select do |action| + form_completion_action_response_type?(action) + end, ig_version: 'v201') + end + end + end + + no_error_validation('Some Request Form Completion received are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/instructions_card_received_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/instructions_card_received_test.rb new file mode 100644 index 00000000..02ee7edd --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/instructions_card_received_test.rb @@ -0,0 +1,30 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class InstructionsCardReceivedTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Instructions cards received' + id :crd_v201_valid_instructions_card_received + description %( + This test validates that an [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) + card was received. It does so by: + - Checking for the presence of a valid card that does not contain the `links` field and the `suggestions` field. + ) + + input :valid_cards + optional + + run do + parsed_cards = parse_json(valid_cards) + instructions_card = parsed_cards.find { |card| instructions_response_type?(card) } + assert instructions_card, "#{tested_hook_name} hook response did not contain an Instructions card." + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/launch_smart_app_card_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/launch_smart_app_card_validation_test.rb new file mode 100644 index 00000000..cfc62039 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/launch_smart_app_card_validation_test.rb @@ -0,0 +1,39 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class LaunchSmartAppCardValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Launch SMART Application cards received' + id :crd_v201_launch_smart_app_card_validation + description %( + This test verifies the presence of valid Launch SMART Application cards within the list of valid cards + returned by the CRD service. + As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application), + Launch SMART Application cards must contain links with the type set to `smart`. + This test checks for the presence of any Launch SMART Application cards by verifying: + - The existence of a `links` array within each card. + - That every link in the `links` array of a card is of type `smart`. + + The test will be skipped if no Launch SMART Application cards are found within the returned valid cards. + ) + verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@258' + + optional + input :valid_cards_with_links + + run do + parsed_cards = parse_json(valid_cards_with_links) + external_reference_cards = parsed_cards.select { |card| launch_smart_app_response_type?(card) } + + skip_if external_reference_cards.blank?, + "#{tested_hook_name} hook response does not contain any Launch SMART App cards." + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/propose_alternate_request_card_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/propose_alternate_request_card_validation_test.rb new file mode 100644 index 00000000..f4a35a05 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/propose_alternate_request_card_validation_test.rb @@ -0,0 +1,46 @@ +require_relative '../../server_test_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V201 + class ProposeAlternateRequestCardValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Propose Alternate Request cards received' + id :crd_v201_propose_alternate_request_card_validation + description %( + This test validates that all [Propose Alternate Request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) + cards received are valid. It checks for the presence of a card's suggestion + with a single action with `Action.type` of `update` or a card with at least + two actions, one with `Action.type` of `delete` and the other with + `Action.type` of `create`. + ) + optional + input :valid_cards_with_suggestions, :contexts + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + parsed_contexts = parse_json(contexts) + proposed_alternate_cards = parsed_cards.filter do |card| + propose_alternative_request_response_type?(card) + end + + skip_if proposed_alternate_cards.blank?, + "#{tested_hook_name} hook response does not contain a Propose Alternate Request card." + + proposed_alternate_cards.each do |card| + card['suggestions'].each do |suggestion| + actions_check(suggestion['actions'], parsed_contexts, ig_version: 'v201') + end + end + + no_error_validation('Some Proposed Alternate Request cards are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/service_response_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/service_response_validation_test.rb new file mode 100644 index 00000000..ce38db4c --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.0.1/verify_response/service_response_validation_test.rb @@ -0,0 +1,83 @@ +require_relative '../../../cross_suite/cards_validation' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V201 + class ServiceResponseValidationTest < Inferno::Test + include DaVinciCRDTestKit::CardsValidation + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service responses contain valid cards and optional systemActions' + id :crd_v201_service_response_validation + description %( + As per the [CDS Hooks spec section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response), + a successful server's response to a service request must be a JSON object containing a `cards` array. + It must also contain a `systemActions` array for `appointment-book` and `order-sign` hook. + + Each card must contain the following required fields: `summary`, `indicator`, and `source`. + The required fields must have a valid data structure. + ) + input :invoked_hook + output :valid_cards, :valid_system_actions + + SYSTEM_ACTIONS_HOOK_NAMES = ['appointment-book', 'order-sign', 'order-dispatch'].freeze + + def valid_cards + @valid_cards ||= [] + end + + def valid_system_actions + @valid_system_actions ||= [] + end + + def system_actions_check(system_actions) + system_actions.each do |action| + current_error_count = messages.count { |msg| msg[:type] == 'error' } + action_fields_validation(action, ig_version: 'v201') + valid_system_actions << action if current_error_count == messages.count { |msg| msg[:type] == 'error' } + end + end + + def perform_system_actions_validation(system_actions, response_index) + if SYSTEM_ACTIONS_HOOK_NAMES.include?(invoked_hook) && system_actions.nil? + msg = "Server response #{response_index + 1} did not have the `systemActions` field, " \ + "which must be present for the `#{invoked_hook}` hook." + add_message('error', msg) + end + return if system_actions.nil? + + unless system_actions.is_a?(Array) + add_message('error', "`systemActions` of server response #{response_index + 1} is not an array.") + return + end + system_actions_check(system_actions) + end + + run do + load_tagged_requests(tested_hook_name) + skip_if requests.blank?, "No #{tested_hook_name} request was made in a previous test as expected." + successful_requests = requests.select { |request| request.status == 200 } + skip_if successful_requests.empty?, 'All service requests were unsuccessful.' + + info do + unsuccessful_count = (requests - successful_requests).length + assert unsuccessful_count.zero?, "#{unsuccessful_count} out of #{requests.length} requests were unsuccessful" + end + + successful_requests.each_with_index do |request, index| + service_response = JSON.parse(request.response_body) + perform_cards_validation(service_response['cards'], service_response['systemActions'].present?, index) + + perform_system_actions_validation(service_response['systemActions'], index) + rescue JSON::ParserError + add_message('error', "Invalid JSON: server response #{index + 1} is not valid JSON.") + end + + output valid_system_actions: valid_system_actions.to_json + output valid_cards: valid_cards.to_json + + no_error_validation('Some service responses are not valid. Check messages for issues found.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withorder.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withorder.yml new file mode 100644 index 00000000..c0e9b25d --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withorder.yml @@ -0,0 +1,5 @@ +--- +:resource: Appointment +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment-with-order +:profile_name: CRD Appointment with Order +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withoutorder.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withoutorder.yml new file mode 100644 index 00000000..d0091afa --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Appointment_withoutorder.yml @@ -0,0 +1,5 @@ +--- +:resource: Appointment +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment-no-order +:profile_name: CRD Appointment without Order +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/CommunicationRequest.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/CommunicationRequest.yml new file mode 100644 index 00000000..e2dbb741 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/CommunicationRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: CommunicationRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-communicationrequest +:profile_name: CRD Communication Request +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Coverage.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Coverage.yml new file mode 100644 index 00000000..5116de0b --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Coverage.yml @@ -0,0 +1,5 @@ +--- +:resource: Coverage +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-coverage +:profile_name: CRD Coverage +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Device.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Device.yml new file mode 100644 index 00000000..000aa666 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Device.yml @@ -0,0 +1,5 @@ +--- +:resource: Device +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-device +:profile_name: CRD Device +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/DeviceRequest.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/DeviceRequest.yml new file mode 100644 index 00000000..39873f90 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/DeviceRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: DeviceRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-devicerequest +:profile_name: CRD Device Request +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Encounter.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Encounter.yml new file mode 100644 index 00000000..7bb69350 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Encounter.yml @@ -0,0 +1,5 @@ +--- +:resource: Encounter +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-encounter +:profile_name: CRD Encounter +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Location.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Location.yml new file mode 100644 index 00000000..e4faf882 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Location.yml @@ -0,0 +1,5 @@ +--- +:resource: Location +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-location +:profile_name: CRD Location +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/MedicationRequest.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/MedicationRequest.yml new file mode 100644 index 00000000..539cc115 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/MedicationRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: MedicationRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-medicationrequest +:profile_name: CRD Medication Request +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/NutritionOrder.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/NutritionOrder.yml new file mode 100644 index 00000000..4e7ca9bd --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/NutritionOrder.yml @@ -0,0 +1,5 @@ +--- +:resource: NutritionOrder +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-nutritionorder +:profile_name: CRD Nutrition Order +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Organization.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Organization.yml new file mode 100644 index 00000000..96bc9a62 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Organization.yml @@ -0,0 +1,5 @@ +--- +:resource: Organization +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-organization +:profile_name: CRD Organization +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Patient.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Patient.yml new file mode 100644 index 00000000..3d4ca967 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/Patient.yml @@ -0,0 +1,5 @@ +--- +:resource: Patient +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient +:profile_name: CRD Patient +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/PractitionerRole.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/PractitionerRole.yml new file mode 100644 index 00000000..012fab52 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/PractitionerRole.yml @@ -0,0 +1,5 @@ +--- +:resource: PractitionerRole +:profile_url: http://hl7.org/fhir/us/davinci-hrex/StructureDefinition/hrex-practitionerrole +:profile_name: HRex PractitionerRole Profile +:profile_version: 1.2.0 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/ServiceRequest.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/ServiceRequest.yml new file mode 100644 index 00000000..d49973d8 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/ServiceRequest.yml @@ -0,0 +1,5 @@ +--- +:resource: ServiceRequest +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-servicerequest +:profile_name: CRD Service Request +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/VisionPrescription.yml b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/VisionPrescription.yml new file mode 100644 index 00000000..72755ff4 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_metadata/VisionPrescription.yml @@ -0,0 +1,5 @@ +--- +:resource: VisionPrescription +:profile_url: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-visionprescription +:profile_name: CRD Vision Prescription +:profile_version: 2.2.1 \ No newline at end of file diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb b/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb new file mode 100644 index 00000000..35074831 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/crd_server_suite.rb @@ -0,0 +1,99 @@ +require_relative '../jwt_helper' +require_relative '../endpoints/jwk_set_endpoint_handler' +require_relative 'server_discovery_group' +require_relative 'server_demonstrate_hook_response_group' +require_relative 'server_hooks_group' +require_relative 'server_urls' +require_relative '../endpoints/mock_ehr_endpoints' + +module DaVinciCRDTestKit + module V221 + class CRDServerSuite < Inferno::TestSuite + include ServerURLs + + id :crd_server_v221 + title 'Da Vinci CRD Server v2.2.1 Test Suite' + description <<~DESCRIPTION + The Da Vinci CRD Server Test Suite tests the conformance of server systems + to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) + Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). + + For details on the design and use of these tests, see the wiki including + - [Suite Details](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Details) + for a high-level description of the test + organization, including its components and limitations. + - [Testing Instructions](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Instructions) + for a step-by-step guide to execution of these + tests against a CRD client, including [instructions for a demonstration execution](https://github.com/inferno-framework/davinci-crd-test-kit/wiki/Server-Instructions#demonstration-execution) + against the [public reference implementation](https://crd.davinci.hl7.org/). + DESCRIPTION + + suite_summary <<~SUMMARY + The Da Vinci CRD Server Test Suite tests the conformance of server systems + to [version 2.0.1 of the Da Vinci Coverage Requirements Discovery (CRD) + Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2). + SUMMARY + + links [ + { + label: 'Report Issue', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/issues' + }, + { + label: 'Open Source', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit' + }, + { + label: 'Download', + url: 'https://github.com/inferno-framework/davinci-crd-test-kit/releases' + } + ] + + requirement_sets( + { + identifier: 'hl7.fhir.us.davinci-crd_2.2.1', + title: 'Da Vinci Coverage Requirements Discovery (CRD) v2.2.1', + actor: 'CRD Server' + } + ) + + input :base_url, + title: 'CRD server base URL' + + fhir_resource_validator do + igs( + 'hl7.fhir.us.davinci-crd#2.2.1', + 'hl7.fhir.us.core#3.1.1', + 'hl7.fhir.us.core#6.1.0', + 'hl7.fhir.us.core#7.0.0' + ) + + # exclude_message do |message| + # # extension definition issue present in 2.0.1 but corrected in later versions + # message.message.match?(%r{The extension http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information is not allowed to be used at this point \(allowed = e:QuestionnaireResponse, e:Encounter, e:NutritionOrder, e:CommunicationRequest, e:DeviceRequest, e:ServiceRequest, e:MedicationRequest; this element is \[Appointment\]\)}) # rubocop:disable Layout/LineLength + # end + end + + US_CORE_7_METADATA_PATTERN = File.join( + Gem::Specification.find_by_name('us_core_test_kit').gem_dir, + 'lib', 'us_core_test_kit', 'generated', 'v7.0.0', '*', 'metadata.yml' + ) + CRD_V221_METADATA_PATTERN = File.join(__dir__, 'crd_metadata', '*.yml') + include(MockEHREndpoints.with do + Dir.glob([US_CORE_7_METADATA_PATTERN, CRD_V221_METADATA_PATTERN]) + end) + route :get, '/jwks.json', JWKSetEndpointHandler + resume_test_route :get, RESUME_PASS_PATH do |request| + request.query_parameters['token'] + end + resume_test_route :get, RESUME_FAIL_PATH, result: 'fail' do |request| + request.query_parameters['token'] + end + group from: :crd_v221_server_discovery_group + + group from: :crd_v221_server_demonstrate_hook_response + + group from: :crd_v221_server_hooks + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_configuration_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_configuration_test.rb new file mode 100644 index 00000000..1ee6eccc --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_configuration_test.rb @@ -0,0 +1,159 @@ +module DaVinciCRDTestKit + module V221 + class DiscoveryConfigurationTest < Inferno::Test + title 'Server makes configuration options available' + id :crd_v221_discovery_configuration + description %( + According to the spec: + + > CRD servers SHALL, at minimum, offer configuration options for each + type of card they support + + This test verifies that all primary hook services contain at least one + valid configuration option for `coverage-info`. Secondary hooks are not + expected to return cards, so they are ignored in this test. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@dev-4', + 'hl7.fhir.us.davinci-crd_2.2.1@dev-5', + 'hl7.fhir.us.davinci-crd_2.2.1@dev-7', + 'hl7.fhir.us.davinci-crd_2.2.1@dev-8' + + input :cds_services + input :crd_discovery_service_ignore_list, + optional: true + + def primary_hooks + ['appointment-book', 'order-sign', 'order-dispatch'] + end + + def primary_hook?(hook) + primary_hooks.include? hook + end + + def required_fields + ['code', 'type', 'name', 'description', 'default'] + end + + def verify_unique_values(hook, service) + unique_fields = ['code', 'name', 'description'] + + config_options = + service + .dig('extension', 'davinci-crd.configuration-options') + + return if config_options.blank? + + unique_fields.each do |unique_field| + value_counts = + config_options + .map { |config_option| config_option[unique_field] } + .tally + + duplicate_values = + value_counts + .select { |_value, count| count > 1 } + .keys + + next if duplicate_values.blank? + + duplicate_values_string = duplicate_values.map { |value| "\n- `#{value}`" }.join + + add_message( + 'error', + "Services for hook `#{hook}` contain duplicate values for `#{unique_field}`:" \ + "#{duplicate_values_string}" + ) + end + end + + def verify_required_fields(hook, service) + service.dig('extension', 'davinci-crd.configuration-options')&.each do |config_option| + required_fields.each do |field_name| + unless config_option.key?(field_name) + add_message( + 'error', + "Hook `#{hook}` service `#{service['id']}` configuration option `#{config_option['code']}` " \ + "does not contain `#{field_name}` field" + ) + next + end + + next if field_name == 'default' + + next if config_option[field_name].is_a? String + + type = config_option[field_name].class + add_message( + 'error', + "Expected hook `#{hook}` service `#{service['id']}` configuration option `#{config_option['code']}` " \ + "field `#{field_name}` to be a String, but found #{type}" + ) + end + end + end + + run do + ignore_list = crd_discovery_service_ignore_list.to_s.split(',').map(&:strip).reject(&:blank?) + services = + JSON.parse(cds_services)['services'] + .reject { |service| ignore_list.include? service['id'] } + + services_by_hook = services.group_by { |service| service['hook'] } + + services_by_hook.each do |hook, hook_services| + hook_services.each do |service| + verify_required_fields(hook, service) + verify_unique_values(hook, service) + end + end + + primary_hook_services = services_by_hook.slice(*primary_hooks).values.flatten + + assert messages.none? { |message| message[:type] == 'error' }, + 'Some services contain invalid configuration options.' + + omit_if primary_hook_services.blank?, 'No services for primary hooks found' + + services_without_configuration_options = + primary_hook_services.reject do |service| + service['extension'].present? && service['extension']['davinci-crd.configuration-options'].present? + end + + if services_without_configuration_options.present? + add_message( + 'error', + 'The following services do not contain any configuration options: ' \ + "#{services_without_configuration_options.map { |service| service['code'] }.join(', ')}" + ) + end + + primary_hook_services.each do |service| + coverage_info_config = + service.dig('extension', 'davinci-crd.configuration-options')&.find do |config_option| + config_option['code'] == 'coverage-info' + end + + if coverage_info_config.present? + if coverage_info_config['type'] != 'boolean' + add_message( + 'error', + "Service `#{service['id']}` `coverage-info` configuration option is not of type boolean" + ) + end + + next + end + + add_message( + 'error', + "Service `#{service['id']}` does not contain a `coverage-info` configuration option" + ) + end + + assert messages.none? { |message| message[:type] == 'error' }, + 'Not all primary hook services contain valid configuration options.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb new file mode 100644 index 00000000..f9e90f0b --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_endpoint_test.rb @@ -0,0 +1,90 @@ +module DaVinciCRDTestKit + module V221 + class DiscoveryEndpointTest < Inferno::Test + title 'Server returns a discovery response' + id :crd_v221_discovery_endpoint_test + description %( + A CDS Service provider must expose its discovery endpoint at `{baseURL}/cds-services` + as specified in the [CDS Hooks Specification](https://cds-hooks.hl7.org/2.0/#discovery). + + This test checks that the server responds to a GET request at the following endpoint: + + `GET {baseURL}/cds-services` + + It does this by checking that the server responds with an HTTP OK 200 status code + and that the body of the response is a valid JSON object. This test does not + inspect the structure and content of the response body to see if it contains the required information. + It only checks to see if the RESTful interaction is supported and returns a valid JSON object. + ) + + input_order :base_url, :authentication_required, :encryption_method, :jwks_kid + input :base_url + input :authentication_required, + title: 'Discovery endpoint requires authentication?', + type: 'radio', + default: 'no', + options: { + list_options: [ + { + label: 'No', + value: 'no' + }, + { + label: 'Yes', + value: 'yes' + } + ] + } + input :encryption_method, + title: 'JWT Signing Algorithm', + description: <<~DESCRIPTION, + CDS Hooks recommends ES384 and RS384 for JWT signature verification. + Select which method to use. + DESCRIPTION + type: 'radio', + default: 'ES384', + options: { + list_options: [ + { + label: 'ES384', + value: 'ES384' + }, + { + label: 'RS384', + value: 'RS384' + } + ] + } + input :jwks_kid, + title: 'CDS Services JWKS kid', + description: <<~DESCRIPTION, + The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint + requiring authentication. + Defaults to the first JWK in the list if no kid is supplied. + DESCRIPTION + optional: true + output :cds_services + + run do + discovery_url = "#{base_url.chomp('/')}/cds-services" + headers = { 'Accept' => 'application/json' } + + if authentication_required == 'yes' + token = JwtHelper.build( + aud: discovery_url, + iss: inferno_base_url, + jku: "#{inferno_base_url}/jwks.json", + kid: jwks_kid, + encryption_method: + ) + headers['Authorization'] = "Bearer #{token}" + end + get(discovery_url, headers:, tags: [DISCOVERY_TAG]) + assert_response_status(200) + assert_valid_json(request.response_body) + + output cds_services: request.response_body + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb new file mode 100644 index 00000000..3efe246a --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_prefetch_support_test.rb @@ -0,0 +1,43 @@ +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V221 + class DiscoveryPrefetchSupportTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Server demonstrates ability to request the CDS Client perform prefetch queries' + id :crd_v221_discovery_prefetch_support + description %( + This test expects the server to demonstrate support for prefetch queries + by providing a prefetch query in at least one of the advertised service + in the discovery response. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-24' + + input :cds_services + input :crd_discovery_service_ignore_list, + optional: true + + run do + object = parse_json(cds_services) + assert object['services'], 'Discovery response did not contain `services`' + + services = object['services'] + assert services.is_a?(Array), 'Services field of the CDS Discovery response object is not an array.' + + ignored_service_ids = crd_discovery_service_ignore_list.to_s.split(',').map(&:strip).reject(&:blank?) + services + .select { |service| ignored_service_ids.include?(service['id']) } + .each do |service| + info "Ignoring service `#{service['id']}` because it is in the ignore list." + end + services_for_crd_validation = services.reject { |service| ignored_service_ids.include?(service['id']) } + + prefetch_supported = services_for_crd_validation.any? { |service| service['prefetch'].present? } + + skip_if !prefetch_supported, 'No CRD services advertised prefetch support' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb new file mode 100644 index 00000000..9c107f26 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/discovery/discovery_services_validation_test.rb @@ -0,0 +1,121 @@ +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V221 + class DiscoveryServicesValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Discovery response contains valid services' + id :crd_v221_discovery_services_validation + description %( + As per the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#response), + the response to the discovery endpoint SHALL be an object containing + a list of CDS services. If your CDS server hosts no CDS services, + the discovery endpoint should return a 200 HTTP response with + an empty array of services. + + Each CDS service must contain the following required fields: + `hook`, `description`, and `id`. + + Additionally, the [CRD + Spec](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/deviations.html#crd-version-declaration) + states that "CRD servers SHALL declare at least one supported CRD + version for each supported hook" using the `davinci-crd.version` + extension. + + This test checks for the presence of the required fields and + validates that they are of the correct type. + + CDS services provided by the server to support use cases outside the + scope of the CRD specification can be provided in an ignore list input to + opt-out of CRD validation. + + The test will be skipped if the server hosts no CRD CDS services. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@dev-1' + + input :cds_services + input :crd_discovery_service_ignore_list, + title: 'Service ID Ignore List', + description: %( + In the case that CDS services advertised on this server support + use cases outside the scope of the CRD specification, provide a + comma-separated list of service IDs to opt-out of CRD validation. + Ignored services will not be stored for use in later tests. If + blank, all services are checked and saved. + ), + optional: true + output :appointment_book_service_ids, :encounter_start_service_ids, :encounter_discharge_service_ids, + :order_dispatch_service_ids, :order_select_service_ids, :order_sign_service_ids + + EXTENSION_KEY = 'davinci-crd.version'.freeze + + def required_fields + { + 'hook' => String, + 'description' => String, + 'id' => String, + 'extension' => Hash + } + end + + run do + object = parse_json(cds_services) + assert object['services'], 'Discovery response did not contain `services`' + + services = object['services'] + assert services.is_a?(Array), 'Services field of the CDS Discovery response object is not an array.' + + ignored_service_ids = crd_discovery_service_ignore_list.to_s.split(',').map(&:strip).reject(&:blank?) + services + .select { |service| ignored_service_ids.include?(service['id']) } + .each do |service| + info "Ignoring service `#{service['id']}` because it is in the ignore list." + end + services_for_crd_validation = services.reject { |service| ignored_service_ids.include?(service['id']) } + + service_hooks_to_ids = services_for_crd_validation.each_with_object({}) do |service, hash| + hash[service['hook']] ||= [] + hash[service['hook']] << service['id'] if service['id'] + end + + output appointment_book_service_ids: service_hooks_to_ids['appointment-book']&.join(', '), + encounter_start_service_ids: service_hooks_to_ids['encounter-start']&.join(', '), + encounter_discharge_service_ids: service_hooks_to_ids['encounter-discharge']&.join(', '), + order_dispatch_service_ids: service_hooks_to_ids['order-dispatch']&.join(', '), + order_select_service_ids: service_hooks_to_ids['order-select']&.join(', '), + order_sign_service_ids: service_hooks_to_ids['order-sign']&.join(', ') + + skip_if services.empty?, 'Server hosts no CDS Services.' + skip_if services_for_crd_validation.empty?, 'Ignore list excludes all CDS Services from validation.' + + services_for_crd_validation.each do |service| + required_fields.each do |field, type| + assert(service[field], "Service `#{service['id']}` did not contain required field: `#{field}`") + assert(service[field].is_a?(type), "Service `#{service['id']}`: field `#{field}` is not of type #{type}") + end + + assert service['extension'].key?(EXTENSION_KEY), + "Service `#{service['id']}`: does not contain a `#{EXTENSION_KEY}` extension" + assert service['extension'][EXTENSION_KEY].is_a?(Array), + "Service `#{service['id']}`: `#{EXTENSION_KEY}` extension is not of type Array" + assert service['extension'][EXTENSION_KEY].present?, + "Service `#{service['id']}`: `#{EXTENSION_KEY}` extension is empty" + non_string_values = service['extension'][EXTENSION_KEY].reject { |value| value.is_a? String } + assert non_string_values.blank?, + "Service `#{service['id']}`: `#{EXTENSION_KEY}` extension contains non-string values: " \ + "#{non_string_values.join(', ')}" + + invalid_versions = + service['extension'][EXTENSION_KEY] # rubocop:disable Style/SelectByRegexp + .reject { |version| version.match?(/\A[1-9]\d*\.\d+\Z/) } + + assert invalid_versions.blank?, + "Service `#{service['id']}`: `#{EXTENSION_KEY}` extension contains invalid " \ + "version strings: #{invalid_versions.join(', ')}" + end + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb new file mode 100644 index 00000000..0fc4935e --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/interaction/server_invoke_hook_test.rb @@ -0,0 +1,15 @@ +require_relative '../server_urls' +require_relative '../../server_abstract_invoke_hook_test' + +module DaVinciCRDTestKit + module V221 + class ServerInvokeHookTest < ServerAbstractInvokeHookTest + include ServerURLs + id :crd_v221_server_invoke_hook_test + + def coverage_info_configuration_supported? + true + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb new file mode 100644 index 00000000..2025239e --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_must_support_test.rb @@ -0,0 +1,71 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../../cross_suite/tags' + +module DaVinciCRDTestKit + module V221 + class CoverageInformationMustSupportTest < Inferno::Test + include DaVinciCRDTestKit::CardsIdentification + + title 'Coverage Information Must Support' + id :crd_v221_coverage_information_must_support + description <<~DESCRIPTION + Checks that the server demonstrated must support coverage for the [Coverage Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) + extension across the hook responses returned during this test session. + + At least one hook invocation must have returned a Coverage Information system action. + Additionally, the set of [coverage-information extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html) + instances returned across those actions must collectively demonstrate all must support elements. + + If this test fails, re-run the hook tests using request payloads that cause the server to return + Coverage Information system actions that cover the full set of must support elements. + DESCRIPTION + + ALL_HOOKS = [ + DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG, + DaVinciCRDTestKit::ENCOUNTER_START_TAG, + DaVinciCRDTestKit::ENCOUNTER_DISCHARGE_TAG, + DaVinciCRDTestKit::ORDER_DISPATCH_TAG, + DaVinciCRDTestKit::ORDER_SELECT_TAG, + DaVinciCRDTestKit::ORDER_SIGN_TAG + ].freeze + + def metadata + @metadata ||= YAML.load_file( + File.join(__dir__, '..', '..', '..', 'cross_suite', 'coverage-information_stu221_metadata.yml') + ) + end + + class MustSupportMetadataHolder + attr_accessor :metadata + + def initialize(metadata) + self.metadata = metadata + end + + def must_supports + @must_supports ||= { + extensions: metadata[:must_supports][:extensions] || [], + slices: metadata[:must_supports][:slices] || [], + elements: metadata[:must_supports][:elements] || [] + } + end + end + + run do + ALL_HOOKS.each { |hook_tag| load_tagged_requests(hook_tag) } + sorted_cards = sorted_cards_from_requests(requests) + coverage_info_system_actions = sorted_cards['actions'][COVERAGE_INFORMATION_RESPONSE_TYPE] + + assert coverage_info_system_actions.present?, + 'Coverage Information system action support not demonstrated.' + + coverage_information_extensions = extract_coverage_information_extensions(sorted_cards) + assert_must_support_elements_present( + coverage_information_extensions, + COVERAGE_INFO_EXT_URL, + metadata: MustSupportMetadataHolder.new(metadata) + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb new file mode 100644 index 00000000..5fc35d99 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/must_support/coverage_information_system_action_across_hooks_validation_test.rb @@ -0,0 +1,36 @@ +require_relative '../../server_test_helper' + +module DaVinciCRDTestKit + module V221 + class CoverageInformationSystemActionAcrossHooksValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Valid Coverage Information system actions received across all hooks' + id :crd_v221_coverage_info_system_action_across_hooks_validation + description %( + This test verifies the presence of valid [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + system action returned by CRD services across all hooks invoked. It verifies the following for each action: + - The action type is `update`. + - The resource within the action conforms its respective FHIR profile. + + Additionally, the test examines the `coverage-info` extensions within the resource to ensure that: + - Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + - Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + + The test will be skipped if no valid Coverage Information system actions are returned across all hooks. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-14' + + run do + verify_at_least_one_test_passes( + self.class.parent.parent.groups, + 'crd_v221_coverage_info_system_action_validation', + 'None of the hooks invoked returned valid Coverage Info system actions.' + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/must_support/supported_us_core_versions_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/must_support/supported_us_core_versions_test.rb new file mode 100644 index 00000000..b97baf96 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/must_support/supported_us_core_versions_test.rb @@ -0,0 +1,181 @@ +require 'yaml' +require_relative '../../server_test_helper' +require_relative '../../../cross_suite/tags' + +module DaVinciCRDTestKit + module V221 + class SupportedUSCoreVersionsTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + + title 'Provided resources demonstrate support for all required US Core versions' + id :crd_v221_supported_us_core_versions + description <<~DESCRIPTION + Checks whether the embedded FHIR resources provided across hook requests during this test + session demonstrate support for all US Core versions required by the CRD implementation + guide: 3.1.1, 6.1.0, and 7.0.0. + + This test does not verify exhaustive support for each US Core version. It inspects FHIR + resources included in successful hook request `context` and `prefetch` data and verifies + that at least one provided resource validates against a US Core profile for each required + version. + DESCRIPTION + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@conf-2' + + US_CORE_VERSIONS = { + '3.1.1' => 'v3.1.1', + '6.1.0' => 'v6.1.0', + '7.0.0' => 'v7.0.0' + }.freeze + + GENERATED_METADATA_DIR = File.join( + Gem::Specification.find_by_name('us_core_test_kit').gem_dir, + 'lib', 'us_core_test_kit', 'generated' + ).freeze + + run do + ALL_HOOK_TAGS.each { |hook_tag| load_tagged_requests(hook_tag) } + skip_if requests.empty?, 'No requests were made in a previous test as expected.' + + successful_requests = requests.select { |request| request.status == 200 } + skip_if successful_requests.empty?, 'All service requests were unsuccessful.' + + embedded_resources = successful_requests.each.flat_map { |request| resources_from_request(request) } + + skip_if embedded_resources.blank?, + 'No embedded FHIR resources were found in successful hook requests.' + + version_matches = determine_version_matches(embedded_resources) + missing_versions = US_CORE_VERSIONS.keys - version_matches.keys + + missing_versions.each do |version| + add_message('error', "Support for US Core #{version} was not demonstrated.") + end + + assert missing_versions.empty?, + 'Support for one or more required US Core versions was not demonstrated.' + end + + private + + def resources_from_request(request) + request_body = JSON.parse(request.request_body) + return [] unless request_body.is_a?(Hash) + + context_resources(request_body) + prefetch_resources(request_body) + rescue JSON::ParserError + [] + end + + def context_resources(request_body) + context = request_body['context'] + return [] unless context.is_a?(Hash) + + bundle_entry_resources(parse_fhir_data(context['appointments'])) + + bundle_entry_resources(parse_fhir_data(context['draftOrders'])) + + resources_from_value(context['fulfillmentTasks']) + end + + def prefetch_resources(request_body) + prefetch = request_body['prefetch'] + return [] unless prefetch.is_a?(Hash) + + prefetch.values.flat_map { |value| resources_from_value(value) } + end + + def resources_from_value(value) + case value + when Array + value.flat_map { |entry| resources_from_value(entry) } + when Hash + resources_from_hash(value) + else + [] + end + end + + def resources_from_hash(contents) + return [] unless contents['resourceType'].present? + + fhir_data = parse_fhir_data(contents) + return [] unless fhir_data.present? + + return bundle_entry_resources(fhir_data) if fhir_data.is_a?(FHIR::Bundle) + + [fhir_data] + end + + def bundle_entry_resources(bundle) + return [] unless bundle.is_a?(FHIR::Bundle) + + bundle.entry.filter_map do |entry| + next unless entry&.resource.present? + + entry.resource + end + end + + def parse_fhir_data(contents) + return unless contents.present? + + FHIR.from_contents(contents.to_json) + rescue StandardError + nil + end + + def determine_version_matches(embedded_resources) + embedded_resources.each_with_object({}) do |resource, matches| + US_CORE_VERSIONS.each_key do |version| + next if matches.key?(version) + + matching_profile = us_core_profiles_by_version + .dig(version, resource.resourceType) + &.find { |profile_url| resource_valid_for_profile?(resource, profile_url) } + + next unless matching_profile.present? + + matches[version] = matching_profile + end + end + end + + def resource_valid_for_profile?(resource, profile_url) + validation_details = [] + resource_is_valid?( + resource:, + profile_url:, + validator_response_details: validation_details, + add_messages_to_runnable: false + ) + end + + def us_core_profiles_by_version + @us_core_profiles_by_version ||= US_CORE_VERSIONS.transform_values do |directory| + version_profile_metadata(directory).each_with_object( + Hash.new { |hash, key| hash[key] = [] } + ) do |metadata, profiles_by_resource| + profile_identifier = versioned_profile_identifier(metadata) + next unless profile_identifier.present? + + profiles_by_resource[metadata[:resource]] << profile_identifier + end.transform_values(&:uniq) + end + end + + def version_profile_metadata(directory) + Dir.glob(File.join(GENERATED_METADATA_DIR, directory, '*', 'metadata.yml')).map do |path| + YAML.load_file(path, aliases: true) + end + end + + def versioned_profile_identifier(metadata) + resource_type = metadata[:resource] + profile_url = metadata[:profile_url] + profile_version = metadata[:profile_version] + return if resource_type.blank? || profile_url.blank? || profile_version.blank? + + "#{profile_url}|#{profile_version}" + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb new file mode 100644 index 00000000..c3b10375 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_appointment_book_group.rb @@ -0,0 +1,213 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/coverage_information_system_action_received_test' +require_relative 'verify_response/coverage_information_system_action_validation_test' +require_relative 'verify_response/coverage_info_configuration_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' +require_relative 'verify_response/all_responses_include_coverage_information_test' +require_relative 'verify_response/unknown_configuration_test' +require_relative 'verify_response/unknown_context_test' +require_relative 'verify_response/unknown_cds_hooks_elements_test' + +module DaVinciCRDTestKit + module V221 + class ServerAppointmentBookGroup < Inferno::TestGroup + title 'appointment-book' + id :crd_v221_server_appointment_book + description %( + This group of tests invokes the appointment-book hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + and the [CDS Hooks specification section on appointment-book context](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + The [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + states that "servers SHALL, at minimum, support returning and processing the Coverage Information + system action for all invocations of this hook." + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', + # 'hl7.fhir.us.davinci-crd_2.0.1@170', 'hl7.fhir.us.davinci-crd_2.0.1@184' + + config options: { hook_name: APPOINTMENT_BOOK_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v221_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :appointment_book_service_ids, + title: 'Service id for the service that implements the `appointment-book` hook' + }, + service_request_bodies: { + name: :appointment_book_request_bodies, + title: 'Request body or bodies for invoking the `appointment-book` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v221_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :appointment_book_contexts + } + } + } + test from: :crd_v221_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :appointment_book_contexts + } + } + } + test from: :crd_v221_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v221_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :appointment_book_valid_cards + }, + valid_system_actions: { + name: :appointment_book_valid_system_actions + } + } + } + test from: :crd_v221_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :appointment_book_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :appointment_book_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :appointment_book_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :appointment_book_valid_cards_with_links + } + } + } + test from: :crd_v221_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :appointment_book_valid_cards_with_links + } + } + } + test from: :crd_v221_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :appointment_book_valid_cards + } + } + } + test from: :crd_v221_coverage_info_system_action_received, + config: { + inputs: { + valid_system_actions: { + name: :appointment_book_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :appointment_book_coverage_info + } + } + }, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@resp-26' + ] + test from: :crd_v221_coverage_info_system_action_validation, + config: { + inputs: { + coverage_info: { + name: :appointment_book_coverage_info + } + } + }, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@resp-25' + ] + test from: :crd_v221_all_responses_include_coverage_information, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@hook-16', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-28', + 'hl7.fhir.us.davinci-crd_2.2.1@hook-26', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-29' + ] + test from: :crd_v221_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :appointment_book_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :appointment_book_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :appointment_book_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :appointment_book_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_coverage_info_configuration + test from: :crd_v221_unknown_configuration + test from: :crd_v221_unknown_context + test from: :crd_v221_unknown_cds_hooks_elements + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb new file mode 100644 index 00000000..36f5cb9d --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_demonstrate_hook_response_group.rb @@ -0,0 +1,93 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' + +module DaVinciCRDTestKit + module V221 + class ServerDemonstrateHookResponseGroup < Inferno::TestGroup + title 'Demonstrate A Hook Response' + id :crd_v221_server_demonstrate_hook_response + description %( + This group of tests allows the system to demonstrate its ability to respond to a CRD Hook invocation + and return a valid response. Inferno will use the provided request body and will either use the provided service + id or infer one from the hook indicated in the request and the server's discovery response. + It ensures that the user-provided request and the server's response are both + valid as per the requirements described in the [CRD IG section](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html) + and the [CDS Hooks](https://cds-hooks.hl7.org/) hook specification for the corresponding hook. + ) + + config options: { hook_name: ANY_HOOK_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v221_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :any_hook_service_ids, + title: 'Service id to use for the "Demonstrate a Hook Response" test', + description: %( + If blank, Inferno will attempt to infer the service id to use by finding a service entry in the + Discovery response for the hook indicated in the provided request body. If it cannot be inferred, + the tests will be skipped. + ) + }, + service_request_bodies: { + name: :any_hook_request_body, + title: 'Request body to use for the "Demonstrate a Hook Response" test', + description: %( + Provide a single JSON request body to submit for the hook invocation. The type of hook invoked + will be inferred based on the `hook` element in the request. + ) + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v221_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :any_hook_contexts + } + } + } + test from: :crd_v221_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :any_hook_contexts + }, + request_body: { + name: :any_hook_request_body + } + } + } + end + + group do + title 'Verify Responses' + + test from: :crd_v221_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :any_hook_valid_cards + }, + valid_system_actions: { + name: :any_hook_valid_system_actions + } + } + } + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb new file mode 100644 index 00000000..53fdaac7 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_discovery_group.rb @@ -0,0 +1,69 @@ +require 'tls_test_kit' +require_relative 'discovery/discovery_configuration_test' +require_relative 'discovery/discovery_endpoint_test' +require_relative 'discovery/discovery_services_validation_test' +require_relative 'discovery/discovery_prefetch_support_test' + +module DaVinciCRDTestKit + module V221 + class ServerDiscoveryGroup < Inferno::TestGroup + title 'Discovery' + id :crd_v221_server_discovery_group + description %( + # Background + + The #{title} Group checks for a CDS Service's Discovery endpoint as described by the + [CDS Hooks Specification](https://cds-hooks.hl7.org/2.0/#discovery). + A CDS Service is discoverable via a stable endpoint by CDS Clients. The Discovery endpoint + includes information such as a description of the CDS Service, when it should be invoked, + and any data that is requested to be prefetched. + The Discovery endpoint SHALL always be available at `{baseUrl}/cds-services`. + + # Test Methodology + + This test sequence accesses the CRD server Discovery endpoint at /cds-services using a GET request. + It parses the response and verifies that: + - The Discovery endpoint is TLS secured. + - The Discovery endpoint is available at `{baseURL}/cds-services`. + - Each CDS Service in the response contains the required fields as specified in the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#response). + + It collects the following information that is saved in the testing session for use by later tests: + - List of supported CDS Services/Hooks + - List of service IDs for each supported Hook. + ) + + run_as_group + + test from: :tls_version_test do + title 'CRD Server is secured by transport layer security' + description <<~DESCRIPTION + Under [Privacy, Safety, and + Security](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/security.html), + the CRD Implementation Guide imposes the following rule about TLS: + + As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety), + communications between CRD Clients and CRD Servers SHALL + use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and + CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based + on HRex rules for PHI exchange. + + This test verifies that the CRD server is using TLS 1.2 or higher. + DESCRIPTION + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@sec-2' + + id :crd_v221_server_tls_version_stu2 + + config( + options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION }, + inputs: { url: { name: :base_url } } + ) + end + + test from: :crd_v221_discovery_endpoint_test + test from: :crd_v221_discovery_services_validation + test from: :crd_v221_discovery_configuration + test from: :crd_v221_discovery_prefetch_support + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb new file mode 100644 index 00000000..0f42f785 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_discharge_group.rb @@ -0,0 +1,194 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' +require_relative 'verify_response/coverage_info_configuration_test' +require_relative 'verify_response/unknown_configuration_test' +require_relative 'verify_response/unknown_context_test' +require_relative 'verify_response/unknown_cds_hooks_elements_test' + +module DaVinciCRDTestKit + module V221 + class ServerEncounterDischargeGroup < Inferno::TestGroup + title 'encounter-discharge' + id :crd_v221_server_encounter_discharge + description %( + This group of tests invokes the encounter-discharge hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + and the [CDS Hooks specification section on encounter-discharge context](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@196' + + config options: { hook_name: ENCOUNTER_DISCHARGE_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v221_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :encounter_discharge_service_ids, + title: 'Service id for the service that implements the `encounter-discharge` hook' + }, + service_request_bodies: { + name: :encounter_discharge_request_bodies, + title: 'Request body or bodies for invoking the `encounter-discharge` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v221_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :encounter_discharge_contexts + } + } + } + test from: :crd_v221_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :encounter_discharge_contexts + } + } + } + test from: :crd_v221_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v221_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :encounter_discharge_valid_cards + }, + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + } + } + } + test from: :crd_v221_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :encounter_discharge_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :encounter_discharge_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :encounter_discharge_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_discharge_valid_cards_with_links + } + } + } + test from: :crd_v221_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_discharge_valid_cards_with_links + } + } + } + test from: :crd_v221_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :encounter_discharge_valid_cards + } + } + } + test from: :crd_v221_coverage_info_system_action_received, + optional: true, + config: { + inputs: { + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :encounter_discharge_coverage_info + } + } + } + test from: :crd_v221_coverage_info_system_action_validation, + optional: true, + config: { + inputs: { + coverage_info: { + name: :encounter_discharge_coverage_info + } + } + } + test from: :crd_v221_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_discharge_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_discharge_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_discharge_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_coverage_info_configuration + test from: :crd_v221_unknown_configuration + test from: :crd_v221_unknown_context + test from: :crd_v221_unknown_cds_hooks_elements + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb new file mode 100644 index 00000000..05a009a2 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_encounter_start_group.rb @@ -0,0 +1,194 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' +require_relative 'verify_response/coverage_info_configuration_test' +require_relative 'verify_response/unknown_configuration_test' +require_relative 'verify_response/unknown_context_test' +require_relative 'verify_response/unknown_cds_hooks_elements_test' + +module DaVinciCRDTestKit + module V221 + class ServerEncounterStartGroup < Inferno::TestGroup + title 'encounter-start' + id :crd_v221_server_encounter_start + description %( + This group of tests invokes the encounter-start hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on encounter-start hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + and the [CDS Hooks specification section on encounter-start context](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on encounter-start hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@185' + + config options: { hook_name: ENCOUNTER_START_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v221_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :encounter_start_service_ids, + title: 'Service id for the service that implements the `encounter-start` hook' + }, + service_request_bodies: { + name: :encounter_start_request_bodies, + title: 'Request body or bodies for invoking the `encounter-start` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v221_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :encounter_start_contexts + } + } + } + test from: :crd_v221_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :encounter_start_contexts + } + } + } + test from: :crd_v221_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v221_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :encounter_start_valid_cards + }, + valid_system_actions: { + name: :encounter_start_valid_system_actions + } + } + } + test from: :crd_v221_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :encounter_start_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :encounter_start_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :encounter_start_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_start_valid_cards_with_links + } + } + } + test from: :crd_v221_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :encounter_start_valid_cards_with_links + } + } + } + test from: :crd_v221_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :encounter_start_valid_cards + } + } + } + test from: :crd_v221_coverage_info_system_action_received, + optional: true, + config: { + inputs: { + valid_system_actions: { + name: :encounter_start_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :encounter_start_coverage_info + } + } + } + test from: :crd_v221_coverage_info_system_action_validation, + optional: true, + config: { + inputs: { + coverage_info: { + name: :encounter_start_coverage_info + } + } + } + test from: :crd_v221_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_start_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_start_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :encounter_start_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :encounter_start_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_coverage_info_configuration + test from: :crd_v221_unknown_configuration + test from: :crd_v221_unknown_context + test from: :crd_v221_unknown_cds_hooks_elements + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb new file mode 100644 index 00000000..5418b801 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_hooks_group.rb @@ -0,0 +1,73 @@ +require_relative 'server_appointment_book_group' +require_relative 'server_encounter_start_group' +require_relative 'server_encounter_discharge_group' +require_relative 'server_order_select_group' +require_relative 'server_order_dispatch_group' +require_relative 'server_order_sign_group' +require_relative 'server_required_card_response_validation_group' + +module DaVinciCRDTestKit + module V221 + class ServerHooksGroup < Inferno::TestGroup + title 'Hook Tests' + id :crd_v221_server_hooks + description %( + # Background + + The #{title} Group verifies that a [CRD Server](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-server.html) + supports at least one of the hooks supported by the [CRD IG](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks). + The supported hooks include: + - [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) + - [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) + - [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) + - [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + - [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + - [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + + The [CRD STU2 IG section on Supported Hooks](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks) + states that "CRD Servers conforming to this implementation guide + SHALL provide a service for all hooks and order resource types required of + CRD clients by this implementation guide unless the server has determined that + the hook will not be reasonably useful in determining coverage or documentation + expectations for the types of coverage provided." + + # Test Methodology + + In these tests, Inferno acts as a [CRD Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html) + that initiates CDS Hooks calls. This test sequence is broken up into groups, + each group corresponding to a supported hook and defining a set of tests verifying + the ability of the server to respond to the given hook invocation. An + additional group checks that the Coverage Information response type is + supported for at least one hook. + + Each hook group test verifies that: + - The hook can be invoked. + - The user-provided request payload contains the required fields as specified + in the [CDS Hooks section on HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1). + - The user-provided request payload contains the optional fields as specified + in the [CDS Hooks section on HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1) - + optional. + - Each card and system action returned by the server is valid as described in the + [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + - Each [CRD response type](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types) + returned is valid - optional for some response types. See the individual test groups for more details. + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@4', 'hl7.fhir.us.davinci-crd_2.0.1@152', + # 'hl7.fhir.us.davinci-crd_2.0.1@153' + + group from: :crd_v221_server_appointment_book, + optional: true + group from: :crd_v221_server_encounter_start, + optional: true + group from: :crd_v221_server_encounter_discharge, + optional: true + group from: :crd_v221_server_order_select, + optional: true + group from: :crd_v221_server_order_dispatch, + optional: true + group from: :crd_v221_server_order_sign, + optional: true + group from: :crd_v221_server_required_card_response_validation + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb new file mode 100644 index 00000000..07297484 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_order_dispatch_group.rb @@ -0,0 +1,214 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/coverage_information_system_action_received_test' +require_relative 'verify_response/coverage_information_system_action_validation_test' +require_relative 'verify_response/coverage_info_configuration_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' +require_relative 'verify_response/order_dispatch_coverage_information_test' +require_relative 'verify_response/unknown_configuration_test' +require_relative 'verify_response/unknown_context_test' +require_relative 'verify_response/unknown_cds_hooks_elements_test' + +module DaVinciCRDTestKit + module V221 + class ServerOrderDispatchGroup < Inferno::TestGroup + title 'order-dispatch' + id :crd_v221_server_order_dispatch + description %( + This group of tests invokes the order-dispatch hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + and the [CDS Hooks specification section on order-dispatch context](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + The [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) + states that "servers SHALL, at minimum, support returning and processing the Coverage Information + system action for all invocations of this hook." + + This group includes tests to validate the following CRD response types: + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', + # 'hl7.fhir.us.davinci-crd_2.0.1@204', 'hl7.fhir.us.davinci-crd_2.0.1@207' + + config options: { hook_name: ORDER_DISPATCH_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v221_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :order_dispatch_service_ids, + title: 'Service id for the service that implements the `order-dispatch` hook' + }, + service_request_bodies: { + name: :order_dispatch_request_bodies, + title: 'Request body or bodies for invoking the `order-dispatch` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v221_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :order_dispatch_contexts + } + } + } + test from: :crd_v221_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :order_dispatch_contexts + } + } + } + test from: :crd_v221_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v221_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :order_dispatch_valid_cards + }, + valid_system_actions: { + name: :order_dispatch_valid_system_actions + } + } + } + test from: :crd_v221_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :order_dispatch_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :order_dispatch_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :order_dispatch_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_dispatch_valid_cards_with_links + } + } + } + test from: :crd_v221_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_dispatch_valid_cards_with_links + } + } + } + test from: :crd_v221_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :order_dispatch_valid_cards + } + } + } + test from: :crd_v221_coverage_info_system_action_received, + config: { + inputs: { + valid_system_actions: { + name: :order_dispatch_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :order_dispatch_coverage_info + } + } + }, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@resp-26' + ] + test from: :crd_v221_coverage_info_system_action_validation, + config: { + inputs: { + coverage_info: { + name: :order_dispatch_coverage_info + } + } + }, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@resp-25' + ] + test from: :crd_v221_order_dispatch_coverage_information, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@hook-16', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-28', + 'hl7.fhir.us.davinci-crd_2.2.1@hook-33', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-29' + ] + + test from: :crd_v221_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_dispatch_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_dispatch_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_dispatch_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_dispatch_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_coverage_info_configuration + test from: :crd_v221_unknown_configuration + test from: :crd_v221_unknown_context + test from: :crd_v221_unknown_cds_hooks_elements + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb new file mode 100644 index 00000000..f6cde8ee --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_order_select_group.rb @@ -0,0 +1,219 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/propose_alternate_request_card_validation_test' +require_relative 'verify_response/additional_orders_validation_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' +require_relative 'verify_response/coverage_info_configuration_test' +require_relative 'verify_response/unknown_configuration_test' +require_relative 'verify_response/unknown_context_test' +require_relative 'verify_response/unknown_cds_hooks_elements_test' + +module DaVinciCRDTestKit + module V221 + class ServerOrderSelectGroup < Inferno::TestGroup + title 'order-select' + id :crd_v221_server_order_select + description %( + This group of tests invokes the order-select hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + and the [CDS Hooks specification section on order-select context](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + This group includes tests to validate the following CRD response types: + - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\ + - optional + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@208' + + config options: { hook_name: ORDER_SELECT_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v221_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :order_select_service_ids, + title: 'Service id for the service that implements the `order-select` hook' + }, + service_request_bodies: { + name: :order_select_request_bodies, + title: 'Request body or bodies for invoking the `order-select` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v221_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :order_select_contexts + } + } + } + test from: :crd_v221_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :order_select_contexts + } + } + } + test from: :crd_v221_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v221_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :order_select_valid_cards + }, + valid_system_actions: { + name: :order_select_valid_system_actions + } + } + } + test from: :crd_v221_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :order_select_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :order_select_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_select_valid_cards_with_links + } + } + } + test from: :crd_v221_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_select_valid_cards_with_links + } + } + } + test from: :crd_v221_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :order_select_valid_cards + } + } + } + test from: :crd_v221_coverage_info_system_action_received, + optional: true, + config: { + inputs: { + valid_system_actions: { + name: :order_select_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :order_select_coverage_info + } + } + } + test from: :crd_v221_coverage_info_system_action_validation, + optional: true, + config: { + inputs: { + coverage_info: { + name: :order_select_coverage_info + } + } + } + test from: :crd_v221_propose_alternate_request_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + }, + contexts: { + name: :order_select_contexts + } + } + } + test from: :crd_v221_additional_orders_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_select_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_select_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_select_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_coverage_info_configuration + test from: :crd_v221_unknown_configuration + test from: :crd_v221_unknown_context + test from: :crd_v221_unknown_cds_hooks_elements + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb new file mode 100644 index 00000000..cf0bfa20 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_order_sign_group.rb @@ -0,0 +1,241 @@ +require_relative '../../cross_suite/tags' +require_relative 'interaction/server_invoke_hook_test' +require_relative 'verify_request/service_request_required_fields_validation_test' +require_relative 'verify_request/service_request_optional_fields_validation_test' +require_relative 'verify_request/service_request_context_validation_test' +require_relative 'verify_response/service_response_validation_test' +require_relative 'verify_response/card_optional_fields_validation_test' +require_relative 'verify_response/external_reference_card_validation_test' +require_relative 'verify_response/launch_smart_app_card_validation_test' +require_relative 'verify_response/instructions_card_received_test' +require_relative 'verify_response/coverage_information_system_action_received_test' +require_relative 'verify_response/coverage_information_system_action_validation_test' +require_relative 'verify_response/coverage_info_configuration_test' +require_relative 'verify_response/propose_alternate_request_card_validation_test' +require_relative 'verify_response/additional_orders_validation_test' +require_relative 'verify_response/form_completion_response_validation_test' +require_relative 'verify_response/create_or_update_coverage_info_response_validation_test' +require_relative 'verify_response/all_responses_include_coverage_information_test' +require_relative 'verify_response/unknown_configuration_test' +require_relative 'verify_response/unknown_context_test' +require_relative 'verify_response/unknown_cds_hooks_elements_test' + +module DaVinciCRDTestKit + module V221 + class ServerOrderSignGroup < Inferno::TestGroup + title 'order-sign' + id :crd_v221_server_order_sign + description %( + This group of tests invokes the order-sign hook and ensures that + the user-provided requests are valid as per the requirements described + in the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + and the [CDS Hooks specification section on order-sign context](https://cds-hooks.hl7.org/hooks/order-sign/2023SepSTU1Ballot/order-sign/). + It also ensures that the contents of the server's response are valid as per the requirements described in + the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). + + The [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) + states that "servers SHALL, at minimum, support returning and processing the Coverage Information + system action for all invocations of this hook." + + This group includes tests to validate the following CRD response types: + - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\ + - optional + - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ + - optional + - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional + - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional + - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - + optional + - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - + optional + - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - + optional + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', + # 'hl7.fhir.us.davinci-crd_2.0.1@217', 'hl7.fhir.us.davinci-crd_2.0.1@226' + + config options: { hook_name: ORDER_SIGN_TAG } + run_as_group + + group do + title 'Make Hook Requests' + + test from: :crd_v221_server_invoke_hook_test, + config: { + inputs: { + service_ids: { + name: :order_sign_service_ids, + title: 'Service id for the service that implements the `order-sign` hook' + }, + service_request_bodies: { + name: :order_sign_request_bodies, + title: 'Request body or bodies for invoking the `order-sign` hook' + } + } + } + end + + group do + title 'Verify Requests' + + test from: :crd_v221_service_request_required_fields_validation, + config: { + outputs: { + contexts: { + name: :order_sign_contexts + } + } + } + test from: :crd_v221_service_request_context_validation, + config: { + inputs: { + contexts: { + name: :order_sign_contexts + } + } + } + test from: :crd_v221_service_request_optional_fields_validation + end + + group do + title 'Verify Responses' + + test from: :crd_v221_service_response_validation, + config: { + outputs: { + valid_cards: { + name: :order_sign_valid_cards + }, + valid_system_actions: { + name: :order_sign_valid_system_actions + } + } + } + test from: :crd_v221_card_optional_fields_validation, + config: { + inputs: { + valid_cards: { + name: :order_sign_valid_cards + } + }, + outputs: { + valid_cards_with_links: { + name: :order_sign_valid_cards_with_links + }, + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_external_reference_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_sign_valid_cards_with_links + } + } + } + test from: :crd_v221_launch_smart_app_card_validation, + config: { + inputs: { + valid_cards_with_links: { + name: :order_sign_valid_cards_with_links + } + } + } + test from: :crd_v221_valid_instructions_card_received, + config: { + inputs: { + valid_cards: { + name: :order_sign_valid_cards + } + } + } + test from: :crd_v221_coverage_info_system_action_received, + config: { + inputs: { + valid_system_actions: { + name: :order_sign_valid_system_actions + } + }, + outputs: { + coverage_info: { + name: :order_sign_coverage_info + } + } + }, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@resp-26' + ] + test from: :crd_v221_coverage_info_system_action_validation, + config: { + inputs: { + coverage_info: { + name: :order_sign_coverage_info + } + } + }, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@resp-25' + ] + test from: :crd_v221_all_responses_include_coverage_information, + verifies_requirements: [ + 'hl7.fhir.us.davinci-crd_2.2.1@hook-16', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-28', + # This requirement has a typo. It says 'order-select' but it + # should be 'order-sign'. + # https://jira.hl7.org/browse/FHIR-56985 + 'hl7.fhir.us.davinci-crd_2.2.1@hook-39', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-29' + ] + test from: :crd_v221_propose_alternate_request_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + }, + contexts: { + name: :order_sign_contexts + } + } + } + test from: :crd_v221_additional_orders_card_validation, + config: { + inputs: { + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_request_form_completion_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_sign_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_create_or_update_coverage_info_response_validation, + config: { + inputs: { + valid_system_actions: { + name: :order_sign_valid_system_actions + }, + valid_cards_with_suggestions: { + name: :order_sign_valid_cards_with_suggestions + } + } + } + test from: :crd_v221_coverage_info_configuration + test from: :crd_v221_unknown_configuration + test from: :crd_v221_unknown_context + test from: :crd_v221_unknown_cds_hooks_elements + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb new file mode 100644 index 00000000..1731d372 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_required_card_response_validation_group.rb @@ -0,0 +1,26 @@ +require_relative 'must_support/coverage_information_system_action_across_hooks_validation_test' +require_relative 'must_support/coverage_information_must_support_test' +require_relative 'verify_response/verify_response_without_billing_options_test' +require_relative 'must_support/supported_us_core_versions_test' + +module DaVinciCRDTestKit + module V221 + class ServerRequiredCardResponseValidationGroup < Inferno::TestGroup + title 'Cross-Hook Response Validation' + description %( + This group contains tests to verify the behavior of the server responses + across all hooks. + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@247', 'hl7.fhir.us.davinci-crd_2.0.1@248', + # 'hl7.fhir.us.davinci-crd_2.0.1@249' + + id :crd_v221_server_required_card_response_validation + run_as_group + + test from: :crd_v221_coverage_info_system_action_across_hooks_validation + test from: :crd_v221_coverage_information_must_support + test from: :verify_response_without_billing_options + test from: :crd_v221_supported_us_core_versions + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb b/lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb new file mode 100644 index 00000000..2334c404 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/server_urls.rb @@ -0,0 +1,13 @@ +require_relative '../server_base_urls' + +module DaVinciCRDTestKit + module V221 + module ServerURLs + include ServerBaseURLs + + def suite_id + DaVinciCRDTestKit::V221::CRDServerSuite.id + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb new file mode 100644 index 00000000..cc49fdc4 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_context_validation_test.rb @@ -0,0 +1,30 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V221 + class ServiceRequestContextValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service requests contain valid context' + id :crd_v221_service_request_context_validation + description %( + This test verifies that all service requests `context` field is valid and contains all the + required fields. + ) + input :contexts, :invoked_hook + + run do + parsed_contexts = parse_json(contexts) + parsed_contexts.each do |context| + hook_request_context_check(context, invoked_hook, ig_version: 'v221') + end + + no_error_validation('Some contexts are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb new file mode 100644 index 00000000..636d94a2 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_optional_fields_validation_test.rb @@ -0,0 +1,39 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V221 + class ServiceRequestOptionalFieldsValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service requests contain optional fields' + id :crd_v221_service_request_optional_fields_validation + description %( + This optional test reviews the user-submitted CRD service requests for the presence of optional fields: + `fhirAuthorization` and `prefetch`. + + The test will not fail if these optional fields are missing from a service request; instead, it generates an + informational message. + ) + optional + + run do + load_tagged_requests(tested_hook_name) + skip_if requests.empty?, "No #{tested_hook_name} request was made in a previous test as expected." + + requests.each_with_index do |request, index| + @request_number = index + 1 + request_body = json_parse(request.request_body) + if request_body.blank? + add_message('error', "#{request_number}Hook request body cannot be empty.") + next + end + + hook_request_optional_fields_check(request_body, ig_version: 'v221') + end + no_error_validation('Some service requests have invalid optional fields.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb new file mode 100644 index 00000000..8a4fee62 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_request/service_request_required_fields_validation_test.rb @@ -0,0 +1,40 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V221 + class ServiceRequestRequiredFieldsValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service requests contain required fields' + id :crd_v221_service_request_required_fields_validation + description %( + This test validates all CRD service requests provided by the user, ensuring each includes all required fields + specified in the [CDS Hooks spec section on Calling a CDS Service](https://cds-hooks.hl7.org/2.0/#calling-a-cds-service): + `hook`, `hookInstance`, and `context`. Furthermore, the test checks for the conditional presence of the + `fhirServer` field if `fhirAuthorization` is included. + ) + input :invoked_hook + output :contexts + + run do + load_tagged_requests(tested_hook_name) + skip_if requests.empty?, "No #{tested_hook_name} request was made in a previous test as expected." + contexts = [] + requests.each_with_index do |request, index| + @request_number = index + 1 + request_body = json_parse(request.request_body) + next if request_body.blank? + + contexts << request_body['context'] if request_body['context'].is_a?(Hash) + hook_request_required_fields_check(request_body, invoked_hook, ig_version: 'v221') + end + + output contexts: contexts.to_json + + no_error_validation('Some service requests made are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb new file mode 100644 index 00000000..5d911016 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/additional_orders_validation_test.rb @@ -0,0 +1,59 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class AdditionalOrdersValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Additional Orders as companions/prerequisites cards received' + id :crd_v221_additional_orders_card_validation + description %( + This test validates that an [Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order) + card was received. It does so by: + - Filtering cards with the following criteria: + - For each suggestion in the card's suggestions array, all actions have a type of 'create' + and the action's resource type is one of the expected types: CommunicationRequest, Device, + DeviceRequest, Medication, MedicationRequest, NutritionOrder, ServiceRequest, or VisionPrescription. + - Then, for each valid Additional Orders card retrieved, verifying that each action within the + card's suggestions complies with their respective profiles as specified in the + [CRD IG section on Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order): + - [crd-profile-communicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html) + - [crd-profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) + - [crd-profile-deviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) + - [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html) + - [crd-profile-medicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) + - [crd-profile-nutritionOrder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) + - [crd-profile-serviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) + - [crd-profile-visionPrescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html). + + The test will skip if no Additional Orders cards are found. + ) + + optional + input :valid_cards_with_suggestions + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + additional_orders_cards = parsed_cards.filter do |card| + additional_orders_response_type?(card) + end + skip_if additional_orders_cards.blank?, + "#{tested_hook_name} hook response does not include Additional Orders as companion/prerequisite cards." + + additional_orders_cards.each do |card| + card['suggestions'].each do |suggestion| + actions_check(suggestion['actions'], ig_version: 'v221') + end + end + + no_error_validation('Some companions/prerequisites Additional Order cards are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb new file mode 100644 index 00000000..837cce15 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/all_responses_include_coverage_information_test.rb @@ -0,0 +1,126 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class AllResponsesIncludeCoverageInformationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'All hook responses include Coverage Information system action' + id :crd_v221_all_responses_include_coverage_information + description %( + This test validates that a [Coverage + Information](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/cards.html#coverage-information-response-type) + system action was returned for every hook call, unless the resource + which is the focus of the hook call already includes a + [coverage-information + extension](https://hl7.org/fhir/us/davinci-crd/2.2.1/en/StructureDefinition-ext-coverage-information.html). + It does so by: + - First checking for the presence of actions with a `resource` element + of the following types: + - For `appointment-book`: Appointment + - For `order-sign` or `order-dispatch`: CommunicationRequest, + DeviceRequest, MedicationRequest, NutritionOrder, ServiceRequest, or + VisionPrescription + - Then, checking whether each resource contains the coverage-information extension + - Finally verifying that the response to each hook call where the + resource did not contain a coverage-information extension includes + coverage information system action + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-16', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-28' + + input :invoked_hook + + def target_resources + shared_resources = [ + 'CommunicationRequest', 'DeviceRequest', 'MedicationRequest', + 'NutritionOrder', 'ServiceRequest', 'VisionPrescription' + ] + { + 'appointment-book' => ['Appointment'], + 'order-sign' => shared_resources, + 'order-dispatch' => shared_resources, + 'order-select' => shared_resources, + 'encounter-start' => ['Encounter'], + 'encounter-discharge' => ['Encounter'] + }[tested_hook_name] + end + + def hook_bundle_field_name + { + 'appointment-book' => 'appointments', + 'order-sign' => 'draftOrders' + }[tested_hook_name] + end + + def resources_contain_coverage_information_extension?(resources) + resources.all? do |resource| + resource.extension&.any? do |extension| + extension.url == 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' + end + end + end + + def order_resources(hook_call_body) + bundle = FHIR::Bundle.new(hook_call_body.dig('context', hook_bundle_field_name)) + bundle.entry.map(&:resource).select { |resource| target_resources.include? resource.resourceType } + end + + run do + successful_hook_calls_without_coverage_information = 0 + coverage_information_system_actions_received = 0 + + load_tagged_requests(tested_hook_name) + + requests.each do |request| + next if request.status != 200 + + hook_call_body = JSON.parse(request.request_body) + + # TODO: handle when default value for coverage-info is false + next if hook_call_body.dig('extension', 'davinci-crd.configuration', 'coverage-info') == false + + resources = order_resources(hook_call_body) + + next if resources_contain_coverage_information_extension?(resources) + + successful_hook_calls_without_coverage_information += 1 + + hook_call_response = JSON.parse(request.response_body) + + system_actions = hook_call_response['systemActions'] + + next if system_actions.blank? + + system_actions_resources = + system_actions + .select { |action| action['type'] == 'update' } + .select { |action| target_resources.include? action['resource']['resourceType'] } + .map { |action| FHIR.from_contents(action['resource'].to_json) } + + next unless resources_contain_coverage_information_extension?(system_actions_resources) + + coverage_information_system_actions_received += 1 + rescue JSON::ParserError => e + warning(e.message) + next + end + + skip_if successful_hook_calls_without_coverage_information.zero?, + 'No successful hook calls were made with resources which did not already ' \ + 'contain a coverage-information extension.' + + assert successful_hook_calls_without_coverage_information == coverage_information_system_actions_received, + "#{successful_hook_calls_without_coverage_information} successful hook calls " \ + 'without a coverage-information extension were made, but only ' \ + "#{coverage_information_system_actions_received} of the responses contained " \ + 'a coverage information system action.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb new file mode 100644 index 00000000..12f94493 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/card_optional_fields_validation_test.rb @@ -0,0 +1,51 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_request_validation' +require_relative '../../../cross_suite/cards_validation' + +module DaVinciCRDTestKit + module V221 + class CardOptionalFieldsValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::CardsValidation + + title 'Cards contain valid optional fields' + id :crd_v221_card_optional_fields_validation + description %( + This test checks for the presence and validity of optional fields in a card, + but only if the card's required fields are valid. As specified in the + [CDS Hooks specification section on Card Attributes](https://cds-hooks.hl7.org/2.0/#card-attributes), + the optional fields include `uuid`, `detail`, `suggestions`, `overrideReasons`, and `links`. + + Additionally, the test validates the presence of the conditional field `selectionBehavior` + only if the `suggestions` field is present. + ) + optional + input :valid_cards + output :valid_cards_with_links, :valid_cards_with_suggestions + + def cards_with_suggestions + @cards_with_suggestions ||= [] + end + + def cards_with_links + @cards_with_links ||= [] + end + + run do + parsed_cards = parse_json(valid_cards) + parsed_cards.each do |card| + if valid_card_with_optionals?(card) + cards_with_links << card if card['links'] + cards_with_suggestions << card if card['suggestions'] + end + end + + output valid_cards_with_links: cards_with_links.to_json + output valid_cards_with_suggestions: cards_with_suggestions.to_json + + no_error_validation('Some cards with valid required fields have invalid optional fields.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb new file mode 100644 index 00000000..2079bc2b --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test.rb @@ -0,0 +1,83 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../server_hook_helper' +require_relative '../server_urls' + +module DaVinciCRDTestKit + module V221 + class CoverageInfoConfigurationTest < Inferno::Test + include DaVinciCRDTestKit::CardsIdentification + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::V221::ServerURLs + + title 'Coverage information configuration option suppresses coverage-info responses' + id :crd_v221_coverage_info_configuration + description %( + This test checks follow-up hook requests made with + `extension.davinci-crd.configuration.coverage-info` set to `false` after prior successful hook requests + returned coverage-info content. + + CRD Servers SHALL behave in the manner prescribed by supported configuration information received from + the CRD Client. When `coverage-info` is `false`, responses must not include coverage-info cards or + coverage-information/form-completion system actions. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@dev-14', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-28' + + def coverage_info_message(cards, actions) + card_summaries = cards.map { |card| card['summary'] }.compact + action_descriptions = actions.map { |action| action['description'] }.compact + + 'Coverage-info disabled server response included coverage-info content despite ' \ + "`#{COVERAGE_INFO_CONFIGURATION_CODE}` being set to `false`. " \ + "Cards: #{card_summaries.join(', ')}. System actions: #{action_descriptions.join(', ')}." + end + + def primary_hook? + ['appointment-book', 'order-sign', 'order-dispatch'].include? tested_hook_name + end + + def parsed_body(json) + JSON.parse(json) + rescue JSON::ParserError + nil + end + + run do + load_tagged_requests(tested_hook_name, COVERAGE_INFO_DISABLED_TAG) + + if requests.empty? + message = "No successful #{tested_hook_name} response contained coverage-info content to suppress." + if primary_hook? + skip message + else + omit message + end + end + + requests.each do |request| + unless request.status == 200 + add_message( + 'error', + "Coverage-info disabled server request returned HTTP #{request.status}; expected HTTP 200." + ) + next + end + + response_body = parsed_body(request.response_body) + unless response_body.is_a?(Hash) + add_message('error', 'Coverage-info disabled server response was not valid JSON.') + next + end + + cards, actions = coverage_info_content(response_body) + next if cards.empty? && actions.empty? + + add_message('error', coverage_info_message(cards, actions)) + end + + assert_no_error_messages('Coverage-info configuration responses were not valid. Check messages for details.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb new file mode 100644 index 00000000..39bd2921 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_received_test.rb @@ -0,0 +1,65 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class CoverageInformationSystemActionReceivedTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Coverage Information system action was received' + id :crd_v221_coverage_info_system_action_received + description %( + This test validates that a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + system action was returned. It does so by: + - First checking for the presence of actions with a `resource` element of the following types: + - For `appointment-book`: Appointment + - For `order-sign` or `order-dispatch`: DeviceRequest, MedicationRequest, NutritionOrder, + ServiceRequest, or VisionPrescription + - Then, among the target actions, checking if their resource has the [coverage-information extension](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information). + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@272', 'hl7.fhir.us.davinci-crd_2.0.1@273', + # 'hl7.fhir.us.davinci-crd_2.0.1@274', 'hl7.fhir.us.davinci-crd_2.0.1@275', + # 'hl7.fhir.us.davinci-crd_2.0.1@276', 'hl7.fhir.us.davinci-crd_2.0.1@277' + + input :valid_system_actions, :invoked_hook + output :coverage_info + + def resources_by_hook + shared_resources = [ + 'DeviceRequest', 'MedicationRequest', 'NutritionOrder', + 'ServiceRequest', 'VisionPrescription' + ] + { + 'appointment-book' => ['Appointment'], + 'order-sign' => shared_resources, + 'order-dispatch' => shared_resources, + 'order-select' => shared_resources, + 'encounter-start' => ['Encounter'], + 'encounter-discharge' => ['Encounter'] + } + end + + run do + parsed_actions = parse_json(valid_system_actions) + target_resources = resources_by_hook[invoked_hook] + + target_actions = parsed_actions.select do |action| + resource = FHIR.from_contents(action['resource'].to_json) + target_resources.include?(resource&.resourceType) + end + + coverage_info_system_actions = target_actions.select do |action| + coverage_information_response_type?(action) + end + + assert coverage_info_system_actions.present?, + "Coverage Information system action was not returned in the #{tested_hook_name} hook response." + + output coverage_info: coverage_info_system_actions.to_json + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb new file mode 100644 index 00000000..a30c1442 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_information_system_action_validation_test.rb @@ -0,0 +1,183 @@ +require_relative '../../server_hook_request_validation' +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative 'hook_request_resource_resolution' + +module DaVinciCRDTestKit + module V221 + class CoverageInformationSystemActionValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookRequestValidation + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include HookRequestResourceResolution + + COVERAGE_INFO_EXT_URL = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information'.freeze + + title 'All Coverage Information system actions received are valid' + id :crd_v221_coverage_info_system_action_validation + description %( + This test validates all [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) + system actions received. It verifies the following for each action: + - The action type is `update`. + - The resource within the action conforms its respective FHIR profile. + - The resource does not change any data elements other than adding or modifying + the `coverage-information` extension. + + Additionally, the test examines the `coverage-info` extensions within the resource to ensure that: + - Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + - Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids` + (if present). + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-32', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-37', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-47', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-48', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-52' + + input :coverage_info + input :mock_ehr_bundle, optional: true + + def find_extension_value(extension, url, *properties) + found_extension = extension.extension.find { |ext| ext.url == url } + return nil unless found_extension + + properties.reduce(found_extension) do |current, prop| + return current unless current.respond_to?(prop) + + current.send(prop) + end + end + + def extract_and_group_coverage_info(resource) + resource.extension.each_with_object({}) do |extension, grouped_extensions| + next unless extension.url == COVERAGE_INFO_EXT_URL + + coverage_key = find_extension_value(extension, 'coverage', 'valueReference', 'reference') + grouped_extensions[coverage_key] ||= [] + grouped_extensions[coverage_key] << extension + end + end + + # For the same coverage, ensure coverage-assertion-ids and satisfied-pa-ids are the same. + # For different coverages, ensure coverage-assertion-ids and satisfied-pa-ids are distinct. + def multiple_extensions_conformance_check(grouped_coverage_info, resource) + resource_ref = "#{resource.resourceType}/#{resource.id}" + assertion_ids_across_coverages = Set.new + pa_ids_across_coverages = Set.new + + grouped_coverage_info.each do |coverage, extensions| + coverage_assertion_ids = collect_extensions_id(extensions, 'coverage-assertion-id', 'valueString').uniq + satisfied_pa_ids = collect_extensions_id(extensions, 'satisfied-pa-id', 'valueString').uniq.compact + assert coverage_assertion_ids.length == 1, + same_coverage_conformance_error_msg(resource_ref, coverage, 'coverage-assertion-ids') + + assert satisfied_pa_ids.length <= 1, + same_coverage_conformance_error_msg(resource_ref, coverage, 'satisfied-pa-ids') + + assertion_id = coverage_assertion_ids.first + assert !assertion_ids_across_coverages.include?(assertion_id), + different_coverage_conformance_error_msg(resource_ref, 'coverage-assertion-ids') + assertion_ids_across_coverages.add(assertion_id) + pa_id = satisfied_pa_ids.first + next unless pa_id + + assert !pa_ids_across_coverages.include?(pa_id), + different_coverage_conformance_error_msg(resource_ref, 'satisfied-pa-ids') + pa_ids_across_coverages.add(pa_id) + end + end + + def collect_extensions_id(extensions, url, *properties) + extensions.map do |extension| + find_extension_value(extension, url, *properties) + end + end + + def same_coverage_conformance_error_msg(resource_ref, coverage, id_name) + "#{resource_ref}: extension has multiple repetitions of coverage `#{coverage}` with different #{id_name}." + end + + def different_coverage_conformance_error_msg(resource_ref, id_name) + "#{resource_ref}: extensions referencing differing coverage SHALL have distinct #{id_name}." + end + + def normalize_value(value) + case value + when Hash + value.transform_values { |child| normalize_value(child) } + when Array + value.map { |child| normalize_value(child) }.sort_by(&:to_json) + else + value + end + end + + def strip_coverage_info_extensions(resource_hash) + normalized_hash = resource_hash.deep_dup + return normalized_hash unless normalized_hash['extension'].is_a?(Array) + + normalized_hash['extension'] = normalized_hash['extension'].reject do |extension| + extension['url'] == COVERAGE_INFO_EXT_URL + end + normalized_hash.delete('extension') if normalized_hash['extension'].empty? + normalized_hash + end + + def verify_only_coverage_info_changed(action) + request = matching_request_for_action(action) + source_resource = find_action_source_resource(action, request) + updated_resource_hash = action['resource'] + resource_ref = "#{updated_resource_hash['resourceType']}/#{updated_resource_hash['id']}" + unless source_resource + messages << { + type: 'warning', + message: 'Inferno could not resolve the original source resource for Coverage Information systemAction ' \ + "targeting #{resource_ref}, so it could not verify that only coverage-information extensions " \ + 'were changed.' + } + return + end + + source_resource_hash = source_resource.to_hash + + source_without_coverage_info = normalize_value(strip_coverage_info_extensions(source_resource_hash)) + updated_without_coverage_info = normalize_value(strip_coverage_info_extensions(updated_resource_hash)) + + assert source_without_coverage_info == updated_without_coverage_info, + "#{resource_ref}: resource content changed outside the coverage-information extension." + end + + def coverage_info_system_action_check(coverage_info_system_action) + type = coverage_info_system_action['type'] + assert type, '`type` field is missing.' + assert type == 'update', "`type` must be `update`, but was `#{type}`" + + resource = FHIR.from_contents(coverage_info_system_action['resource'].to_json) + profile_url = structure_definition_map('v221')[resource.resourceType] + assert_valid_resource(resource:, profile_url:) + + grouped_coverage_info = extract_and_group_coverage_info(resource) + multiple_extensions_conformance_check(grouped_coverage_info, resource) + verify_only_coverage_info_changed(coverage_info_system_action) + end + + run do + load_tagged_requests(tested_hook_name) + parsed_coverage_info = parse_json(coverage_info) + error_messages = [] + parsed_coverage_info.each do |action| + coverage_info_system_action_check(action) + rescue Inferno::Exceptions::AssertionException => e + error_messages << "Coverage Info system action `#{action}`: #{e.message}" + end + + error_messages.each do |msg| + messages << { type: 'error', message: msg } + end + assert error_messages.empty?, 'Some Coverage Info system actions are not valid.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb new file mode 100644 index 00000000..c583de4e --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/create_or_update_coverage_info_response_validation_test.rb @@ -0,0 +1,69 @@ +require_relative '../../server_test_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class CreateOrUpdateCoverageInfoResponseValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Create or Update Coverage Information cards or system actions received' + id :crd_v221_create_or_update_coverage_info_response_validation + description %( + This test validates the Create or Update Coverage Information cards or system actions received from the + CRD service, as per the specifications outlined in the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information). + + - **Checking for Presence:** + The test first checks if any Create or Update Coverage Information cards or system actions are present in + the returned valid cards or valid system actions. + - **For cards**: it ensures there are cards with a `suggestions` array containing a single suggestion, + and the `actions` array of that suggestion has one `create` or `update` action for the `Coverage` resource. + - **For system actions**: it checks for the presence of `create` or `update` actions for the `Coverage` + resource. + + - **Validating:** + If any Create or Update Coverage Information cards or system actions are found, each `Coverage` resource is + validated against the base FHIR Coverage resource. + + If no Create or Update Coverage Information cards or system actions are received, the test is skipped. + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@306' + optional + input :valid_cards_with_suggestions, :valid_system_actions + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + parsed_actions = parse_json(valid_system_actions) + + create_or_update_coverage_info_cards = parsed_cards.select do |card| + create_or_update_coverage_card_response_type?(card) + end + create_or_update_coverage_info_actions = parsed_actions.select do |action| + create_or_update_coverage_action_response_type?(action) + end + + skip_msg = "#{tested_hook_name} hook response does not contain any Create or Update Coverage Information " \ + 'cards or system actions.' + skip_if create_or_update_coverage_info_cards.blank? && create_or_update_coverage_info_actions.blank?, skip_msg + + if create_or_update_coverage_info_actions.present? + actions_check(create_or_update_coverage_info_actions, ig_version: 'v221') + end + + if create_or_update_coverage_info_cards.present? + create_or_update_coverage_info_cards.each do |card| + actions_check(card['suggestions'].first['actions'].select do |action| + create_or_update_coverage_action_response_type?(action) + end, ig_version: 'v221') + end + end + + no_error_validation('Some Create or Update Coverage Information received are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb new file mode 100644 index 00000000..48892662 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/external_reference_card_validation_test.rb @@ -0,0 +1,37 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class ExternalReferenceCardValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid External Reference cards received' + id :crd_v221_external_reference_card_validation + description %( + This test verifies the presence of valid External Reference cards within the list of valid cards + returned by the CRD service. + As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference), + External Reference cards must contain links with the type set to `absolute`. + This test checks for the presence of any External Reference cards by verifying: + - The presence of a `links` array within each card. + - That every link in the `links` array of a card is of type `absolute`. + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@258', 'hl7.fhir.us.davinci-crd_2.0.1@259' + + input :valid_cards_with_links + optional + + run do + parsed_cards = parse_json(valid_cards_with_links) + external_reference_cards = parsed_cards.select { |card| external_reference_response_type?(card) } + + assert external_reference_cards.present?, + "#{tested_hook_name} hook response did not contain an External Reference card." + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb new file mode 100644 index 00000000..8bcc347c --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/form_completion_response_validation_test.rb @@ -0,0 +1,81 @@ +require_relative '../../server_test_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class FormCompletionResponseValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Request Form Completion cards or system actions received' + id :crd_v221_request_form_completion_response_validation + description %( + This test validates the Request Form Completion cards or system actions received from the CRD service, + as per the specifications outlined in the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion). + + - **Checking for Presence:** + The test begins by verifying whether any Request Form Completion cards or system actions are present. + - **For cards:** It ensures that there are cards with `suggestions` containing `create` actions + for the `Task` resource, specifically: + - The `Task` must have a `code` of `complete-questionnaire`. + - The `Task` should include an input of type `text` (`Task.input.type.text`) labeled as `questionnaire` + and associated with a valid canonical URL (`Task.input.valueCanonical`). + - **For system actions:** It checks for the presence of `create` actions for the `Task` resource with + the characteristics described above. + + - **Validating:** + If any Request Form Completion cards or system actions are found, the test proceeds to validate them. + Each `Task` resource is validated against the [CRD Questionnaire Task + profile](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-taskquestionnaire). + Additionally, if any actions for the creation of a `Questionnaire` are + found, the test verifies that they include the + `davinci-crd.if-none-exist` extension. + + If no Request Form Completion cards or system actions are received, the test is skipped. + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@299' + optional + input :valid_cards_with_suggestions, :valid_system_actions + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + parsed_actions = parse_json(valid_system_actions) + + form_completion_cards = parsed_cards.select { |card| form_completion_card_response_type?(card) } + form_completion_actions = parsed_actions.select { |action| form_completion_action_response_type?(action) } + + skip_if form_completion_cards.blank? && form_completion_actions.blank?, + "#{tested_hook_name} hook response does not contain any Request Form Completion cards " \ + 'or system actions.' + + actions_check(form_completion_actions, ig_version: 'v221') if form_completion_actions.present? + + if form_completion_cards.present? + form_completion_cards.each do |card| + card['suggestions'].each do |suggestion| + actions_check(suggestion['actions']&.select do |action| + form_completion_action_response_type?(action) + end, ig_version: 'v221') + end + end + end + + questionnaire_create_actions = + parsed_actions.select { |action| create_questionnaire_action_response_type?(action) } + + form_completion_cards + .flat_map { |card| card['suggestions'] } + .flat_map { |suggestion| suggestion['actions'] } + .compact + .select { |action| create_questionnaire_action_response_type?(action) } + + questionnaire_create_actions.each { |action| questionnaire_creation_check(action) } + + no_error_validation('Some Request Form Completion received are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb new file mode 100644 index 00000000..ee710989 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/hook_request_resource_resolution.rb @@ -0,0 +1,137 @@ +module DaVinciCRDTestKit + module V221 + module HookRequestResourceResolution + def mock_ehr_bundle_resource + @mock_ehr_bundle_resource ||= JSON.parse(mock_ehr_bundle) if mock_ehr_bundle.present? + rescue JSON::ParserError + nil + end + + def matching_request_for_action(action) + requests.find do |request| + response = JSON.parse(request.response_body) + request.status == 200 && Array(response['systemActions']).any? { |candidate| candidate == action } + rescue JSON::ParserError + false + end + end + + # Resolve the original resource being updated by a systemAction. + # - appointment-book: look in context.appointments; if the action targets a ServiceRequest, + # follow the Appointment basedOn reference and resolve that from prefetch or mock EHR data + # - order-sign/order-select: look in context.draftOrders + # - other hooks: resolve from prefetch or mock EHR data because context may carry only ids/references + def find_action_source_resource(action, request) + action_resource = action['resource'] + return unless action_resource.is_a?(Hash) + + target_type = action_resource['resourceType'] + target_id = action_resource['id'] + request_body = parse_request_body(request) + return unless target_type.present? && target_id.present? && request_body + + hook_context_resource(request_body, target_type, target_id) || + fallback_source_resource(request_body, target_type, target_id) + end + + def find_appointment_book_resource(request_body, target_type, target_id) + appointments_bundle = request_body.dig('context', 'appointments') + find_resource_in_bundle(appointments_bundle, target_type, target_id) || + appointment_book_service_request(request_body, appointments_bundle, target_id) + end + + def find_draft_orders_resource(request_body, target_type, target_id) + draft_orders_bundle = request_body.dig('context', 'draftOrders') + find_resource_in_bundle(draft_orders_bundle, target_type, target_id) + end + + def fallback_source_resource(request_body, target_type, target_id) + find_resource_in_prefetch(request_body, target_type, target_id) || + find_resource_in_bundle(mock_ehr_bundle_resource, target_type, target_id) + end + + def hook_context_resource(request_body, target_type, target_id) + case tested_hook_name + when 'appointment-book' + find_appointment_book_resource(request_body, target_type, target_id) + when 'order-sign', 'order-select' + find_draft_orders_resource(request_body, target_type, target_id) + end + end + + def appointment_book_service_request(request_body, appointments_bundle_hash, target_id) + target_type = 'ServiceRequest' + appointments_bundle = parse_bundle(appointments_bundle_hash) + appointment = (appointments_bundle&.entry || []) + .filter_map(&:resource) + .find { |candidate| appointment_based_on_matches_target?(candidate, target_type, target_id) } + return unless appointment + + find_resource_in_prefetch(request_body, target_type, target_id) || + find_resource_in_bundle(mock_ehr_bundle_resource, target_type, target_id) + end + + def appointment_based_on_matches_target?(appointment, target_type, target_id) + Array(appointment.basedOn).any? do |reference| + reference_parts(reference.reference) == [target_type, target_id] + end + end + + def find_resource_in_prefetch(request_body, target_type, target_id) + Array(request_body['prefetch']&.values).each do |prefetched_value| + if prefetched_value.is_a?(Hash) && + prefetched_value['resourceType'] == target_type && + prefetched_value['id'] == target_id + return FHIR.from_contents(prefetched_value.to_json) + end + + resource = find_resource_in_bundle(prefetched_value, target_type, target_id) + return resource if resource + end + + nil + end + + def find_resource_by_reference(request_body, reference) + target_type, target_id = reference_parts(reference) + return unless target_type.present? && target_id.present? + + find_resource_in_prefetch(request_body, target_type, target_id) || + find_resource_in_bundle(mock_ehr_bundle_resource, target_type, target_id) + end + + def find_resource_in_bundle(bundle_hash, target_type, target_id) + bundle = parse_bundle(bundle_hash) + return unless bundle&.entry + + bundle.entry + .filter_map(&:resource) + .find { |resource| resource.resourceType == target_type && resource.id == target_id } + end + + def reference_parts(reference) + return if reference.blank? + + parts = reference.split('/') + return unless parts.length >= 2 + + [parts[-2], parts[-1]] + end + + def parse_bundle(bundle_hash) + bundle = FHIR.from_contents(bundle_hash.to_json) + bundle if bundle.is_a?(FHIR::Bundle) + rescue StandardError + nil + end + + def parse_request_body(request) + return unless request&.request_body.present? + + JSON.parse(request.request_body) + rescue JSON::ParserError + nil + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb new file mode 100644 index 00000000..4c55e1c0 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/instructions_card_received_test.rb @@ -0,0 +1,30 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class InstructionsCardReceivedTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Instructions cards received' + id :crd_v221_valid_instructions_card_received + description %( + This test validates that an [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) + card was received. It does so by: + - Checking for the presence of a valid card that does not contain the `links` field and the `suggestions` field. + ) + + input :valid_cards + optional + + run do + parsed_cards = parse_json(valid_cards) + instructions_card = parsed_cards.find { |card| instructions_response_type?(card) } + assert instructions_card, "#{tested_hook_name} hook response did not contain an Instructions card." + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb new file mode 100644 index 00000000..daf48dcf --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/launch_smart_app_card_validation_test.rb @@ -0,0 +1,39 @@ +require_relative '../../server_test_helper' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class LaunchSmartAppCardValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Launch SMART Application cards received' + id :crd_v221_launch_smart_app_card_validation + description %( + This test verifies the presence of valid Launch SMART Application cards within the list of valid cards + returned by the CRD service. + As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application), + Launch SMART Application cards must contain links with the type set to `smart`. + This test checks for the presence of any Launch SMART Application cards by verifying: + - The existence of a `links` array within each card. + - That every link in the `links` array of a card is of type `smart`. + + The test will be skipped if no Launch SMART Application cards are found within the returned valid cards. + ) + # verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@258' + + optional + input :valid_cards_with_links + + run do + parsed_cards = parse_json(valid_cards_with_links) + external_reference_cards = parsed_cards.select { |card| launch_smart_app_response_type?(card) } + + skip_if external_reference_cards.blank?, + "#{tested_hook_name} hook response does not contain any Launch SMART App cards." + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/order_dispatch_coverage_information_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/order_dispatch_coverage_information_test.rb new file mode 100644 index 00000000..8949fc80 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/order_dispatch_coverage_information_test.rb @@ -0,0 +1,38 @@ +require_relative 'all_responses_include_coverage_information_test' +require_relative 'hook_request_resource_resolution' + +module DaVinciCRDTestKit + module V221 + class OrderDispatchCoverageInformationTest < AllResponsesIncludeCoverageInformationTest + include HookRequestResourceResolution + + id :crd_v221_order_dispatch_coverage_information + + input :invoked_hook + + input :mock_ehr_bundle + + def order_resources(hook_call_body) + references = hook_call_body.dig('context', 'dispatchedOrders') + resources = [] + unmatched_references = [] + + Array(references).each do |reference| + resource = find_resource_by_reference(hook_call_body, reference) + + if resource.present? + resources << resource + else + unmatched_references << reference + end + end + + skip_if unmatched_references.present?, + 'The following `dispatchedOrders` are not included in the Mock EHR Data input or prefetch: ' \ + "#{unmatched_references.join(', ')}" + + resources + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb new file mode 100644 index 00000000..c319009b --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/propose_alternate_request_card_validation_test.rb @@ -0,0 +1,49 @@ +require_relative '../../server_test_helper' +require_relative '../../../cross_suite/suggestion_actions_validation' +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/cards_identification' + +module DaVinciCRDTestKit + module V221 + class ProposeAlternateRequestCardValidationTest < Inferno::Test + include DaVinciCRDTestKit::ServerTestHelper + include DaVinciCRDTestKit::SuggestionActionsValidation + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::CardsIdentification + + title 'Valid Propose Alternate Request cards received' + id :crd_v221_propose_alternate_request_card_validation + description %( + This test validates that all [Propose Alternate Request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) + cards received are valid. It checks for the presence of a card's suggestion + with a single action with `Action.type` of `update` or a card with at least + two actions, one with `Action.type` of `delete` and the other with + `Action.type` of `create`. + ) + optional + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-55' + + input :valid_cards_with_suggestions, :contexts + + run do + parsed_cards = parse_json(valid_cards_with_suggestions) + parsed_contexts = parse_json(contexts) + proposed_alternate_cards = parsed_cards.filter do |card| + propose_alternative_request_response_type?(card) + end + + skip_if proposed_alternate_cards.blank?, + "#{tested_hook_name} hook response does not contain a Propose Alternate Request card." + + proposed_alternate_cards.each do |card| + card['suggestions'].each do |suggestion| + actions_check(suggestion['actions'], parsed_contexts, ig_version: 'v221') + end + end + + no_error_validation('Some Proposed Alternate Request cards are not valid.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb new file mode 100644 index 00000000..2490f2e3 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/service_response_validation_test.rb @@ -0,0 +1,91 @@ +require_relative '../../../cross_suite/cards_validation' +require_relative '../../../cross_suite/cards_logical_model_validation' +require_relative '../../server_hook_helper' + +module DaVinciCRDTestKit + module V221 + class ServiceResponseValidationTest < Inferno::Test + include DaVinciCRDTestKit::CardsValidation + include DaVinciCRDTestKit::CardsLogicalModelValidation + include DaVinciCRDTestKit::ServerHookHelper + + title 'All service responses contain valid cards and optional systemActions' + id :crd_v221_service_response_validation + description %( + As per the [CDS Hooks spec section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response), + a successful server's response to a service request must be a JSON object containing a `cards` array. + It must also contain a `systemActions` array for `appointment-book` and `order-sign` hook. + + Each card must contain the following required fields: `summary`, `indicator`, and `source`. + The required fields must have a valid data structure. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@resp-4', + 'hl7.fhir.us.davinci-crd_2.2.1@resp-5' + + input :invoked_hook + output :valid_cards, :valid_system_actions + + SYSTEM_ACTIONS_HOOK_NAMES = ['appointment-book', 'order-sign', 'order-dispatch'].freeze + + def valid_cards + @valid_cards ||= [] + end + + def valid_system_actions + @valid_system_actions ||= [] + end + + def system_actions_check(system_actions) + system_actions.each do |action| + current_error_count = messages.count { |msg| msg[:type] == 'error' } + action_fields_validation(action, ig_version: 'v221') + valid_system_actions << action if current_error_count == messages.count { |msg| msg[:type] == 'error' } + end + end + + def perform_system_actions_validation(system_actions, response_index) + if SYSTEM_ACTIONS_HOOK_NAMES.include?(invoked_hook) && system_actions.nil? + msg = "Server response #{response_index + 1} did not have the `systemActions` field, " \ + "which must be present for the `#{invoked_hook}` hook." + add_message('error', msg) + end + return if system_actions.nil? + + unless system_actions.is_a?(Array) + add_message('error', "`systemActions` of server response #{response_index + 1} is not an array.") + return + end + system_actions_check(system_actions) + end + + run do + load_tagged_requests(tested_hook_name) + skip_if requests.blank?, "No #{tested_hook_name} request was made in a previous test as expected." + successful_requests = requests.select { |request| request.status == 200 } + skip_if successful_requests.empty?, 'All service requests were unsuccessful.' + + info do + unsuccessful_count = (requests - successful_requests).length + assert unsuccessful_count.zero?, "#{unsuccessful_count} out of #{requests.length} requests were unsuccessful" + end + + successful_requests.each_with_index do |request, index| + service_response = JSON.parse(request.response_body) + perform_cards_validation(service_response['cards'], service_response['systemActions'].present?, index) + + perform_system_actions_validation(service_response['systemActions'], index) + + perform_cards_logical_model_validation(service_response['cards'], service_response['systemActions'], index) + rescue JSON::ParserError + add_message('error', "Invalid JSON: server response #{index + 1} is not valid JSON.") + end + + output valid_system_actions: valid_system_actions.to_json + output valid_cards: valid_cards.to_json + + no_error_validation('Some service responses are not valid. Check messages for issues found.') + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb new file mode 100644 index 00000000..2db2888c --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test.rb @@ -0,0 +1,78 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../server_hook_helper' +require_relative '../server_urls' + +module DaVinciCRDTestKit + module V221 + class UnknownCDSHooksElementsTest < Inferno::Test + include DaVinciCRDTestKit::CardsIdentification + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::V221::ServerURLs + + title 'Server ignores unknown CDS Hooks elements' + id :crd_v221_unknown_cds_hooks_elements + description %( + If a request resulted in a successful response with a coverage + information system action, a follow-up request is made with an element + with a random key and value added to the CDS hooks request. This test + verifes that this follow-up request also resulted in a successful + response with a coverage information system action to verify that + unknown CDS Hooks elements are ignored. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@found-33' + + def primary_hook? + ['appointment-book', 'order-sign', 'order-dispatch'].include? tested_hook_name + end + + def parsed_body(json) + JSON.parse(json) + rescue JSON::ParserError + nil + end + + run do + load_tagged_requests(tested_hook_name, UNKNOWN_ELEMENT_TAG) + + if requests.empty? + message = "No successful #{tested_hook_name} response contained a coverage-info action." + if primary_hook? + skip message + else + omit message + end + end + + requests.each do |request| + unless request.status == 200 + add_message( + 'error', + "Server request returned HTTP #{request.status} for a request with an unknown CDS Hooks element; " \ + 'expected HTTP 200.' + ) + next + end + + response_body = parsed_body(request.response_body) + unless response_body.is_a?(Hash) + add_message('error', 'Server response to a request with an unknown CDS Hooks element was not valid JSON.') + next + end + + next if coverage_info_response?(response_body) + + add_message( + 'error', + 'Server response to a request with an unknown CDS Hooks element did not contain ' \ + 'a coverage information system action.' + ) + end + + assert_no_error_messages( + 'Responses to requests with an unknown CDS Hooks element were not valid. Check messages for details.' + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb new file mode 100644 index 00000000..bb95a806 --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test.rb @@ -0,0 +1,78 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../server_hook_helper' +require_relative '../server_urls' + +module DaVinciCRDTestKit + module V221 + class UnknownConfigurationTest < Inferno::Test + include DaVinciCRDTestKit::CardsIdentification + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::V221::ServerURLs + + title 'Server ignores unknown configuration information' + id :crd_v221_unknown_configuration + description %( + If a request resulted in a successful response with a coverage + information system action, a follow-up request is made with a random + configuration key set to `true`. This test verifes that this follow-up + request also resulted in a successful response with a coverage + information system action to verify that unknown configuration values + are ignored. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@dev-17' + + def primary_hook? + ['appointment-book', 'order-sign', 'order-dispatch'].include? tested_hook_name + end + + def parsed_body(json) + JSON.parse(json) + rescue JSON::ParserError + nil + end + + run do + load_tagged_requests(tested_hook_name, UNKNOWN_CONFIGURATION_TAG) + + if requests.empty? + message = "No successful #{tested_hook_name} response contained a coverage-info action." + if primary_hook? + skip message + else + omit message + end + end + + requests.each do |request| + unless request.status == 200 + add_message( + 'error', + "Server request returned HTTP #{request.status} for a request with an unknown configuration option; " \ + 'expected HTTP 200.' + ) + next + end + + response_body = parsed_body(request.response_body) + unless response_body.is_a?(Hash) + add_message('error', 'Server response to a request with an unknown configuration value was not valid JSON.') + next + end + + next if coverage_info_response?(response_body) + + add_message( + 'error', + 'Server response to a request with an unknown configuration value did not contain ' \ + 'a coverage information system action.' + ) + end + + assert_no_error_messages( + 'Responses to requests with unknown configuration were not valid. Check messages for details.' + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb new file mode 100644 index 00000000..7e25ddca --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test.rb @@ -0,0 +1,78 @@ +require_relative '../../../cross_suite/cards_identification' +require_relative '../../server_hook_helper' +require_relative '../server_urls' + +module DaVinciCRDTestKit + module V221 + class UnknownContextTest < Inferno::Test + include DaVinciCRDTestKit::CardsIdentification + include DaVinciCRDTestKit::ServerHookHelper + include DaVinciCRDTestKit::V221::ServerURLs + + title 'Server ignores unknown context information' + id :crd_v221_unknown_context + description %( + If a request resulted in a successful response with a coverage + information system action, a follow-up request is made with a random + context key set to a random value. This test verifes that this follow-up + request also resulted in a successful response with a coverage + information system action to verify that unknown context values are + ignored. + ) + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@hook-23' + + def primary_hook? + ['appointment-book', 'order-sign', 'order-dispatch'].include? tested_hook_name + end + + def parsed_body(json) + JSON.parse(json) + rescue JSON::ParserError + nil + end + + run do + load_tagged_requests(tested_hook_name, UNKNOWN_CONTEXT_TAG) + + if requests.empty? + message = "No successful #{tested_hook_name} response contained a coverage-info action." + if primary_hook? + skip message + else + omit message + end + end + + requests.each do |request| + unless request.status == 200 + add_message( + 'error', + "Server request returned HTTP #{request.status} for a request with an unknown context option; " \ + 'expected HTTP 200.' + ) + next + end + + response_body = parsed_body(request.response_body) + unless response_body.is_a?(Hash) + add_message('error', 'Server response to a request with an unknown context element was not valid JSON.') + next + end + + next if coverage_info_response?(response_body) + + add_message( + 'error', + 'Server response to a request with an unknown context element did not contain ' \ + 'a coverage information system action.' + ) + end + + assert_no_error_messages( + 'Responses to requests with unknown context were not valid. Check messages for details.' + ) + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_billing_options_test.rb b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_billing_options_test.rb new file mode 100644 index 00000000..fa715c5a --- /dev/null +++ b/lib/davinci_crd_test_kit/server/v2.2.1/verify_response/verify_response_without_billing_options_test.rb @@ -0,0 +1,43 @@ +require_relative '../../server_hook_helper' +require_relative '../../../cross_suite/tags' + +module DaVinciCRDTestKit + module V221 + class VerifyResponseWithoutBillingOptionsTest < Inferno::Test + include DaVinciCRDTestKit::ServerHookHelper + + title 'Server does not require Billing Options Extension' + id :verify_response_without_billing_options + description <<~DESCRIPTION + The IG states that, "CRD servers **SHALL NOT** depend on the + billing-options extension being present in order to provide a response." + + This test verifies that a successful response was received for a request + without any billing-options extensions. + DESCRIPTION + + verifies_requirements 'hl7.fhir.us.davinci-crd_2.2.1@billopt-2' + + BILLING_OPTIONS_URL = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options'.freeze + + run do + ALL_HOOK_TAGS.each do |tag| + load_tagged_requests(tag) + end + + skip_if requests.blank?, 'No requests were made in a previous test as expected.' + + successful_requests = requests.select { |request| request.status == 200 } + skip_if successful_requests.empty?, 'All service requests were unsuccessful.' + + requests_without_billing_options = + successful_requests.reject { |request| request.request_body.include? BILLING_OPTIONS_URL } + + skip_if requests_without_billing_options.blank?, + 'All successful requests included the billing options extension. ' \ + 'Provide service call inputs which do not include the billing options extension ' \ + 'to verify that the server does not require the extension.' + end + end + end +end diff --git a/lib/davinci_crd_test_kit/server_appointment_book_group.rb b/lib/davinci_crd_test_kit/server_appointment_book_group.rb deleted file mode 100644 index 4627f974..00000000 --- a/lib/davinci_crd_test_kit/server_appointment_book_group.rb +++ /dev/null @@ -1,176 +0,0 @@ -require_relative 'server_tests/service_call_test' -require_relative 'server_tests/service_response_validation_test' -require_relative 'server_tests/card_optional_fields_validation_test' -require_relative 'server_tests/external_reference_card_validation_test' -require_relative 'server_tests/coverage_information_system_action_received_test' -require_relative 'server_tests/coverage_information_system_action_validation_test' -require_relative 'server_tests/instructions_card_received_test' -require_relative 'server_tests/service_request_required_fields_validation_test' -require_relative 'server_tests/service_request_optional_fields_validation_test' -require_relative 'server_tests/service_request_context_validation_test' -require_relative 'server_tests/form_completion_response_validation_test' -require_relative 'server_tests/launch_smart_app_card_validation_test' -require_relative 'server_tests/create_or_update_coverage_info_response_validation_test' -require_relative 'tags' - -module DaVinciCRDTestKit - class ServerAppointmentBookGroup < Inferno::TestGroup - title 'appointment-book' - id :crd_server_appointment_book - description %( - This group of tests invokes the appointment-book hook and ensures that - the user-provided requests are valid as per the requirements described - in the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) - and the [CDS Hooks specification section on appointment-book context](https://cds-hooks.hl7.org/hooks/appointment-book/2023SepSTU1Ballot/appointment-book/). - It also ensures that the contents of the server's response are valid as per the requirements described in - the [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) - and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). - - The [CRD IG section on appointment-book hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) - states that "servers SHALL, at minimum, support returning and processing the Coverage Information - system action for all invocations of this hook." - - This group includes tests to validate the following CRD response types: - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ - - optional - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional - - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - - optional - - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - - optional - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', - 'hl7.fhir.us.davinci-crd_2.0.1@170', 'hl7.fhir.us.davinci-crd_2.0.1@184' - - config options: { hook_name: APPOINTMENT_BOOK_TAG } - run_as_group - - test from: :crd_service_call_test, - config: { - inputs: { - service_ids: { - name: :appointment_book_service_ids, - title: 'Service id for the service that implements the `appointment-book` hook' - }, - service_request_bodies: { - name: :appointment_book_request_bodies, - title: 'Request body or bodies for invoking the `appointment-book` hook' - } - } - } - - test from: :crd_service_request_required_fields_validation, - config: { - outputs: { - contexts: { - name: :appointment_book_contexts - } - } - } - test from: :crd_service_request_context_validation, - config: { - inputs: { - contexts: { - name: :appointment_book_contexts - } - } - } - test from: :crd_service_request_optional_fields_validation - test from: :crd_service_response_validation, - config: { - outputs: { - valid_cards: { - name: :appointment_book_valid_cards - }, - valid_system_actions: { - name: :appointment_book_valid_system_actions - } - } - } - test from: :crd_card_optional_fields_validation, - config: { - inputs: { - valid_cards: { - name: :appointment_book_valid_cards - } - }, - outputs: { - valid_cards_with_links: { - name: :appointment_book_valid_cards_with_links - }, - valid_cards_with_suggestions: { - name: :appointment_book_valid_cards_with_suggestions - } - } - } - test from: :crd_external_reference_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :appointment_book_valid_cards_with_links - } - } - } - test from: :crd_launch_smart_app_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :appointment_book_valid_cards_with_links - } - } - } - test from: :crd_valid_instructions_card_received, - config: { - inputs: { - valid_cards: { - name: :appointment_book_valid_cards - } - } - } - test from: :crd_coverage_info_system_action_received, - config: { - inputs: { - valid_system_actions: { - name: :appointment_book_valid_system_actions - } - }, - outputs: { - coverage_info: { - name: :appointment_book_coverage_info - } - } - } - test from: :crd_coverage_info_system_action_validation, - config: { - inputs: { - coverage_info: { - name: :appointment_book_coverage_info - } - } - } - test from: :crd_request_form_completion_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :appointment_book_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :appointment_book_valid_cards_with_suggestions - } - } - } - test from: :crd_create_or_update_coverage_info_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :appointment_book_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :appointment_book_valid_cards_with_suggestions - } - } - } - end -end diff --git a/lib/davinci_crd_test_kit/server_demonstrate_hook_response_group.rb b/lib/davinci_crd_test_kit/server_demonstrate_hook_response_group.rb deleted file mode 100644 index 4c0fdf88..00000000 --- a/lib/davinci_crd_test_kit/server_demonstrate_hook_response_group.rb +++ /dev/null @@ -1,77 +0,0 @@ -require_relative 'server_tests/service_call_test' -require_relative 'server_tests/service_request_required_fields_validation_test' -require_relative 'server_tests/service_request_context_validation_test' -require_relative 'server_tests/service_response_validation_test' -require_relative 'tags' - -module DaVinciCRDTestKit - class ServerDemonstrateHookResponseGroup < Inferno::TestGroup - title 'Demonstrate A Hook Response' - id :crd_server_demonstrate_hook_response - description %( - This group of tests allows the system to demonstrate its ability to respond to a CRD Hook invocation - and return a valid response. Inferno will use the provided request body and will either use the provided service - id or infer one from the hook indicated in the request and the server's discovery response. - It ensures that the user-provided request and the server's response are both - valid as per the requirements described in the [CRD IG section](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html) - and the [CDS Hooks](https://cds-hooks.hl7.org/) hook specification for the corresponding hook. - ) - - config options: { hook_name: ANY_HOOK_TAG } - run_as_group - - test from: :crd_service_call_test, - config: { - inputs: { - service_ids: { - name: :any_hook_service_ids, - title: 'Service id to use for the "Demonstrate a Hook Response" test', - description: %( - If blank, Inferno will attempt to infer the service id to use by finding a service entry in the - Discovery response for the hook indicated in the provided request body. If it cannot be inferred, - the tests will be skipped. - ) - }, - service_request_bodies: { - name: :any_hook_request_body, - title: 'Request body to use for the "Demonstrate a Hook Response" test', - description: %( - Provide a single JSON request body to submit for the hook invocation. The type of hook invoked - will be inferred based on the `hook` element in the request. - ) - } - } - } - - test from: :crd_service_request_required_fields_validation, - config: { - outputs: { - contexts: { - name: :any_hook_contexts - } - } - } - test from: :crd_service_request_context_validation, - config: { - inputs: { - contexts: { - name: :any_hook_contexts - }, - request_body: { - name: :any_hook_request_body - } - } - } - test from: :crd_service_response_validation, - config: { - outputs: { - valid_cards: { - name: :any_hook_valid_cards - }, - valid_system_actions: { - name: :any_hook_valid_system_actions - } - } - } - end -end diff --git a/lib/davinci_crd_test_kit/server_discovery_group.rb b/lib/davinci_crd_test_kit/server_discovery_group.rb deleted file mode 100644 index 69d92bdb..00000000 --- a/lib/davinci_crd_test_kit/server_discovery_group.rb +++ /dev/null @@ -1,60 +0,0 @@ -require 'tls_test_kit' -require_relative 'server_tests/discovery_endpoint_test' -require_relative 'server_tests/discovery_services_validation_test' - -module DaVinciCRDTestKit - class ServerDiscoveryGroup < Inferno::TestGroup - title 'Discovery' - id :crd_server_discovery_group - description %( - # Background - - The #{title} Group checks for a CDS Service's Discovery endpoint as described by the - [CDS Hooks Specification](https://cds-hooks.hl7.org/2.0/#discovery). - A CDS Service is discoverable via a stable endpoint by CDS Clients. The Discovery endpoint - includes information such as a description of the CDS Service, when it should be invoked, - and any data that is requested to be prefetched. - The Discovery endpoint SHALL always be available at `{baseUrl}/cds-services`. - - # Test Methodology - - This test sequence accesses the CRD server Discovery endpoint at /cds-services using a GET request. - It parses the response and verifies that: - - The Discovery endpoint is TLS secured. - - The Discovery endpoint is available at `{baseURL}/cds-services`. - - Each CDS Service in the response contains the required fields as specified in the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#response). - - It collects the following information that is saved in the testing session for use by later tests: - - List of supported CDS Services/Hooks - - List of service IDs for each supported Hook. - ) - - run_as_group - - test from: :tls_version_test do - title 'CRD Server is secured by transport layer security' - description <<~DESCRIPTION - Under [Privacy, Security, and Safety](https://hl7.org/fhir/us/davinci-crd/STU2/security.html), - the CRD Implementation Guide imposes the following rule about TLS: - - As per the [CDS Hook specification](https://cds-hooks.hl7.org/2.0/#security-and-safety), - communications between CRD Clients and CRD Servers SHALL - use TLS. Mutual TLS is not required by this specification but is permitted. CRD Servers and - CRD Clients SHOULD enforce a minimum version and other TLS configuration requirements based - on HRex rules for PHI exchange. - - This test verifies that the CRD server is using TLS 1.2 or higher. - DESCRIPTION - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@89' - id :crd_server_tls_version_stu2 - - config( - options: { minimum_allowed_version: OpenSSL::SSL::TLS1_2_VERSION }, - inputs: { url: { name: :base_url } } - ) - end - - test from: :crd_discovery_endpoint_test - test from: :crd_discovery_services_validation - end -end diff --git a/lib/davinci_crd_test_kit/server_encounter_discharge_group.rb b/lib/davinci_crd_test_kit/server_encounter_discharge_group.rb deleted file mode 100644 index b6210189..00000000 --- a/lib/davinci_crd_test_kit/server_encounter_discharge_group.rb +++ /dev/null @@ -1,170 +0,0 @@ -require_relative 'server_tests/service_call_test' -require_relative 'server_tests/service_request_required_fields_validation_test' -require_relative 'server_tests/service_request_context_validation_test' -require_relative 'server_tests/service_request_optional_fields_validation_test' -require_relative 'server_tests/service_response_validation_test' -require_relative 'server_tests/card_optional_fields_validation_test' -require_relative 'server_tests/external_reference_card_validation_test' -require_relative 'server_tests/launch_smart_app_card_validation_test' -require_relative 'server_tests/instructions_card_received_test' -require_relative 'server_tests/form_completion_response_validation_test' -require_relative 'server_tests/create_or_update_coverage_info_response_validation_test' -require_relative 'tags' - -module DaVinciCRDTestKit - class ServerEncounterDischargeGroup < Inferno::TestGroup - title 'encounter-discharge' - id :crd_server_encounter_discharge - description %( - This group of tests invokes the encounter-discharge hook and ensures that - the user-provided requests are valid as per the requirements described - in the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) - and the [CDS Hooks specification section on encounter-discharge context](https://cds-hooks.hl7.org/hooks/encounter-discharge/2023SepSTU1Ballot/encounter-discharge/). - It also ensures that the contents of the server's response are valid as per the requirements described in - the [CRD IG section on encounter-discharge hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) - and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). - - This group includes tests to validate the following CRD response types: - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional - - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ - - optional - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional - - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - - optional - - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - - optional - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@196' - - config options: { hook_name: ENCOUNTER_DISCHARGE_TAG } - run_as_group - - test from: :crd_service_call_test, - config: { - inputs: { - service_ids: { - name: :encounter_discharge_service_ids, - title: 'Service id for the service that implements the `encounter-discharge` hook' - }, - service_request_bodies: { - name: :encounter_discharge_request_bodies, - title: 'Request body or bodies for invoking the `encounter-discharge` hook' - } - } - } - test from: :crd_service_request_required_fields_validation, - config: { - outputs: { - contexts: { - name: :encounter_discharge_contexts - } - } - } - test from: :crd_service_request_context_validation, - config: { - inputs: { - contexts: { - name: :encounter_discharge_contexts - } - } - } - test from: :crd_service_request_optional_fields_validation - test from: :crd_service_response_validation, - config: { - outputs: { - valid_cards: { - name: :encounter_discharge_valid_cards - }, - valid_system_actions: { - name: :encounter_discharge_valid_system_actions - } - } - } - test from: :crd_card_optional_fields_validation, - config: { - inputs: { - valid_cards: { - name: :encounter_discharge_valid_cards - } - }, - outputs: { - valid_cards_with_links: { - name: :encounter_discharge_valid_cards_with_links - }, - valid_cards_with_suggestions: { - name: :encounter_discharge_valid_cards_with_suggestions - } - } - } - test from: :crd_external_reference_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :encounter_discharge_valid_cards_with_links - } - } - } - test from: :crd_launch_smart_app_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :encounter_discharge_valid_cards_with_links - } - } - } - test from: :crd_valid_instructions_card_received, - config: { - inputs: { - valid_cards: { - name: :encounter_discharge_valid_cards - } - } - } - test from: :crd_coverage_info_system_action_received, - optional: true, - config: { - inputs: { - valid_system_actions: { - name: :encounter_discharge_valid_system_actions - } - }, - outputs: { - coverage_info: { - name: :encounter_discharge_coverage_info - } - } - } - test from: :crd_coverage_info_system_action_validation, - optional: true, - config: { - inputs: { - coverage_info: { - name: :encounter_discharge_coverage_info - } - } - } - test from: :crd_request_form_completion_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :encounter_discharge_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :encounter_discharge_valid_cards_with_suggestions - } - } - } - test from: :crd_create_or_update_coverage_info_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :encounter_discharge_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :encounter_discharge_valid_cards_with_suggestions - } - } - } - end -end diff --git a/lib/davinci_crd_test_kit/server_encounter_start_group.rb b/lib/davinci_crd_test_kit/server_encounter_start_group.rb deleted file mode 100644 index 416ede67..00000000 --- a/lib/davinci_crd_test_kit/server_encounter_start_group.rb +++ /dev/null @@ -1,170 +0,0 @@ -require_relative 'server_tests/service_call_test' -require_relative 'server_tests/service_request_required_fields_validation_test' -require_relative 'server_tests/service_request_context_validation_test' -require_relative 'server_tests/service_request_optional_fields_validation_test' -require_relative 'server_tests/service_response_validation_test' -require_relative 'server_tests/card_optional_fields_validation_test' -require_relative 'server_tests/external_reference_card_validation_test' -require_relative 'server_tests/launch_smart_app_card_validation_test' -require_relative 'server_tests/instructions_card_received_test' -require_relative 'server_tests/form_completion_response_validation_test' -require_relative 'server_tests/create_or_update_coverage_info_response_validation_test' -require_relative 'tags' - -module DaVinciCRDTestKit - class ServerEncounterStartGroup < Inferno::TestGroup - title 'encounter-start' - id :crd_server_encounter_start - description %( - This group of tests invokes the encounter-start hook and ensures that - the user-provided requests are valid as per the requirements described - in the [CRD IG section on encounter-start hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) - and the [CDS Hooks specification section on encounter-start context](https://cds-hooks.hl7.org/hooks/encounter-start/2023SepSTU1Ballot/encounter-start/). - It also ensures that the contents of the server's response are valid as per the requirements described in - the [CRD IG section on encounter-start hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) - and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). - - This group includes tests to validate the following CRD response types: - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional - - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ - - optional - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional - - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - - optional - - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - - optional - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@185' - - config options: { hook_name: ENCOUNTER_START_TAG } - run_as_group - - test from: :crd_service_call_test, - config: { - inputs: { - service_ids: { - name: :encounter_start_service_ids, - title: 'Service id for the service that implements the `encounter-start` hook' - }, - service_request_bodies: { - name: :encounter_start_request_bodies, - title: 'Request body or bodies for invoking the `encounter-start` hook' - } - } - } - test from: :crd_service_request_required_fields_validation, - config: { - outputs: { - contexts: { - name: :encounter_start_contexts - } - } - } - test from: :crd_service_request_context_validation, - config: { - inputs: { - contexts: { - name: :encounter_start_contexts - } - } - } - test from: :crd_service_request_optional_fields_validation - test from: :crd_service_response_validation, - config: { - outputs: { - valid_cards: { - name: :encounter_start_valid_cards - }, - valid_system_actions: { - name: :encounter_start_valid_system_actions - } - } - } - test from: :crd_card_optional_fields_validation, - config: { - inputs: { - valid_cards: { - name: :encounter_start_valid_cards - } - }, - outputs: { - valid_cards_with_links: { - name: :encounter_start_valid_cards_with_links - }, - valid_cards_with_suggestions: { - name: :encounter_start_valid_cards_with_suggestions - } - } - } - test from: :crd_external_reference_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :encounter_start_valid_cards_with_links - } - } - } - test from: :crd_launch_smart_app_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :encounter_start_valid_cards_with_links - } - } - } - test from: :crd_valid_instructions_card_received, - config: { - inputs: { - valid_cards: { - name: :encounter_start_valid_cards - } - } - } - test from: :crd_coverage_info_system_action_received, - optional: true, - config: { - inputs: { - valid_system_actions: { - name: :encounter_start_valid_system_actions - } - }, - outputs: { - coverage_info: { - name: :encounter_start_coverage_info - } - } - } - test from: :crd_coverage_info_system_action_validation, - optional: true, - config: { - inputs: { - coverage_info: { - name: :encounter_start_coverage_info - } - } - } - test from: :crd_request_form_completion_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :encounter_start_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :encounter_start_valid_cards_with_suggestions - } - } - } - test from: :crd_create_or_update_coverage_info_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :encounter_start_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :encounter_start_valid_cards_with_suggestions - } - } - } - end -end diff --git a/lib/davinci_crd_test_kit/server_hooks_group.rb b/lib/davinci_crd_test_kit/server_hooks_group.rb deleted file mode 100644 index 6ff76991..00000000 --- a/lib/davinci_crd_test_kit/server_hooks_group.rb +++ /dev/null @@ -1,71 +0,0 @@ -require_relative 'server_appointment_book_group' -require_relative 'server_encounter_start_group' -require_relative 'server_encounter_discharge_group' -require_relative 'server_order_select_group' -require_relative 'server_order_dispatch_group' -require_relative 'server_order_sign_group' -require_relative 'server_required_card_response_validation_group' - -module DaVinciCRDTestKit - class ServerHooksGroup < Inferno::TestGroup - title 'Hook Tests' - id :crd_server_hooks - description %( - # Background - - The #{title} Group verifies that a [CRD Server](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-server.html) - supports at least one of the hooks supported by the [CRD IG](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks). - The supported hooks include: - - [appointment-book](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#appointment-book) - - [encounter-start](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-start) - - [encounter-discharge](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#encounter-discharge) - - [order-select](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) - - [order-dispatch](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) - - [order-sign](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) - - The [CRD STU2 IG section on Supported Hooks](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#supported-hooks) - states that "CRD Servers conforming to this implementation guide - SHALL provide a service for all hooks and order resource types required of - CRD clients by this implementation guide unless the server has determined that - the hook will not be reasonably useful in determining coverage or documentation - expectations for the types of coverage provided." - - # Test Methodology - - In these tests, Inferno acts as a [CRD Client](https://hl7.org/fhir/us/davinci-crd/STU2/CapabilityStatement-crd-client.html) - that initiates CDS Hooks calls. This test sequence is broken up into groups, - each group corresponding to a supported hook and defining a set of tests verifying - the ability of the server to respond to the given hook invocation. Additionally, an additional - group checks the required [response types](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types) - across all hooks invoked. - - Each hook group test verifies that: - - The hook can be invoked. - - The user-provided request payload contains the required fields as specified - in the [CDS Hooks section on HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1). - - The user-provided request payload contains the optional fields as specified - in the [CDS Hooks section on HTTP request requirements](https://cds-hooks.hl7.org/2.0/#http-request_1) - - optional. - - Each card and system action returned by the server is valid as described in the - [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). - - Each [CRD response type](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types) - returned is valid - optional for some response types. See the individual test groups for more details. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@4', 'hl7.fhir.us.davinci-crd_2.0.1@152', - 'hl7.fhir.us.davinci-crd_2.0.1@153' - - group from: :crd_server_appointment_book, - optional: true - group from: :crd_server_encounter_start, - optional: true - group from: :crd_server_encounter_discharge, - optional: true - group from: :crd_server_order_select, - optional: true - group from: :crd_server_order_dispatch, - optional: true - group from: :crd_server_order_sign, - optional: true - group from: :crd_server_required_card_response_validation - end -end diff --git a/lib/davinci_crd_test_kit/server_order_dispatch_group.rb b/lib/davinci_crd_test_kit/server_order_dispatch_group.rb deleted file mode 100644 index 9d6aa3c4..00000000 --- a/lib/davinci_crd_test_kit/server_order_dispatch_group.rb +++ /dev/null @@ -1,176 +0,0 @@ -require_relative 'server_tests/service_call_test' -require_relative 'server_tests/service_request_required_fields_validation_test' -require_relative 'server_tests/service_request_context_validation_test' -require_relative 'server_tests/service_request_optional_fields_validation_test' -require_relative 'server_tests/service_response_validation_test' -require_relative 'server_tests/card_optional_fields_validation_test' -require_relative 'server_tests/external_reference_card_validation_test' -require_relative 'server_tests/launch_smart_app_card_validation_test' -require_relative 'server_tests/instructions_card_received_test' -require_relative 'server_tests/coverage_information_system_action_received_test' -require_relative 'server_tests/coverage_information_system_action_validation_test' -require_relative 'server_tests/form_completion_response_validation_test' -require_relative 'server_tests/create_or_update_coverage_info_response_validation_test' -require_relative 'tags' - -module DaVinciCRDTestKit - class ServerOrderDispatchGroup < Inferno::TestGroup - title 'order-dispatch' - id :crd_server_order_dispatch - description %( - This group of tests invokes the order-dispatch hook and ensures that - the user-provided requests are valid as per the requirements described - in the [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) - and the [CDS Hooks specification section on order-dispatch context](https://cds-hooks.hl7.org/hooks/order-dispatch/2023SepSTU1Ballot/order-dispatch/). - It also ensures that the contents of the server's response are valid as per the requirements described in - the [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) - and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). - - The [CRD IG section on order-dispatch hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-dispatch) - states that "servers SHALL, at minimum, support returning and processing the Coverage Information - system action for all invocations of this hook." - - This group includes tests to validate the following CRD response types: - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ - - optional - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional - - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - - optional - - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - - optional - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', - 'hl7.fhir.us.davinci-crd_2.0.1@204', 'hl7.fhir.us.davinci-crd_2.0.1@207' - - config options: { hook_name: ORDER_DISPATCH_TAG } - run_as_group - - test from: :crd_service_call_test, - config: { - inputs: { - service_ids: { - name: :order_dispatch_service_ids, - title: 'Service id for the service that implements the `order-dispatch` hook' - }, - service_request_bodies: { - name: :order_dispatch_request_bodies, - title: 'Request body or bodies for invoking the `order-dispatch` hook' - } - } - } - - test from: :crd_service_request_required_fields_validation, - config: { - outputs: { - contexts: { - name: :order_dispatch_contexts - } - } - } - test from: :crd_service_request_context_validation, - config: { - inputs: { - contexts: { - name: :order_dispatch_contexts - } - } - } - test from: :crd_service_request_optional_fields_validation - test from: :crd_service_response_validation, - config: { - outputs: { - valid_cards: { - name: :order_dispatch_valid_cards - }, - valid_system_actions: { - name: :order_dispatch_valid_system_actions - } - } - } - test from: :crd_card_optional_fields_validation, - config: { - inputs: { - valid_cards: { - name: :order_dispatch_valid_cards - } - }, - outputs: { - valid_cards_with_links: { - name: :order_dispatch_valid_cards_with_links - }, - valid_cards_with_suggestions: { - name: :order_dispatch_valid_cards_with_suggestions - } - } - } - test from: :crd_external_reference_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :order_dispatch_valid_cards_with_links - } - } - } - test from: :crd_launch_smart_app_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :order_dispatch_valid_cards_with_links - } - } - } - test from: :crd_valid_instructions_card_received, - config: { - inputs: { - valid_cards: { - name: :order_dispatch_valid_cards - } - } - } - test from: :crd_coverage_info_system_action_received, - config: { - inputs: { - valid_system_actions: { - name: :order_dispatch_valid_system_actions - } - }, - outputs: { - coverage_info: { - name: :order_dispatch_coverage_info - } - } - } - test from: :crd_coverage_info_system_action_validation, - config: { - inputs: { - coverage_info: { - name: :order_dispatch_coverage_info - } - } - } - test from: :crd_request_form_completion_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :order_dispatch_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :order_dispatch_valid_cards_with_suggestions - } - } - } - test from: :crd_create_or_update_coverage_info_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :order_dispatch_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :order_dispatch_valid_cards_with_suggestions - } - } - } - end -end diff --git a/lib/davinci_crd_test_kit/server_order_select_group.rb b/lib/davinci_crd_test_kit/server_order_select_group.rb deleted file mode 100644 index faa11e9f..00000000 --- a/lib/davinci_crd_test_kit/server_order_select_group.rb +++ /dev/null @@ -1,195 +0,0 @@ -require_relative 'server_tests/service_call_test' -require_relative 'server_tests/service_request_required_fields_validation_test' -require_relative 'server_tests/service_request_context_validation_test' -require_relative 'server_tests/service_request_optional_fields_validation_test' -require_relative 'server_tests/service_response_validation_test' -require_relative 'server_tests/card_optional_fields_validation_test' -require_relative 'server_tests/external_reference_card_validation_test' -require_relative 'server_tests/launch_smart_app_card_validation_test' -require_relative 'server_tests/instructions_card_received_test' -require_relative 'server_tests/propose_alternate_request_card_validation_test' -require_relative 'server_tests/additional_orders_validation_test' -require_relative 'server_tests/form_completion_response_validation_test' -require_relative 'server_tests/create_or_update_coverage_info_response_validation_test' -require_relative 'tags' - -module DaVinciCRDTestKit - class ServerOrderSelectGroup < Inferno::TestGroup - title 'order-select' - id :crd_server_order_select - description %( - This group of tests invokes the order-select hook and ensures that - the user-provided requests are valid as per the requirements described - in the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) - and the [CDS Hooks specification section on order-select context](https://cds-hooks.hl7.org/hooks/order-select/2023SepSTU1Ballot/order-select/). - It also ensures that the contents of the server's response are valid as per the requirements described in - the [CRD IG section on order-select hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-select) - and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). - - This group includes tests to validate the following CRD response types: - - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\ - - optional - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - optional - - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ - - optional - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional - - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - - optional - - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - - optional - - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - - optional - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@168', 'hl7.fhir.us.davinci-crd_2.0.1@208' - - config options: { hook_name: ORDER_SELECT_TAG } - run_as_group - - test from: :crd_service_call_test, - config: { - inputs: { - service_ids: { - name: :order_select_service_ids, - title: 'Service id for the service that implements the `order-select` hook' - }, - service_request_bodies: { - name: :order_select_request_bodies, - title: 'Request body or bodies for invoking the `order-select` hook' - } - } - } - test from: :crd_service_request_required_fields_validation, - config: { - outputs: { - contexts: { - name: :order_select_contexts - } - } - } - test from: :crd_service_request_context_validation, - config: { - inputs: { - contexts: { - name: :order_select_contexts - } - } - } - test from: :crd_service_request_optional_fields_validation - test from: :crd_service_response_validation, - config: { - outputs: { - valid_cards: { - name: :order_select_valid_cards - }, - valid_system_actions: { - name: :order_select_valid_system_actions - } - } - } - test from: :crd_card_optional_fields_validation, - config: { - inputs: { - valid_cards: { - name: :order_select_valid_cards - } - }, - outputs: { - valid_cards_with_links: { - name: :order_select_valid_cards_with_links - }, - valid_cards_with_suggestions: { - name: :order_select_valid_cards_with_suggestions - } - } - } - test from: :crd_external_reference_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :order_select_valid_cards_with_links - } - } - } - test from: :crd_launch_smart_app_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :order_select_valid_cards_with_links - } - } - } - test from: :crd_valid_instructions_card_received, - config: { - inputs: { - valid_cards: { - name: :order_select_valid_cards - } - } - } - test from: :crd_coverage_info_system_action_received, - optional: true, - config: { - inputs: { - valid_system_actions: { - name: :order_select_valid_system_actions - } - }, - outputs: { - coverage_info: { - name: :order_select_coverage_info - } - } - } - test from: :crd_coverage_info_system_action_validation, - optional: true, - config: { - inputs: { - coverage_info: { - name: :order_select_coverage_info - } - } - } - test from: :crd_propose_alternate_request_card_validation, - config: { - inputs: { - valid_cards_with_suggestions: { - name: :order_select_valid_cards_with_suggestions - }, - contexts: { - name: :order_select_contexts - } - } - } - test from: :crd_additional_orders_card_validation, - config: { - inputs: { - valid_cards_with_suggestions: { - name: :order_select_valid_cards_with_suggestions - } - } - } - test from: :crd_request_form_completion_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :order_select_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :order_select_valid_cards_with_suggestions - } - } - } - test from: :crd_create_or_update_coverage_info_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :order_select_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :order_select_valid_cards_with_suggestions - } - } - } - end -end diff --git a/lib/davinci_crd_test_kit/server_order_sign_group.rb b/lib/davinci_crd_test_kit/server_order_sign_group.rb deleted file mode 100644 index 5f58c59e..00000000 --- a/lib/davinci_crd_test_kit/server_order_sign_group.rb +++ /dev/null @@ -1,201 +0,0 @@ -require_relative 'server_tests/service_call_test' -require_relative 'server_tests/service_request_required_fields_validation_test' -require_relative 'server_tests/service_request_context_validation_test' -require_relative 'server_tests/service_request_optional_fields_validation_test' -require_relative 'server_tests/service_response_validation_test' -require_relative 'server_tests/card_optional_fields_validation_test' -require_relative 'server_tests/external_reference_card_validation_test' -require_relative 'server_tests/launch_smart_app_card_validation_test' -require_relative 'server_tests/instructions_card_received_test' -require_relative 'server_tests/coverage_information_system_action_received_test' -require_relative 'server_tests/coverage_information_system_action_validation_test' -require_relative 'server_tests/propose_alternate_request_card_validation_test' -require_relative 'server_tests/additional_orders_validation_test' -require_relative 'server_tests/form_completion_response_validation_test' -require_relative 'server_tests/create_or_update_coverage_info_response_validation_test' -require_relative 'tags' - -module DaVinciCRDTestKit - class ServerOrderSignGroup < Inferno::TestGroup - title 'order-sign' - id :crd_server_order_sign - description %( - This group of tests invokes the order-sign hook and ensures that - the user-provided requests are valid as per the requirements described - in the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) - and the [CDS Hooks specification section on order-sign context](https://cds-hooks.hl7.org/hooks/order-sign/2023SepSTU1Ballot/order-sign/). - It also ensures that the contents of the server's response are valid as per the requirements described in - the [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) - and the [CDS Hooks section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response). - - The [CRD IG section on order-sign hook](https://hl7.org/fhir/us/davinci-crd/STU2/hooks.html#order-sign) - states that "servers SHALL, at minimum, support returning and processing the Coverage Information - system action for all invocations of this hook." - - This group includes tests to validate the following CRD response types: - - [additional orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order)\ - - optional - - [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - - [Create or update coverage information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information)\ - - optional - - [External Reference](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference) - optional - - [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - optional - - [Launch SMART application](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application) - - optional - - [Propose alternate request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - - optional - - [Request form completion](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion) - - optional - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@164', 'hl7.fhir.us.davinci-crd_2.0.1@168', - 'hl7.fhir.us.davinci-crd_2.0.1@217', 'hl7.fhir.us.davinci-crd_2.0.1@226' - - config options: { hook_name: ORDER_SIGN_TAG } - run_as_group - - test from: :crd_service_call_test, - config: { - inputs: { - service_ids: { - name: :order_sign_service_ids, - title: 'Service id for the service that implements the `order-sign` hook' - }, - service_request_bodies: { - name: :order_sign_request_bodies, - title: 'Request body or bodies for invoking the `order-sign` hook' - } - } - } - - test from: :crd_service_request_required_fields_validation, - config: { - outputs: { - contexts: { - name: :order_sign_contexts - } - } - } - test from: :crd_service_request_context_validation, - config: { - inputs: { - contexts: { - name: :order_sign_contexts - } - } - } - test from: :crd_service_request_optional_fields_validation - test from: :crd_service_response_validation, - config: { - outputs: { - valid_cards: { - name: :order_sign_valid_cards - }, - valid_system_actions: { - name: :order_sign_valid_system_actions - } - } - } - test from: :crd_card_optional_fields_validation, - config: { - inputs: { - valid_cards: { - name: :order_sign_valid_cards - } - }, - outputs: { - valid_cards_with_links: { - name: :order_sign_valid_cards_with_links - }, - valid_cards_with_suggestions: { - name: :order_sign_valid_cards_with_suggestions - } - } - } - test from: :crd_external_reference_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :order_sign_valid_cards_with_links - } - } - } - test from: :crd_launch_smart_app_card_validation, - config: { - inputs: { - valid_cards_with_links: { - name: :order_sign_valid_cards_with_links - } - } - } - test from: :crd_valid_instructions_card_received, - config: { - inputs: { - valid_cards: { - name: :order_sign_valid_cards - } - } - } - test from: :crd_coverage_info_system_action_received, - config: { - inputs: { - valid_system_actions: { - name: :order_sign_valid_system_actions - } - }, - outputs: { - coverage_info: { - name: :order_sign_coverage_info - } - } - } - test from: :crd_coverage_info_system_action_validation, - config: { - inputs: { - coverage_info: { - name: :order_sign_coverage_info - } - } - } - test from: :crd_propose_alternate_request_card_validation, - config: { - inputs: { - valid_cards_with_suggestions: { - name: :order_sign_valid_cards_with_suggestions - }, - contexts: { - name: :order_sign_contexts - } - } - } - test from: :crd_additional_orders_card_validation, - config: { - inputs: { - valid_cards_with_suggestions: { - name: :order_sign_valid_cards_with_suggestions - } - } - } - test from: :crd_request_form_completion_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :order_sign_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :order_sign_valid_cards_with_suggestions - } - } - } - test from: :crd_create_or_update_coverage_info_response_validation, - config: { - inputs: { - valid_system_actions: { - name: :order_sign_valid_system_actions - }, - valid_cards_with_suggestions: { - name: :order_sign_valid_cards_with_suggestions - } - } - } - end -end diff --git a/lib/davinci_crd_test_kit/server_required_card_response_validation_group.rb b/lib/davinci_crd_test_kit/server_required_card_response_validation_group.rb deleted file mode 100644 index 811321f2..00000000 --- a/lib/davinci_crd_test_kit/server_required_card_response_validation_group.rb +++ /dev/null @@ -1,26 +0,0 @@ -require_relative 'server_tests/external_reference_card_across_hooks_validation_test' -require_relative 'server_tests/instructions_card_received_across_hooks_test' -require_relative 'server_tests/coverage_information_system_action_across_hooks_validation_test' - -module DaVinciCRDTestKit - class ServerRequiredCardResponseValidationGroup < Inferno::TestGroup - title 'Required Card Response Validation' - description %( - This group contains tests to verify the presence and validity of required response types - across all hooks invoked. As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#potential-crd-response-types), - CRD Servers SHALL, at minimum, demonstrate an ability to return the following response types: - - Coverage Information System Action - - External Reference Card - - Instructions Card - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@247', 'hl7.fhir.us.davinci-crd_2.0.1@248', - 'hl7.fhir.us.davinci-crd_2.0.1@249' - - id :crd_server_required_card_response_validation - run_as_group - - test from: :crd_external_reference_card_across_hooks_validation - test from: :crd_valid_instructions_card_received_across_hooks - test from: :crd_coverage_info_system_action_across_hooks_validation - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/additional_orders_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/additional_orders_validation_test.rb deleted file mode 100644 index 04f97a00..00000000 --- a/lib/davinci_crd_test_kit/server_tests/additional_orders_validation_test.rb +++ /dev/null @@ -1,57 +0,0 @@ -require_relative '../test_helper' -require_relative '../server_hook_helper' -require_relative '../suggestion_actions_validation' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class AdditionalOrdersValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::SuggestionActionsValidation - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Valid Additional Orders as companions/prerequisites cards received' - id :crd_additional_orders_card_validation - description %( - This test validates that an [Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order) - card was received. It does so by: - - Filtering cards with the following criteria: - - For each suggestion in the card's suggestions array, all actions have a type of 'create' - and the action's resource type is one of the expected types: CommunicationRequest, Device, - DeviceRequest, Medication, MedicationRequest, NutritionOrder, ServiceRequest, or VisionPrescription. - - Then, for each valid Additional Orders card retrieved, verifying that each action within the - card's suggestions complies with their respective profiles as specified in the - [CRD IG section on Additional Orders as companions/prerequisites](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#identify-additional-orders-as-companionsprerequisites-for-current-order): - - [crd-profile-communicationrequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-communicationrequest.html) - - [crd-profile-device](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-device.html) - - [crd-profile-deviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-devicerequest.html) - - [us-core-medication](http://hl7.org/fhir/us/core/STU3.1.1/StructureDefinition-us-core-medication.html) - - [crd-profile-medicationRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-medicationrequest.html) - - [crd-profile-nutritionOrder](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-nutritionorder.html) - - [crd-profile-serviceRequest](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-servicerequest.html) - - [crd-profile-visionPrescription](https://hl7.org/fhir/us/davinci-crd/STU2/StructureDefinition-profile-visionprescription.html). - - The test will skip if no Additional Orders cards are found. - ) - - optional - input :valid_cards_with_suggestions - - run do - parsed_cards = parse_json(valid_cards_with_suggestions) - additional_orders_cards = parsed_cards.filter do |card| - additional_orders_response_type?(card) - end - skip_if additional_orders_cards.blank?, - "#{tested_hook_name} hook response does not include Additional Orders as companion/prerequisite cards." - - additional_orders_cards.each do |card| - card['suggestions'].each do |suggestion| - actions_check(suggestion['actions']) - end - end - - no_error_validation('Some companions/prerequisites Additional Order cards are not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/card_optional_fields_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/card_optional_fields_validation_test.rb deleted file mode 100644 index cb2fd58d..00000000 --- a/lib/davinci_crd_test_kit/server_tests/card_optional_fields_validation_test.rb +++ /dev/null @@ -1,47 +0,0 @@ -require_relative '../test_helper' -require_relative '../cards_validation' - -module DaVinciCRDTestKit - class CardOptionalFieldsValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::CardsValidation - - title 'Cards contain valid optional fields' - id :crd_card_optional_fields_validation - description %( - This test checks for the presence and validity of optional fields in a card, - but only if the card's required fields are valid. As specified in the - [CDS Hooks specification section on Card Attributes](https://cds-hooks.hl7.org/2.0/#card-attributes), - the optional fields include `uuid`, `detail`, `suggestions`, `overrideReasons`, and `links`. - - Additionally, the test validates the presence of the conditional field `selectionBehavior` - only if the `suggestions` field is present. - ) - optional - input :valid_cards - output :valid_cards_with_links, :valid_cards_with_suggestions - - def cards_with_suggestions - @cards_with_suggestions ||= [] - end - - def cards_with_links - @cards_with_links ||= [] - end - - run do - parsed_cards = parse_json(valid_cards) - parsed_cards.each do |card| - if valid_card_with_optionals?(card) - cards_with_links << card if card['links'] - cards_with_suggestions << card if card['suggestions'] - end - end - - output valid_cards_with_links: cards_with_links.to_json - output valid_cards_with_suggestions: cards_with_suggestions.to_json - - no_error_validation('Some cards with valid required fields have invalid optional fields.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_across_hooks_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_across_hooks_validation_test.rb deleted file mode 100644 index 4b063d68..00000000 --- a/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_across_hooks_validation_test.rb +++ /dev/null @@ -1,32 +0,0 @@ -require_relative '../test_helper' - -module DaVinciCRDTestKit - class CoverageInformationSystemActionAcrossHooksValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - - title 'Valid Coverage Information system actions received across all hooks' - id :crd_coverage_info_system_action_across_hooks_validation - description %( - This test verifies the presence of valid [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - system action returned by CRD services across all hooks invoked. It verifies the following for each action: - - The action type is `update`. - - The resource within the action conforms its respective FHIR profile. - - Additionally, the test examines the `coverage-info` extensions within the resource to ensure that: - - Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids` - (if present). - - Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids` - (if present). - - The test will be skipped if no valid Coverage Information system actions are returned across all hooks. - ) - - run do - verify_at_least_one_test_passes( - self.class.parent.parent.groups, - 'crd_coverage_info_system_action_validation', - 'None of the hooks invoked returned valid Coverage Info system actions.' - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_received_test.rb b/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_received_test.rb deleted file mode 100644 index d5ea4405..00000000 --- a/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_received_test.rb +++ /dev/null @@ -1,63 +0,0 @@ -require_relative '../test_helper' -require_relative '../server_hook_helper' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class CoverageInformationSystemActionReceivedTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Coverage Information system action was received' - id :crd_coverage_info_system_action_received - description %( - This test validates that a [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - system action was returned. It does so by: - - First checking for the presence of actions with a `resource` element of the following types: - - For `appointment-book`: Appointment - - For `order-sign` or `order-dispatch`: DeviceRequest, MedicationRequest, NutritionOrder, - ServiceRequest, or VisionPrescription - - Then, among the target actions, checking if their resource has the [coverage-information extension](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information). - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@272', 'hl7.fhir.us.davinci-crd_2.0.1@273', - 'hl7.fhir.us.davinci-crd_2.0.1@274', 'hl7.fhir.us.davinci-crd_2.0.1@275', - 'hl7.fhir.us.davinci-crd_2.0.1@276', 'hl7.fhir.us.davinci-crd_2.0.1@277' - - input :valid_system_actions, :invoked_hook - output :coverage_info - - def resources_by_hook - shared_resources = [ - 'DeviceRequest', 'MedicationRequest', 'NutritionOrder', - 'ServiceRequest', 'VisionPrescription' - ] - { - 'appointment-book' => ['Appointment'], - 'order-sign' => shared_resources, - 'order-dispatch' => shared_resources, - 'order-select' => shared_resources, - 'encounter-start' => ['Encounter'], - 'encounter-discharge' => ['Encounter'] - } - end - - run do - parsed_actions = parse_json(valid_system_actions) - target_resources = resources_by_hook[invoked_hook] - - target_actions = parsed_actions.select do |action| - resource = FHIR.from_contents(action['resource'].to_json) - target_resources.include?(resource&.resourceType) - end - - coverage_info_system_actions = target_actions.select do |action| - coverage_information_response_type?(action) - end - - assert coverage_info_system_actions.present?, - "Coverage Information system action was not returned in the #{tested_hook_name} hook response." - - output coverage_info: coverage_info_system_actions.to_json - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_validation_test.rb deleted file mode 100644 index db133a93..00000000 --- a/lib/davinci_crd_test_kit/server_tests/coverage_information_system_action_validation_test.rb +++ /dev/null @@ -1,118 +0,0 @@ -require_relative '../server_hook_request_validation' -require_relative '../test_helper' - -module DaVinciCRDTestKit - class CoverageInformationSystemActionValidationTest < Inferno::Test - include DaVinciCRDTestKit::ServerHookRequestValidation - include DaVinciCRDTestKit::TestHelper - - title 'All Coverage Information system actions received are valid' - id :crd_coverage_info_system_action_validation - description %( - This test validates all [Coverage Information](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#coverage-information) - system actions received. It verifies the following for each action: - - The action type is `update`. - - The resource within the action conforms its respective FHIR profile. - - Additionally, the test examines the `coverage-info` extensions within the resource to ensure that: - - Entries referencing differing coverage have distinct `coverage-assertion-ids` and `satisfied-pa-ids` - (if present). - - Entries referencing the same coverage have the same `coverage-assertion-ids` and `satisfied-pa-ids` - (if present). - ) - input :coverage_info - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@264', 'hl7.fhir.us.davinci-crd_2.0.1@265' - - def find_extension_value(extension, url, *properties) - found_extension = extension.extension.find { |ext| ext.url == url } - return nil unless found_extension - - properties.reduce(found_extension) do |current, prop| - return current unless current.respond_to?(prop) - - current.send(prop) - end - end - - def extract_and_group_coverage_info(resource) - resource.extension.each_with_object({}) do |extension, grouped_extensions| - next unless extension.url == 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' - - coverage_key = find_extension_value(extension, 'coverage', 'valueReference', 'reference') - grouped_extensions[coverage_key] ||= [] - grouped_extensions[coverage_key] << extension - end - end - - # For the same coverage, ensure coverage-assertion-ids and satisfied-pa-ids are the same. - # For different coverages, ensure coverage-assertion-ids and satisfied-pa-ids are distinct. - def multiple_extensions_conformance_check(grouped_coverage_info, resource) - resource_ref = "#{resource.resourceType}/#{resource.id}" - assertion_ids_across_coverages = Set.new - pa_ids_across_coverages = Set.new - - grouped_coverage_info.each do |coverage, extensions| - coverage_assertion_ids = collect_extensions_id(extensions, 'coverage-assertion-id', 'valueString').uniq - satisfied_pa_ids = collect_extensions_id(extensions, 'satisfied-pa-id', 'valueString').uniq.compact - assert coverage_assertion_ids.length == 1, - same_coverage_conformance_error_msg(resource_ref, coverage, 'coverage-assertion-ids') - - assert satisfied_pa_ids.length <= 1, - same_coverage_conformance_error_msg(resource_ref, coverage, 'satisfied-pa-ids') - - assertion_id = coverage_assertion_ids.first - assert !assertion_ids_across_coverages.include?(assertion_id), - different_coverage_conformance_error_msg(resource_ref, 'coverage-assertion-ids') - assertion_ids_across_coverages.add(assertion_id) - pa_id = satisfied_pa_ids.first - next unless pa_id - - assert !pa_ids_across_coverages.include?(pa_id), - different_coverage_conformance_error_msg(resource_ref, 'satisfied-pa-ids') - pa_ids_across_coverages.add(pa_id) - end - end - - def collect_extensions_id(extensions, url, *properties) - extensions.map do |extension| - find_extension_value(extension, url, *properties) - end - end - - def same_coverage_conformance_error_msg(resource_ref, coverage, id_name) - "#{resource_ref}: extension has multiple repetitions of coverage `#{coverage}` with different #{id_name}." - end - - def different_coverage_conformance_error_msg(resource_ref, id_name) - "#{resource_ref}: extensions referencing differing coverage SHALL have distinct #{id_name}." - end - - def coverage_info_system_action_check(coverage_info_system_action) - type = coverage_info_system_action['type'] - assert type, '`type` field is missing.' - assert type == 'update', "`type` must be `update`, but was `#{type}`" - - resource = FHIR.from_contents(coverage_info_system_action['resource'].to_json) - profile_url = structure_definition_map[resource.resourceType] - assert_valid_resource(resource:, profile_url:) - - grouped_coverage_info = extract_and_group_coverage_info(resource) - multiple_extensions_conformance_check(grouped_coverage_info, resource) - end - - run do - parsed_coverage_info = parse_json(coverage_info) - error_messages = [] - parsed_coverage_info.each do |action| - coverage_info_system_action_check(action) - rescue Inferno::Exceptions::AssertionException => e - error_messages << "Coverage Info system action `#{action}`: #{e.message}" - end - - error_messages.each do |msg| - messages << { type: 'error', message: msg } - end - assert error_messages.empty?, 'Some Coverage Info system actions are not valid.' - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/create_or_update_coverage_info_response_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/create_or_update_coverage_info_response_validation_test.rb deleted file mode 100644 index d1f837b4..00000000 --- a/lib/davinci_crd_test_kit/server_tests/create_or_update_coverage_info_response_validation_test.rb +++ /dev/null @@ -1,65 +0,0 @@ -require_relative '../test_helper' -require_relative '../suggestion_actions_validation' -require_relative '../server_hook_helper' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class CreateOrUpdateCoverageInfoResponseValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::SuggestionActionsValidation - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Valid Create or Update Coverage Information cards or system actions received' - id :crd_create_or_update_coverage_info_response_validation - description %( - This test validates the Create or Update Coverage Information cards or system actions received from the - CRD service, as per the specifications outlined in the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#create-or-update-coverage-information). - - - **Checking for Presence:** - The test first checks if any Create or Update Coverage Information cards or system actions are present in - the returned valid cards or valid system actions. - - **For cards**: it ensures there are cards with a `suggestions` array containing a single suggestion, - and the `actions` array of that suggestion has one `create` or `update` action for the `Coverage` resource. - - **For system actions**: it checks for the presence of `create` or `update` actions for the `Coverage` - resource. - - - **Validating:** - If any Create or Update Coverage Information cards or system actions are found, each `Coverage` resource is - validated against the base FHIR Coverage resource. - - If no Create or Update Coverage Information cards or system actions are received, the test is skipped. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@306' - optional - input :valid_cards_with_suggestions, :valid_system_actions - - run do - parsed_cards = parse_json(valid_cards_with_suggestions) - parsed_actions = parse_json(valid_system_actions) - - create_or_update_coverage_info_cards = parsed_cards.select do |card| - create_or_update_coverage_card_response_type?(card) - end - create_or_update_coverage_info_actions = parsed_actions.select do |action| - create_or_update_coverage_action_response_type?(action) - end - - skip_msg = "#{tested_hook_name} hook response does not contain any Create or Update Coverage Information " \ - 'cards or system actions.' - skip_if create_or_update_coverage_info_cards.blank? && create_or_update_coverage_info_actions.blank?, skip_msg - - actions_check(create_or_update_coverage_info_actions) if create_or_update_coverage_info_actions.present? - - if create_or_update_coverage_info_cards.present? - create_or_update_coverage_info_cards.each do |card| - actions_check(card['suggestions'].first['actions'].select do |action| - create_or_update_coverage_action_response_type?(action) - end) - end - end - - no_error_validation('Some Create or Update Coverage Information received are not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/discovery_endpoint_test.rb b/lib/davinci_crd_test_kit/server_tests/discovery_endpoint_test.rb deleted file mode 100644 index a6b66491..00000000 --- a/lib/davinci_crd_test_kit/server_tests/discovery_endpoint_test.rb +++ /dev/null @@ -1,88 +0,0 @@ -module DaVinciCRDTestKit - class DiscoveryEndpointTest < Inferno::Test - title 'Server returns a discovery response' - id :crd_discovery_endpoint_test - description %( - A CDS Service provider must expose its discovery endpoint at `{baseURL}/cds-services` - as specified in the [CDS Hooks Specification](https://cds-hooks.hl7.org/2.0/#discovery). - - This test checks that the server responds to a GET request at the following endpoint: - - `GET {baseURL}/cds-services` - - It does this by checking that the server responds with an HTTP OK 200 status code - and that the body of the response is a valid JSON object. This test does not - inspect the structure and content of the response body to see if it contains the required information. - It only checks to see if the RESTful interaction is supported and returns a valid JSON object. - ) - - input_order :base_url, :authentication_required, :encryption_method, :jwks_kid - input :base_url - input :authentication_required, - title: 'Discovery endpoint requires authentication?', - type: 'radio', - default: 'no', - options: { - list_options: [ - { - label: 'No', - value: 'no' - }, - { - label: 'Yes', - value: 'yes' - } - ] - } - input :encryption_method, - title: 'JWT Signing Algorithm', - description: <<~DESCRIPTION, - CDS Hooks recommends ES384 and RS384 for JWT signature verification. - Select which method to use. - DESCRIPTION - type: 'radio', - default: 'ES384', - options: { - list_options: [ - { - label: 'ES384', - value: 'ES384' - }, - { - label: 'RS384', - value: 'RS384' - } - ] - } - input :jwks_kid, - title: 'CDS Services JWKS kid', - description: <<~DESCRIPTION, - The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint - requiring authentication. - Defaults to the first JWK in the list if no kid is supplied. - DESCRIPTION - optional: true - output :cds_services - - run do - discovery_url = "#{base_url.chomp('/')}/cds-services" - headers = { 'Accept' => 'application/json' } - - if authentication_required == 'yes' - token = JwtHelper.build( - aud: discovery_url, - iss: inferno_base_url, - jku: "#{inferno_base_url}/jwks.json", - kid: jwks_kid, - encryption_method: - ) - headers['Authorization'] = "Bearer #{token}" - end - get(discovery_url, headers:, tags: [DISCOVERY_TAG]) - assert_response_status(200) - assert_valid_json(request.response_body) - - output cds_services: request.response_body - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/discovery_services_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/discovery_services_validation_test.rb deleted file mode 100644 index baa3be02..00000000 --- a/lib/davinci_crd_test_kit/server_tests/discovery_services_validation_test.rb +++ /dev/null @@ -1,65 +0,0 @@ -require_relative '../test_helper' - -module DaVinciCRDTestKit - class DiscoveryServicesValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - - title 'Discovery response contains valid services' - id :crd_discovery_services_validation - description %( - As per the [CDS Hooks Spec](https://cds-hooks.hl7.org/2.0/#response), - the response to the discovery endpoint SHALL be an object containing - a list of CDS services. If your CDS server hosts no CDS services, - the discovery endpoint should return a 200 HTTP response with - an empty array of services. - - Each CDS service must contain the following required fields: - `hook`, `description`, and `id`. - - This test checks for the presence of the required fields and - validates that they are of the correct type. - - The test will be skipped if the server hosts no CDS services. - ) - - input :cds_services - output :appointment_book_service_ids, :encounter_start_service_ids, :encounter_discharge_service_ids, - :order_dispatch_service_ids, :order_select_service_ids, :order_sign_service_ids - - def required_fields - { - 'hook' => String, - 'description' => String, - 'id' => String - } - end - - run do - object = parse_json(cds_services) - assert object['services'], 'Discovery response did not contain `services`' - - services = object['services'] - assert services.is_a?(Array), 'Services field of the CDS Discovery response object is not an array.' - skip_if services.empty?, 'Server hosts no CDS Services.' - - service_hooks_to_ids = services.each_with_object({}) do |service, hash| - hash[service['hook']] ||= [] - hash[service['hook']] << service['id'] if service['id'] - end - - output appointment_book_service_ids: service_hooks_to_ids['appointment-book']&.join(', '), - encounter_start_service_ids: service_hooks_to_ids['encounter-start']&.join(', '), - encounter_discharge_service_ids: service_hooks_to_ids['encounter-discharge']&.join(', '), - order_dispatch_service_ids: service_hooks_to_ids['order-dispatch']&.join(', '), - order_select_service_ids: service_hooks_to_ids['order-select']&.join(', '), - order_sign_service_ids: service_hooks_to_ids['order-sign']&.join(', ') - - services.each do |service| - required_fields.each do |field, type| - assert(service[field], "Service `#{service}` did not contain required field: `#{field}`") - assert(service[field].is_a?(type), "Service `#{service}`: field `#{field}` is not of type #{type}") - end - end - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/external_reference_card_across_hooks_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/external_reference_card_across_hooks_validation_test.rb deleted file mode 100644 index ef3807de..00000000 --- a/lib/davinci_crd_test_kit/server_tests/external_reference_card_across_hooks_validation_test.rb +++ /dev/null @@ -1,28 +0,0 @@ -require_relative '../test_helper' - -module DaVinciCRDTestKit - class ExternalReferenceCardAcrossHooksValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - - title 'Valid External Reference cards received across all hooks' - id :crd_external_reference_card_across_hooks_validation - description %( - This test verifies the presence of valid External Reference returned by CRD services across all hooks invoked. - As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference), - External Reference cards must contain links with the type set to `absolute`. - This test checks for the presence of any External Reference cards by verifying: - - The presence of a `links` array within each card. - - That every link in the `links` array of a card is of type `absolute`. - - The test will be skipped if no valid External Reference cards are returned across all hooks. - ) - - run do - verify_at_least_one_test_passes( - self.class.parent.parent.groups, - 'crd_external_reference_card_validation', - 'None of the hooks invoked returned an External Reference card.' - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/external_reference_card_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/external_reference_card_validation_test.rb deleted file mode 100644 index 3911769f..00000000 --- a/lib/davinci_crd_test_kit/server_tests/external_reference_card_validation_test.rb +++ /dev/null @@ -1,35 +0,0 @@ -require_relative '../test_helper' -require_relative '../server_hook_helper' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class ExternalReferenceCardValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Valid External Reference cards received' - id :crd_external_reference_card_validation - description %( - This test verifies the presence of valid External Reference cards within the list of valid cards - returned by the CRD service. - As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#external-reference), - External Reference cards must contain links with the type set to `absolute`. - This test checks for the presence of any External Reference cards by verifying: - - The presence of a `links` array within each card. - - That every link in the `links` array of a card is of type `absolute`. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@258', 'hl7.fhir.us.davinci-crd_2.0.1@259' - - input :valid_cards_with_links - optional - - run do - parsed_cards = parse_json(valid_cards_with_links) - external_reference_cards = parsed_cards.select { |card| external_reference_response_type?(card) } - - assert external_reference_cards.present?, - "#{tested_hook_name} hook response did not contain an External Reference card." - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/form_completion_response_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/form_completion_response_validation_test.rb deleted file mode 100644 index dbc23b2a..00000000 --- a/lib/davinci_crd_test_kit/server_tests/form_completion_response_validation_test.rb +++ /dev/null @@ -1,62 +0,0 @@ -require_relative '../test_helper' -require_relative '../suggestion_actions_validation' -require_relative '../server_hook_helper' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class FormCompletionResponseValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::SuggestionActionsValidation - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Valid Request Form Completion cards or system actions received' - id :crd_request_form_completion_response_validation - description %( - This test validates the Request Form Completion cards or system actions received from the CRD service, - as per the specifications outlined in the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#request-form-completion). - - - **Checking for Presence:** - The test begins by verifying whether any Request Form Completion cards or system actions are present. - - **For cards:** It ensures that there are cards with `suggestions` containing `create` actions - for the `Task` resource, specifically: - - The `Task` must have a `code` of `complete-questionnaire`. - - The `Task` should include an input of type `text` (`Task.input.type.text`) labeled as `questionnaire` - and associated with a valid canonical URL (`Task.input.valueCanonical`). - - **For system actions:** It checks for the presence of `create` actions for the `Task` resource with - the characteristics described above. - - - **Validating:** - If any Request Form Completion cards or system actions are found, the test proceeds to validate them. - Each `Task` resource is validated against the [CRD Questionnaire Task profile](http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-taskquestionnaire). - - If no Request Form Completion cards or system actions are received, the test is skipped. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@299' - optional - input :valid_cards_with_suggestions, :valid_system_actions - - run do - parsed_cards = parse_json(valid_cards_with_suggestions) - parsed_actions = parse_json(valid_system_actions) - - form_completion_cards = parsed_cards.select { |card| form_completion_card_response_type?(card) } - form_completion_actions = parsed_actions.select { |action| form_completion_action_response_type?(action) } - - skip_if form_completion_cards.blank? && form_completion_actions.blank?, - "#{tested_hook_name} hook response does not contain any Request Form Completion cards or system actions." - - actions_check(form_completion_actions) if form_completion_actions.present? - - if form_completion_cards.present? - form_completion_cards.each do |card| - card['suggestions'].each do |suggestion| - actions_check(suggestion['actions']&.select { |action| form_completion_action_response_type?(action) }) - end - end - end - - no_error_validation('Some Request Form Completion received are not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/instructions_card_received_across_hooks_test.rb b/lib/davinci_crd_test_kit/server_tests/instructions_card_received_across_hooks_test.rb deleted file mode 100644 index 375843f5..00000000 --- a/lib/davinci_crd_test_kit/server_tests/instructions_card_received_across_hooks_test.rb +++ /dev/null @@ -1,25 +0,0 @@ -require_relative '../test_helper' - -module DaVinciCRDTestKit - class InstructionsCardReceivedAcrossHooksTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - - title 'Valid Instructions cards received across all hooks' - id :crd_valid_instructions_card_received_across_hooks - description %( - This test validates that a valid [Instructions card](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - was received across all hooks responses. - - The test will be skipped if no valid Instructions cards are returned across all hooks. - ) - - run do - verify_at_least_one_test_passes( - self.class.parent.parent.groups, - 'crd_valid_instructions_card_received', - 'None of the hooks invoked returned a valid Instructions card.', - 'across_hooks' - ) - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/instructions_card_received_test.rb b/lib/davinci_crd_test_kit/server_tests/instructions_card_received_test.rb deleted file mode 100644 index 216084e1..00000000 --- a/lib/davinci_crd_test_kit/server_tests/instructions_card_received_test.rb +++ /dev/null @@ -1,28 +0,0 @@ -require_relative '../test_helper' -require_relative '../server_hook_helper' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class InstructionsCardReceivedTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Valid Instructions cards received' - id :crd_valid_instructions_card_received - description %( - This test validates that an [Instructions](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#instructions) - card was received. It does so by: - - Checking for the presence of a valid card that does not contain the `links` field and the `suggestions` field. - ) - - input :valid_cards - optional - - run do - parsed_cards = parse_json(valid_cards) - instructions_card = parsed_cards.find { |card| instructions_response_type?(card) } - assert instructions_card, "#{tested_hook_name} hook response did not contain an Instructions card." - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/launch_smart_app_card_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/launch_smart_app_card_validation_test.rb deleted file mode 100644 index e37a7b5f..00000000 --- a/lib/davinci_crd_test_kit/server_tests/launch_smart_app_card_validation_test.rb +++ /dev/null @@ -1,37 +0,0 @@ -require_relative '../test_helper' -require_relative '../server_hook_helper' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class LaunchSmartAppCardValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Valid Launch SMART Application cards received' - id :crd_launch_smart_app_card_validation - description %( - This test verifies the presence of valid Launch SMART Application cards within the list of valid cards - returned by the CRD service. - As per the [Da Vinci CRD Implementation Guide](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#launch-smart-application), - Launch SMART Application cards must contain links with the type set to `smart`. - This test checks for the presence of any Launch SMART Application cards by verifying: - - The existence of a `links` array within each card. - - That every link in the `links` array of a card is of type `smart`. - - The test will be skipped if no Launch SMART Application cards are found within the returned valid cards. - ) - verifies_requirements 'hl7.fhir.us.davinci-crd_2.0.1@258' - - optional - input :valid_cards_with_links - - run do - parsed_cards = parse_json(valid_cards_with_links) - external_reference_cards = parsed_cards.select { |card| launch_smart_app_response_type?(card) } - - skip_if external_reference_cards.blank?, - "#{tested_hook_name} hook response does not contain any Launch SMART App cards." - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/propose_alternate_request_card_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/propose_alternate_request_card_validation_test.rb deleted file mode 100644 index 094f263f..00000000 --- a/lib/davinci_crd_test_kit/server_tests/propose_alternate_request_card_validation_test.rb +++ /dev/null @@ -1,44 +0,0 @@ -require_relative '../test_helper' -require_relative '../suggestion_actions_validation' -require_relative '../server_hook_helper' -require_relative '../cards_identification' - -module DaVinciCRDTestKit - class ProposeAlternateRequestCardValidationTest < Inferno::Test - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::SuggestionActionsValidation - include DaVinciCRDTestKit::ServerHookHelper - include DaVinciCRDTestKit::CardsIdentification - - title 'Valid Propose Alternate Request cards received' - id :crd_propose_alternate_request_card_validation - description %( - This test validates that all [Propose Alternate Request](https://hl7.org/fhir/us/davinci-crd/STU2/cards.html#propose-alternate-request) - cards received are valid. It checks for the presence of a card's suggestion - with a single action with `Action.type` of `update` or a card with at least - two actions, one with `Action.type` of `delete` and the other with - `Action.type` of `create`. - ) - optional - input :valid_cards_with_suggestions, :contexts - - run do - parsed_cards = parse_json(valid_cards_with_suggestions) - parsed_contexts = parse_json(contexts) - proposed_alternate_cards = parsed_cards.filter do |card| - propose_alternative_request_response_type?(card) - end - - skip_if proposed_alternate_cards.blank?, - "#{tested_hook_name} hook response does not contain a Propose Alternate Request card." - - proposed_alternate_cards.each do |card| - card['suggestions'].each do |suggestion| - actions_check(suggestion['actions'], parsed_contexts) - end - end - - no_error_validation('Some Proposed Alternate Request cards are not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/service_call_test.rb b/lib/davinci_crd_test_kit/server_tests/service_call_test.rb deleted file mode 100644 index aee86cac..00000000 --- a/lib/davinci_crd_test_kit/server_tests/service_call_test.rb +++ /dev/null @@ -1,101 +0,0 @@ -require_relative '../server_hook_helper' -require_relative '../tags' - -module DaVinciCRDTestKit - class ServiceCallTest < Inferno::Test - include ServerHookHelper - - title 'Submit user-defined service requests' - id :crd_service_call_test - description %( - This test initiates POST request(s) to a specified CDS Service using the JSON body list provided by the user. - As indicated in the [CDS Hooks specification section on Calling a CDS Service](https://cds-hooks.hl7.org/2.0/#calling-a-cds-service), - the service endpoint is constructed by appending the individual service id to the CDS Service base URL, - following the format `{baseUrl}/cds-services/{service.id}`. - - If running this group only, the user will need to provide the `service.id` to call the specified service. - Otherwise, the `service.id` is derived from the CDS Services that are retrieved through a query to the - discovery endpoint. - - The test will be skipped if the CRD server does not host a CDS Service corresponding to the hook that - is being tested. - - The test is deemed successful if the CRD server returns a 200 HTTP response for all requests. - ) - input_order :base_url, :encryption_method, :jwks_kid - input :base_url - input :service_ids, - description: %( - If blank, Inferno will attempt to infer the service id to use by finding a service entry in the - Discovery response for the target hook. If it cannot be inferred, the tests will be skipped. - ), - optional: true - input :service_request_bodies, - optional: true, - type: 'textarea', - description: 'To send multiple requests, provide as a JSON list, e.g., [json_body_1, json_body_2].' - input :encryption_method, - title: 'JWT Signing Algorithm', - description: <<~DESCRIPTION, - CDS Hooks recommends ES384 and RS384 for JWT signature verification. - Select which method to use. - DESCRIPTION - type: 'radio', - options: { - list_options: [ - { - label: 'ES384', - value: 'ES384' - }, - { - label: 'RS384', - value: 'RS384' - } - ] - } - input :jwks_kid, - title: 'CDS Services JWKS kid', - description: <<~DESCRIPTION, - The key ID of the JWKS private key to use for signing the JWTs when invoking a CDS service endpoint - requiring authentication. - Defaults to the first JWK in the list if no kid is supplied. - DESCRIPTION - optional: true - output :invoked_hook - - run do - discovery_url = "#{base_url.chomp('/')}/cds-services" - skip_if service_request_bodies.blank?, - 'Request body not provided, skipping test.' - assert_valid_json(service_request_bodies) - - payloads = [JSON.parse(service_request_bodies)].flatten - skip_if tested_hook_name == ANY_HOOK_TAG && payloads.length != 1, - 'The *Demonstrate a Hook Invocation* test supports only one request body.' - invoked_hook = identify_hook(payloads) - service_id = target_service_id(service_ids, invoked_hook) - skip_if service_id.blank?, "No service id provided or discovered for the #{invoked_hook} hook" - - service_endpoint = "#{discovery_url}/#{service_id}" - token = JwtHelper.build( - aud: service_endpoint, - iss: inferno_base_url, - jku: "#{inferno_base_url}/jwks.json", - kid: jwks_kid, - encryption_method: - ) - headers = { 'Content-type' => 'application/json', 'Authorization' => "Bearer #{token}" } - - payloads.each do |payload| - post(service_endpoint, body: payload.to_json, headers:, tags: [tested_hook_name]) - end - - output(invoked_hook:) - - requests.each do |request| - assert_response_status(200, request:) - assert_valid_json(request.response_body) - end - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/service_request_context_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/service_request_context_validation_test.rb deleted file mode 100644 index 0127fb59..00000000 --- a/lib/davinci_crd_test_kit/server_tests/service_request_context_validation_test.rb +++ /dev/null @@ -1,28 +0,0 @@ -require_relative '../server_hook_request_validation' -require_relative '../test_helper' -require_relative '../server_hook_helper' - -module DaVinciCRDTestKit - class ServiceRequestContextValidationTest < Inferno::Test - include DaVinciCRDTestKit::ServerHookRequestValidation - include DaVinciCRDTestKit::TestHelper - include DaVinciCRDTestKit::ServerHookHelper - - title 'All service requests contain valid context' - id :crd_service_request_context_validation - description %( - This test verifies that all service requests `context` field is valid and contains all the - required fields. - ) - input :contexts, :invoked_hook - - run do - parsed_contexts = parse_json(contexts) - parsed_contexts.each do |context| - hook_request_context_check(context, invoked_hook) - end - - no_error_validation('Some contexts are not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/service_request_optional_fields_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/service_request_optional_fields_validation_test.rb deleted file mode 100644 index da34a073..00000000 --- a/lib/davinci_crd_test_kit/server_tests/service_request_optional_fields_validation_test.rb +++ /dev/null @@ -1,37 +0,0 @@ -require_relative '../server_hook_request_validation' -require_relative '../server_hook_helper' - -module DaVinciCRDTestKit - class ServiceRequestOptionalFieldsValidationTest < Inferno::Test - include DaVinciCRDTestKit::ServerHookRequestValidation - include DaVinciCRDTestKit::ServerHookHelper - - title 'All service requests contain optional fields' - id :crd_service_request_optional_fields_validation - description %( - This optional test reviews the user-submitted CRD service requests for the presence of optional fields: - `fhirAuthorization` and `prefetch`. - - The test will not fail if these optional fields are missing from a service request; instead, it generates an - informational message. - ) - optional - - run do - load_tagged_requests(tested_hook_name) - skip_if requests.empty?, "No #{tested_hook_name} request was made in a previous test as expected." - - requests.each_with_index do |request, index| - @request_number = index + 1 - request_body = json_parse(request.request_body) - if request_body.blank? - add_message('error', "#{request_number}Hook request body cannot be empty.") - next - end - - hook_request_optional_fields_check(request_body) - end - no_error_validation('Some service requests have invalid optional fields.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/service_request_required_fields_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/service_request_required_fields_validation_test.rb deleted file mode 100644 index 7154007d..00000000 --- a/lib/davinci_crd_test_kit/server_tests/service_request_required_fields_validation_test.rb +++ /dev/null @@ -1,38 +0,0 @@ -require_relative '../server_hook_request_validation' -require_relative '../server_hook_helper' - -module DaVinciCRDTestKit - class ServiceRequestRequiredFieldsValidationTest < Inferno::Test - include DaVinciCRDTestKit::ServerHookRequestValidation - include DaVinciCRDTestKit::ServerHookHelper - - title 'All service requests contain required fields' - id :crd_service_request_required_fields_validation - description %( - This test validates all CRD service requests provided by the user, ensuring each includes all required fields - specified in the [CDS Hooks spec section on Calling a CDS Service](https://cds-hooks.hl7.org/2.0/#calling-a-cds-service): - `hook`, `hookInstance`, and `context`. Furthermore, the test checks for the conditional presence of the - `fhirServer` field if `fhirAuthorization` is included. - ) - input :invoked_hook - output :contexts - - run do - load_tagged_requests(tested_hook_name) - skip_if requests.empty?, "No #{tested_hook_name} request was made in a previous test as expected." - contexts = [] - requests.each_with_index do |request, index| - @request_number = index + 1 - request_body = json_parse(request.request_body) - next if request_body.blank? - - contexts << request_body['context'] if request_body['context'].is_a?(Hash) - hook_request_required_fields_check(request_body, invoked_hook) - end - - output contexts: contexts.to_json - - no_error_validation('Some service requests made are not valid.') - end - end -end diff --git a/lib/davinci_crd_test_kit/server_tests/service_response_validation_test.rb b/lib/davinci_crd_test_kit/server_tests/service_response_validation_test.rb deleted file mode 100644 index 701a9e25..00000000 --- a/lib/davinci_crd_test_kit/server_tests/service_response_validation_test.rb +++ /dev/null @@ -1,81 +0,0 @@ -require_relative '../cards_validation' -require_relative '../server_hook_helper' - -module DaVinciCRDTestKit - class ServiceResponseValidationTest < Inferno::Test - include DaVinciCRDTestKit::CardsValidation - include DaVinciCRDTestKit::ServerHookHelper - - title 'All service responses contain valid cards and optional systemActions' - id :crd_service_response_validation - description %( - As per the [CDS Hooks spec section on CDS Service Response](https://cds-hooks.hl7.org/2.0/#cds-service-response), - a successful server's response to a service request must be a JSON object containing a `cards` array. - It must also contain a `systemActions` array for `appointment-book` and `order-sign` hook. - - Each card must contain the following required fields: `summary`, `indicator`, and `source`. - The required fields must have a valid data structure. - ) - input :invoked_hook - output :valid_cards, :valid_system_actions - - SYSTEM_ACTIONS_HOOK_NAMES = ['appointment-book', 'order-sign', 'order-dispatch'].freeze - - def valid_cards - @valid_cards ||= [] - end - - def valid_system_actions - @valid_system_actions ||= [] - end - - def system_actions_check(system_actions) - system_actions.each do |action| - current_error_count = messages.count { |msg| msg[:type] == 'error' } - action_fields_validation(action) - valid_system_actions << action if current_error_count == messages.count { |msg| msg[:type] == 'error' } - end - end - - def perform_system_actions_validation(system_actions, response_index) - if SYSTEM_ACTIONS_HOOK_NAMES.include?(invoked_hook) && system_actions.nil? - msg = "Server response #{response_index + 1} did not have the `systemActions` field, " \ - "which must be present for the `'#{invoked_hook}' hook." - add_message('error', msg) - end - return if system_actions.nil? - - unless system_actions.is_a?(Array) - add_message('error', "`systemActions` of server response #{response_index + 1} is not an array.") - return - end - system_actions_check(system_actions) - end - - run do - load_tagged_requests(tested_hook_name) - skip_if requests.blank?, "No #{tested_hook_name} request was made in a previous test as expected." - successful_requests = requests.select { |request| request.status == 200 } - skip_if successful_requests.empty?, 'All service requests were unsuccessful.' - - info do - unsuccessful_count = (requests - successful_requests).length - assert unsuccessful_count.zero?, "#{unsuccessful_count} out of #{requests.length} requests were unsuccessful" - end - - successful_requests.each_with_index do |request, index| - service_response = JSON.parse(request.response_body) - perform_cards_validation(service_response['cards'], service_response['systemActions'].present?, index) - - perform_system_actions_validation(service_response['systemActions'], index) - rescue JSON::ParserError - add_message('error', "Invalid JSON: server response #{index + 1} is not a valid JSON.") - end - - output valid_system_actions: valid_system_actions.to_json - output valid_cards: valid_cards.to_json - - no_error_validation('Some service responses are not valid. Check messages for issues found.') - end - end -end diff --git a/lib/davinci_crd_test_kit/tags.rb b/lib/davinci_crd_test_kit/tags.rb deleted file mode 100644 index 69b71bad..00000000 --- a/lib/davinci_crd_test_kit/tags.rb +++ /dev/null @@ -1,12 +0,0 @@ -module DaVinciCRDTestKit - APPOINTMENT_BOOK_TAG = 'appointment-book'.freeze - ENCOUNTER_START_TAG = 'encounter-start'.freeze - ENCOUNTER_DISCHARGE_TAG = 'encounter-discharge'.freeze - ORDER_DISPATCH_TAG = 'order-dispatch'.freeze - ORDER_SELECT_TAG = 'order-select'.freeze - ORDER_SIGN_TAG = 'order-sign'.freeze - DISCOVERY_TAG = 'cds_discovery'.freeze - ANY_HOOK_TAG = 'any_hook'.freeze - DATA_FETCH_TAG = 'data_fetch'.freeze - HOOK_INSTANCE_TAG_PREFIX = 'hi_'.freeze -end diff --git a/lib/davinci_crd_test_kit/urls.rb b/lib/davinci_crd_test_kit/urls.rb deleted file mode 100644 index 799c9be5..00000000 --- a/lib/davinci_crd_test_kit/urls.rb +++ /dev/null @@ -1,52 +0,0 @@ -module DaVinciCRDTestKit - APPOINTMENT_BOOK_PATH = '/cds-services/appointment-book-service'.freeze - ENCOUNTER_START_PATH = '/cds-services/encounter-start-service'.freeze - ENCOUNTER_DISCHARGE_PATH = '/cds-services/encounter-discharge-service'.freeze - ORDER_DISPATCH_PATH = '/cds-services/order-dispatch-service'.freeze - ORDER_SELECT_PATH = '/cds-services/order-select-service'.freeze - ORDER_SIGN_PATH = '/cds-services/order-sign-service'.freeze - RESUME_PASS_PATH = '/resume_pass'.freeze - RESUME_FAIL_PATH = '/resume_fail'.freeze - - module URLs - def base_url - @base_url ||= "#{Inferno::Application['base_url']}/custom/#{suite_id}" - end - - def appointment_book_url - @appointment_book_url ||= base_url + APPOINTMENT_BOOK_PATH - end - - def encounter_start_url - @encounter_start_url ||= base_url + ENCOUNTER_START_PATH - end - - def encounter_discharge_url - @encounter_discharge_url ||= base_url + ENCOUNTER_DISCHARGE_PATH - end - - def order_dispatch_url - @order_dispatch_url ||= base_url + ORDER_DISPATCH_PATH - end - - def order_select_url - @order_select_url ||= base_url + ORDER_SELECT_PATH - end - - def order_sign_url - @order_sign_url ||= base_url + ORDER_SIGN_PATH - end - - def resume_pass_url - @resume_pass_url ||= base_url + RESUME_PASS_PATH - end - - def resume_fail_url - @resume_fail_url ||= base_url + RESUME_FAIL_PATH - end - - def suite_id - self.class.suite.id - end - end -end diff --git a/spec/davinci_crd_test_kit/additional_orders_validation_test_spec.rb b/spec/davinci_crd_test_kit/additional_orders_validation_test_spec.rb index 56a051a7..aef6e21a 100644 --- a/spec/davinci_crd_test_kit/additional_orders_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/additional_orders_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::AdditionalOrdersValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::AdditionalOrdersValidationTest do let(:suite_id) { 'crd_server' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/appointment_book_receive_request_test_spec.rb b/spec/davinci_crd_test_kit/appointment_book_receive_request_test_spec.rb index 7ce6a4c5..1129c00a 100644 --- a/spec/davinci_crd_test_kit/appointment_book_receive_request_test_spec.rb +++ b/spec/davinci_crd_test_kit/appointment_book_receive_request_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/appointment_book_receive_request_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/invocation/appointment_book_receive_request_test' -RSpec.describe DaVinciCRDTestKit::AppointmentBookReceiveRequestTest, :request do +RSpec.describe DaVinciCRDTestKit::V201::AppointmentBookReceiveRequestTest, :request do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -9,7 +9,7 @@ let(:example_client_url) { 'https://cds.example.org' } let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } let(:resume_pass_url) do - "#{Inferno::Application['base_url']}/custom/crd_client/resume_pass?token=appointment-book%20#{example_client_url}" + "#{base_url}/resume_pass?token=#{example_client_url}" end let(:appointment_book_url) { "#{base_url}/cds-services/appointment-book-service" } let(:client_fhir_server) { 'https://example/r4' } diff --git a/spec/davinci_crd_test_kit/card_optional_fields_validation_test_spec.rb b/spec/davinci_crd_test_kit/card_optional_fields_validation_test_spec.rb index cb27f882..5ba0b50a 100644 --- a/spec/davinci_crd_test_kit/card_optional_fields_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/card_optional_fields_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::CardOptionalFieldsValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::CardOptionalFieldsValidationTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/cards_identification_spec.rb b/spec/davinci_crd_test_kit/cards_identification_spec.rb index fe242b36..51c7122c 100644 --- a/spec/davinci_crd_test_kit/cards_identification_spec.rb +++ b/spec/davinci_crd_test_kit/cards_identification_spec.rb @@ -11,14 +11,14 @@ def scratch let(:additional_orders_template) do JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', - 'companions_prerequisites.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'companions_prerequisites.json' ))) end let(:create_coverage_card_template) do template = JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', - 'create_update_coverage_information.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'create_update_coverage_information.json' ))) template['suggestions'].first['actions'] = JSON.parse('[{ "type": "create", @@ -31,8 +31,8 @@ def scratch let(:create_coverage_action_template) { create_coverage_card_template['suggestions'][0]['actions'][0] } let(:update_coverage_card_template) do template = JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', - 'create_update_coverage_information.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'create_update_coverage_information.json' ))) template['suggestions'].first['actions'] = JSON.parse('[{ "type": "update", @@ -53,32 +53,37 @@ def scratch let(:external_reference_template) do JSON.parse(File.read( File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'external_reference.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'external_reference.json' ) )) end let(:form_completion_card_template) do JSON.parse(File.read( File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'request_form_completion.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'request_form_completion.json' ) )) end let(:form_completion_action_template) { form_completion_card_template['suggestions'][0]['actions'][1] } let(:instructions_card_template) do JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'instructions.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'instructions.json' ))) end let(:launch_smart_app_template) do JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'launch_smart_app.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'launch_smart_app.json' ))) end let(:propose_alternate_delete_create_card_template) do template = JSON.parse( File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'propose_alternate_request.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'propose_alternate_request.json' )) ) template['suggestions'].first['actions'] << JSON.parse('{ @@ -97,7 +102,8 @@ def scratch let(:propose_alternate_update_card_template) do template = JSON.parse( File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'propose_alternate_request.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'propose_alternate_request.json' )) ) template['suggestions'].first['actions'] << JSON.parse('{ @@ -335,6 +341,35 @@ def create_inferno_request(request_body, response_body) end end + describe 'when identifying create questionnaire actions' do + it 'returns true for a matching action' do + action = + { + 'type' => 'create', + 'description' => 'Create form', + 'resource' => { + 'resourceType' => 'Questionnaire', + 'url' => 'http://example.org/Questionnaire/XYZ' + } + } + expect(module_instance.create_questionnaire_action_response_type?(action)).to be(true) + end + + it 'returns false for a non-matching cards' do + action = + { + 'type' => 'update', + 'description' => 'Update form', + 'resource' => { + 'resourceType' => 'Questionnaire', + 'url' => 'http://example.org/Questionnaire/XYZ' + } + } + + expect(module_instance.create_questionnaire_action_response_type?(action)).to be(false) + end + end + describe 'when identifying form completion actions' do it 'correctly identifies the type' do expect(module_instance.identify_action_type(form_completion_action_template)) @@ -351,6 +386,39 @@ def create_inferno_request(request_body, response_body) end end + describe 'when identifying coverage-info configuration response content' do + it 'identifies coverage-info cards by source type or source topic code' do + expect(module_instance.coverage_info_card_type?({ 'source' => { 'type' => 'coverage-info' } })).to be(true) + expect(module_instance.coverage_info_card_type?(instructions_card_template)).to be(true) + expect(module_instance.coverage_info_card_type?(external_reference_template)).to be(false) + end + + it 'identifies coverage information and form completion system actions' do + expect(module_instance.coverage_info_system_action_type?(coverage_information_action_template)).to be(true) + expect(module_instance.coverage_info_system_action_type?(form_completion_action_template)).to be(true) + expect(module_instance.coverage_info_system_action_type?(create_coverage_action_template)).to be(false) + end + + it 'extracts coverage-info cards and actions from response bodies' do + cards, actions = module_instance.coverage_info_content( + 'cards' => [instructions_card_template, external_reference_template], + 'systemActions' => [coverage_information_action_template, create_coverage_action_template] + ) + + expect(cards).to eq([instructions_card_template]) + expect(actions).to eq([coverage_information_action_template]) + expect(module_instance.coverage_info_response?('cards' => cards, 'systemActions' => actions)).to be(true) + end + + it 'sets and detects the coverage-info disabled configuration option' do + request_body = {} + + module_instance.disable_coverage_info_configuration!(request_body) + + expect(module_instance.coverage_info_configuration_disabled?(request_body)).to be(true) + end + end + describe 'when sorting cards by type' do it 'identifies cards and actions of each type' do all_types_request = create_inferno_request({ hookInstance: 'dummy' }.to_json, all_types_response.to_json) diff --git a/spec/davinci_crd_test_kit/cards_logical_model_validation_spec.rb b/spec/davinci_crd_test_kit/cards_logical_model_validation_spec.rb new file mode 100644 index 00000000..9babfcfa --- /dev/null +++ b/spec/davinci_crd_test_kit/cards_logical_model_validation_spec.rb @@ -0,0 +1,186 @@ +require_relative '../../lib/davinci_crd_test_kit/cross_suite/cards_logical_model_validation' + +RSpec.describe DaVinciCRDTestKit::CardsLogicalModelValidation do + let(:module_instance) do + Class.new do + include DaVinciCRDTestKit::CardsLogicalModelValidation + + attr_reader :messages, :conforms_calls + + def initialize + @messages = [] + @conforms_calls = [] + end + + def add_message(type, message) + @messages << { type:, message: } + end + + def conforms_to_logical_model?(object, url, message_prefix: '') + @conforms_calls << { object:, url:, message_prefix: } + true + end + + def scratch + @scratch ||= {} + end + end.new + end + let(:additional_orders_card) { load_mock('companions_prerequisites.json') } + let(:external_reference_card) { load_mock('external_reference.json') } + let(:instructions_card) { load_mock('instructions.json') } + let(:launch_smart_app_card) { load_mock('launch_smart_app.json') } + let(:form_completion_card) { load_mock('request_form_completion.json') } + let(:coverage_information_action) do + JSON.parse(<<~JSON) + { + "type": "update", + "description": "add coverage-information extension", + "resource": { + "resourceType": "ServiceRequest", + "id": "existingSR", + "extension": [{ + "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information", + "valueString": "sub-extensions elided" + }], + "status": "details elided" + } + } + JSON + end + + let(:mocked_card_responses_dir) do + File.join(__dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', 'mocked_card_responses') + end + + def load_mock(name) + JSON.parse(File.read(File.join(mocked_card_responses_dir, name))) + end + + describe '#validate_card_against_logical_model' do + it 'wraps an external reference card in a CDS Hooks response and validates it against the logical model' do + module_instance.validate_card_against_logical_model(external_reference_card, 0, 0) + + expect(module_instance.conforms_calls.length).to eq(1) + call = module_instance.conforms_calls.first + expect(call[:object]).to eq('cards' => [external_reference_card]) + expect(call[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-externalReference') + expect(call[:message_prefix]).to include('Server response 1 card 1') + expect(call[:message_prefix]).to include('external_reference') + end + + it 'uses the additional orders logical model for additional-orders cards' do + module_instance.validate_card_against_logical_model(additional_orders_card, 0, 0) + + expect(module_instance.conforms_calls.last[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-additionalOrders') + end + + it 'uses the instructions logical model for instructions cards' do + module_instance.validate_card_against_logical_model(instructions_card, 0, 0) + + expect(module_instance.conforms_calls.last[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-instructions') + end + + it 'uses the launchSMART logical model for launch SMART app cards' do + module_instance.validate_card_against_logical_model(launch_smart_app_card, 0, 0) + + expect(module_instance.conforms_calls.last[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-launchSMART') + end + + it 'uses the formCompletion logical model for form completion cards' do + module_instance.validate_card_against_logical_model(form_completion_card, 0, 0) + + expect(module_instance.conforms_calls.last[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-formCompletion') + end + + it 'records an error and skips validation when a card is not a JSON object' do + module_instance.validate_card_against_logical_model('not a card', 0, 0) + + expect(module_instance.conforms_calls).to be_empty + expect(module_instance.messages).to include( + hash_including(type: 'error', message: a_string_including('is not a JSON object')) + ) + end + + it 'records a warning and validates uncategorized cards against the base logical model' do + unknown_card = { + 'summary' => 'unknown', 'indicator' => 'info', 'source' => { 'label' => 'x' }, + 'links' => [{ 'type' => 'smart' }, { 'type' => 'absolute' }] + } + + module_instance.validate_card_against_logical_model(unknown_card, 0, 0) + + expect(module_instance.conforms_calls.length).to eq(1) + expect(module_instance.conforms_calls.first[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponseBase') + expect(module_instance.messages).to include( + hash_including(type: 'warning', message: a_string_including('could not be categorized')) + ) + end + end + + describe '#validate_system_action_against_logical_model' do + it 'wraps the action in a CDS Hooks response and uses the coverageInformation logical model' do + module_instance.validate_system_action_against_logical_model(coverage_information_action, 2, 1) + + expect(module_instance.conforms_calls.length).to eq(1) + call = module_instance.conforms_calls.first + expect(call[:object]).to eq('systemActions' => [coverage_information_action]) + expect(call[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-coverageInformation') + expect(call[:message_prefix]).to include('Server response 3 systemAction 2') + expect(call[:message_prefix]).to include('coverage_information') + end + + it 'records an error and skips validation when a system action is not a JSON object' do + module_instance.validate_system_action_against_logical_model('not an action', 0, 0) + + expect(module_instance.conforms_calls).to be_empty + expect(module_instance.messages).to include( + hash_including(type: 'error', message: a_string_including('is not a JSON object')) + ) + end + + it 'records a warning and validates uncategorized actions against the base logical model' do + unknown_action = { 'type' => 'update', 'description' => 'x', + 'resource' => { 'resourceType' => 'Patient', 'id' => 'p' } } + + module_instance.validate_system_action_against_logical_model(unknown_action, 0, 0) + + expect(module_instance.conforms_calls.length).to eq(1) + expect(module_instance.conforms_calls.first[:url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponseBase') + expect(module_instance.messages).to include( + hash_including(type: 'warning', message: a_string_including('could not be categorized')) + ) + end + end + + describe '#perform_cards_logical_model_validation' do + it 'validates each card and each system action independently' do + module_instance.perform_cards_logical_model_validation( + [external_reference_card, instructions_card], + [coverage_information_action], + 0 + ) + + expect(module_instance.conforms_calls.length).to eq(3) + urls = module_instance.conforms_calls.map { |c| c[:url] } + expect(urls).to include( + 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-externalReference', + 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-instructions', + 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/CRDHooksResponse-coverageInformation' + ) + end + + it 'handles missing cards and systemActions gracefully' do + expect { module_instance.perform_cards_logical_model_validation(nil, nil, 0) }.to_not raise_error + expect(module_instance.conforms_calls).to be_empty + end + end +end diff --git a/spec/davinci_crd_test_kit/client_card_must_support_coverage_information_test_spec.rb b/spec/davinci_crd_test_kit/client_card_must_support_coverage_information_test_spec.rb index 8d62aee3..135f1c9d 100644 --- a/spec/davinci_crd_test_kit/client_card_must_support_coverage_information_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_card_must_support_coverage_information_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::ClientCardMustSupportCoverageInformationTest do +RSpec.describe DaVinciCRDTestKit::V201::ClientCardMustSupportCoverageInformationTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } diff --git a/spec/davinci_crd_test_kit/client_card_must_support_external_reference_test_spec.rb b/spec/davinci_crd_test_kit/client_card_must_support_external_reference_test_spec.rb index 9bf5031b..a5f144ce 100644 --- a/spec/davinci_crd_test_kit/client_card_must_support_external_reference_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_card_must_support_external_reference_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::ClientCardMustSupportExternalReferenceTest do +RSpec.describe DaVinciCRDTestKit::V201::ClientCardMustSupportExternalReferenceTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } @@ -12,7 +12,8 @@ cards: [ JSON.parse( File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'external_reference.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'external_reference.json' )) ) ], diff --git a/spec/davinci_crd_test_kit/client_card_must_support_instructions_test_spec.rb b/spec/davinci_crd_test_kit/client_card_must_support_instructions_test_spec.rb index 2aa3b4ba..58c7d072 100644 --- a/spec/davinci_crd_test_kit/client_card_must_support_instructions_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_card_must_support_instructions_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::ClientCardMustSupportInstructionsTest do +RSpec.describe DaVinciCRDTestKit::V201::ClientCardMustSupportInstructionsTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } @@ -11,7 +11,8 @@ { cards: [ JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'instructions.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'instructions.json' ))) ], systemActions: [] diff --git a/spec/davinci_crd_test_kit/client_fhir_api_create_test_spec.rb b/spec/davinci_crd_test_kit/client_fhir_api_create_test_spec.rb index 33701d64..0f02392e 100644 --- a/spec/davinci_crd_test_kit/client_fhir_api_create_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_fhir_api_create_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/client_fhir_api_create_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_create_test' -RSpec.describe DaVinciCRDTestKit::ClientFHIRApiCreateTest do +RSpec.describe DaVinciCRDTestKit::V201::ClientFHIRApiCreateTest do let(:suite_id) { 'crd_client' } let(:server_endpoint) { 'http://example.com/fhir' } let(:client_smart_credentials) do @@ -66,7 +66,7 @@ describe 'Task FHIR Create Test' do let(:test) do - Class.new(DaVinciCRDTestKit::ClientFHIRApiCreateTest) do + Class.new(DaVinciCRDTestKit::V201::ClientFHIRApiCreateTest) do fhir_client do url :server_endpoint auth_info :smart_auth_info diff --git a/spec/davinci_crd_test_kit/client_fhir_api_read_test_spec.rb b/spec/davinci_crd_test_kit/client_fhir_api_read_test_spec.rb index 6a1e6759..84eaa425 100644 --- a/spec/davinci_crd_test_kit/client_fhir_api_read_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_fhir_api_read_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/client_fhir_api_read_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_read_test' -RSpec.describe DaVinciCRDTestKit::ClientFHIRApiReadTest do +RSpec.describe DaVinciCRDTestKit::V201::ClientFHIRApiReadTest do let(:suite_id) { 'crd_client' } let(:server_endpoint) { 'http://example.com/fhir' } let(:client_smart_credentials) do @@ -49,7 +49,7 @@ describe 'Patient FHIR Read Test' do let(:test) do - Class.new(DaVinciCRDTestKit::ClientFHIRApiReadTest) do + Class.new(DaVinciCRDTestKit::V201::ClientFHIRApiReadTest) do fhir_client do url :server_endpoint auth_info :smart_auth_info diff --git a/spec/davinci_crd_test_kit/client_fhir_api_search_test_spec.rb b/spec/davinci_crd_test_kit/client_fhir_api_search_test_spec.rb index 662b0eee..663c5db9 100644 --- a/spec/davinci_crd_test_kit/client_fhir_api_search_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_fhir_api_search_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/client_fhir_api_search_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_search_test' -RSpec.describe DaVinciCRDTestKit::ClientFHIRApiSearchTest, :runnable do +RSpec.describe DaVinciCRDTestKit::V201::ClientFHIRApiSearchTest, :runnable do let(:suite_id) { 'crd_client' } let(:server_endpoint) { 'http://example.com/fhir' } @@ -217,7 +217,7 @@ describe 'Coverage search test with reference search parameter `patient`' do let(:test) do Inferno::Repositories::Tests.new.find( - 'crd_client-crd_client_fhir_api-Group02-Group03-crd_client_coverage_patient_search_test' + 'crd_client-crd_v201_client_fhir_api-Group02-Group03-crd_v201_client_coverage_patient_search_test' ) do fhir_client do url :url @@ -227,7 +227,7 @@ end it 'passes if valid Patient id is passed in that can be used to search for Coverage resources' do - coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=#{patient_id}") + coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/#{patient_id}") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) @@ -240,7 +240,7 @@ end it 'passes if patient search result includes an OperationOutcome resource' do - coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=#{patient_id}") + coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/#{patient_id}") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) @@ -253,12 +253,12 @@ end it 'passes if at least 1 of list of Patient ids returns resources in Coverage search' do - coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=#{patient_id}") + coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/#{patient_id}") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) .to_return(status: 200, body: crd_coverage_search_bundle_active.to_json) - coverage_search_request_empty = stub_request(:get, "#{server_endpoint}/Coverage?patient=example2") + coverage_search_request_empty = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/example2") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) @@ -273,12 +273,12 @@ end it 'skips if no resources returned in Coverage search' do - coverage_search_request_empty = stub_request(:get, "#{server_endpoint}/Coverage?patient=#{patient_id}") + coverage_search_request_empty = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/#{patient_id}") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) .to_return(status: 200, body: empty_bundle.to_json) - coverage_search_request_empty_second = stub_request(:get, "#{server_endpoint}/Coverage?patient=example2") + coverage_search_request_empty_second = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/example2") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) @@ -301,7 +301,7 @@ end it 'fails if patient Coverage search returns non 200' do - coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=#{patient_id}") + coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/#{patient_id}") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) @@ -315,7 +315,7 @@ end it 'fails if patient Coverage search returns bundle with non Coverage resources' do - coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=#{patient_id}") + coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/#{patient_id}") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) @@ -329,7 +329,7 @@ end it 'fails if patient Coverage search returns Coverage resource with incorrect beneficiary id' do - coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=wrong_id") + coverage_search_request = stub_request(:get, "#{server_endpoint}/Coverage?patient=Patient/wrong_id") .with( headers: { Authorization: 'Bearer SAMPLE_TOKEN' } ) @@ -348,7 +348,7 @@ describe 'Coverage search test with `status` search parameter' do let(:test) do Inferno::Repositories::Tests.new.find( - 'crd_client-crd_client_fhir_api-Group02-Group03-crd_client_coverage_status_search_test' + 'crd_client-crd_v201_client_fhir_api-Group02-Group03-crd_v201_client_coverage_status_search_test' ) do fhir_client do url :url @@ -533,7 +533,7 @@ describe 'Encounter search test with `_id` search parameter' do let(:test) do Inferno::Repositories::Tests.new.find( - 'crd_client-crd_client_fhir_api-Group02-Group06-crd_client_encounter_id_search_test' + 'crd_client-crd_v201_client_fhir_api-Group02-Group06-crd_v201_client_encounter_id_search_test' ) do fhir_client do url :url @@ -662,7 +662,7 @@ describe 'Encounter search test with `_include` search parameter' do let(:test) do Inferno::Repositories::Tests.new.find( - 'crd_client-crd_client_fhir_api-Group02-Group06-crd_client_encounter_location_include_test' + 'crd_client-crd_v201_client_fhir_api-Group02-Group06-crd_v201_client_encounter_location_include_test' ) do fhir_client do url :url diff --git a/spec/davinci_crd_test_kit/client_fhir_api_update_test_spec.rb b/spec/davinci_crd_test_kit/client_fhir_api_update_test_spec.rb index df37b68b..ce8e5d50 100644 --- a/spec/davinci_crd_test_kit/client_fhir_api_update_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_fhir_api_update_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/client_fhir_api_update_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_update_test' -RSpec.describe DaVinciCRDTestKit::ClientFHIRApiUpdateTest do +RSpec.describe DaVinciCRDTestKit::V201::ClientFHIRApiUpdateTest do let(:suite_id) { 'crd_client' } let(:server_endpoint) { 'http://example.com/fhir' } let(:client_smart_credentials) do @@ -66,7 +66,7 @@ describe 'Encounter FHIR Update Test' do let(:test) do - Class.new(DaVinciCRDTestKit::ClientFHIRApiUpdateTest) do + Class.new(DaVinciCRDTestKit::V201::ClientFHIRApiUpdateTest) do fhir_client do url :server_endpoint auth_info :smart_auth_info diff --git a/spec/davinci_crd_test_kit/client_fhir_api_validation_test_spec.rb b/spec/davinci_crd_test_kit/client_fhir_api_validation_test_spec.rb index bab56c00..7a0a345e 100644 --- a/spec/davinci_crd_test_kit/client_fhir_api_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/client_fhir_api_validation_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/client_fhir_api_validation_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/api/client_fhir_api_validation_test' -RSpec.describe DaVinciCRDTestKit::ClientFHIRApiValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::ClientFHIRApiValidationTest do let(:suite_id) { 'crd_client' } let(:result) { repo_create(:result, test_session_id: test_session.id) } @@ -109,7 +109,7 @@ def create_fhir_api_requests(url: nil, body: nil, status: 200, search_tag: nil, describe 'FHIR Resource Validation' do let(:test) do - Class.new(DaVinciCRDTestKit::ClientFHIRApiValidationTest) do + Class.new(DaVinciCRDTestKit::V201::ClientFHIRApiValidationTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) @@ -187,7 +187,7 @@ def create_fhir_api_requests(url: nil, body: nil, status: 200, search_tag: nil, result = run(test) expect(result.result).to eq('fail') - expect(result.result_message).to match('2/2 Encounter resources returned from previous') + expect(result.result_message).to match('2/2 Encounter resources returned from') expect(validation_request).to have_been_made.times(2) end diff --git a/spec/davinci_crd_test_kit/coverage_information_system_action_across_hooks_validation_test_spec.rb b/spec/davinci_crd_test_kit/coverage_information_system_action_across_hooks_validation_test_spec.rb index 919d4534..e905baf4 100644 --- a/spec/davinci_crd_test_kit/coverage_information_system_action_across_hooks_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/coverage_information_system_action_across_hooks_validation_test_spec.rb @@ -1,13 +1,14 @@ -RSpec.describe DaVinciCRDTestKit::CoverageInformationSystemActionAcrossHooksValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::CoverageInformationSystemActionAcrossHooksValidationTest do let(:suite_id) { 'crd_server' } let(:runnable_across) do - id = 'crd_server-crd_server_hooks-crd_server_required_card_response_validation' \ - '-crd_coverage_info_system_action_across_hooks_validation' + id = 'crd_server-crd_v201_server_hooks-crd_v201_server_required_card_response_validation' \ + '-crd_v201_coverage_info_system_action_across_hooks_validation' Inferno::Repositories::Tests.new.find(id) end let(:runnable_within) do Inferno::Repositories::Tests.new - .find('crd_server-crd_server_hooks-crd_server_appointment_book-crd_coverage_info_system_action_validation') + .find('crd_server-crd_v201_server_hooks-crd_v201_server_appointment_book-Group03-' \ + 'crd_v201_coverage_info_system_action_validation') end let(:results_repo) { Inferno::Repositories::Results.new } let(:valid_response_body) do diff --git a/spec/davinci_crd_test_kit/coverage_information_system_action_received_test_spec.rb b/spec/davinci_crd_test_kit/coverage_information_system_action_received_test_spec.rb index 18d12b4b..6f9109fe 100644 --- a/spec/davinci_crd_test_kit/coverage_information_system_action_received_test_spec.rb +++ b/spec/davinci_crd_test_kit/coverage_information_system_action_received_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::CoverageInformationSystemActionReceivedTest do +RSpec.describe DaVinciCRDTestKit::V201::CoverageInformationSystemActionReceivedTest do let(:suite_id) { 'crd_server' } let(:runnable) { described_class } let(:coverage_info_system_action) do diff --git a/spec/davinci_crd_test_kit/coverage_information_system_action_validation_test_spec.rb b/spec/davinci_crd_test_kit/coverage_information_system_action_validation_test_spec.rb index 407f1818..a8665b33 100644 --- a/spec/davinci_crd_test_kit/coverage_information_system_action_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/coverage_information_system_action_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::CoverageInformationSystemActionValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::CoverageInformationSystemActionValidationTest do let(:suite_id) { 'crd_server' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/create_or_update_coverage_info_response_validation_test_spec.rb b/spec/davinci_crd_test_kit/create_or_update_coverage_info_response_validation_test_spec.rb index af38a745..5b0edd07 100644 --- a/spec/davinci_crd_test_kit/create_or_update_coverage_info_response_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/create_or_update_coverage_info_response_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::CreateOrUpdateCoverageInfoResponseValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::CreateOrUpdateCoverageInfoResponseValidationTest do let(:suite_id) { 'crd_server' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/custom_service_response_spec.rb b/spec/davinci_crd_test_kit/custom_service_response_spec.rb index 03e336d9..66b38565 100644 --- a/spec/davinci_crd_test_kit/custom_service_response_spec.rb +++ b/spec/davinci_crd_test_kit/custom_service_response_spec.rb @@ -1,8 +1,8 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test' RSpec.describe DaVinciCRDTestKit::CustomServiceResponse, :request do let(:suite_id) { 'crd_client' } - let(:test) { DaVinciCRDTestKit::OrderSignReceiveRequestTest } + let(:test) { DaVinciCRDTestKit::V201::OrderSignReceiveRequestTest } let(:results_repo) { Inferno::Repositories::Results.new } let(:jwt_helper) { Class.new(DaVinciCRDTestKit::JwtHelper) } @@ -47,13 +47,15 @@ end let(:instructions_card_template) do JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'instructions.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'instructions.json' ))) end let(:suggestions_card_template) do JSON.parse( File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'propose_alternate_request.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'propose_alternate_request.json' )) ) end @@ -193,6 +195,58 @@ def run(runnable, inputs = {}, scratch = {}) .to_return(status: 200, body: crd_coverage_bundle.to_json) end + it 'returns a 500 error when the FHIRPath service fails during inclusion criteria evaluation' do + allow(test).to receive(:suite).and_return(suite) + stub_request(:post, /#{Regexp.escape(fhirpath_url)}/) + .to_return(status: 422, body: 'Invalid FHIRPath expression') + + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + instructions_card_template['extension'] = + { 'com.inferno.inclusionCriteria': 'context.draftOrders.entry.resource.ofType(MedicationRequest).exists()' } + response_template = { cards: [instructions_card_template] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + + expect(last_response).to be_server_error + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']) + .to match(/FHIRPath service error while generating custom response/) + end + + it 'returns a 500 error when the FHIRPath service fails during resource selection criteria evaluation' do + allow(test).to receive(:suite).and_return(suite) + stub_request(:post, /#{Regexp.escape(fhirpath_url)}/) + .to_return(status: 422, body: 'Invalid FHIRPath expression') + + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + system_action_template_delete_with_tokens['extension'] = + { 'com.inferno.resourceSelectionCriteria': 'context.draftOrders.entry.resource.ofType(MedicationRequest)' } + response_template = { cards: [], systemActions: [system_action_template_delete_with_tokens] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + + expect(last_response).to be_server_error + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']) + .to match(/FHIRPath service error while generating custom response/) + end + it 'returns 400 when bad json specified in the input' do allow(test).to receive(:suite).and_return(suite) @@ -210,7 +264,10 @@ def run(runnable, inputs = {}, scratch = {}) post_json(server_endpoint, body) expect(last_response).to be_server_error - expect(last_response.body).to match(/Invalid template provided for custom Inferno CRD response: invalid JSON/) + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']) + .to match(/Invalid template provided for custom Inferno CRD response: invalid JSON/) end it 'returns success and updates the uuid on the card when present' do @@ -885,6 +942,125 @@ def run(runnable, inputs = {}, scratch = {}) .to_not eq(defaults_from_empty['extension'][4]['valueString']) end + describe 'com.inferno.includeForServices filter' do + let(:token) do + jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + end + + before { allow(test).to receive(:suite).and_return(suite) } + + it 'includes cards when the extension is not present' do + response_template = { cards: [instructions_card_template] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + expect(last_response).to be_ok + expect(JSON.parse(last_response.body)['cards'].length).to eq(1) + end + + it 'includes cards when the extension value matches the request URL' do + instructions_card_template['extension'] = { + 'com.inferno.includeForServices': 'cds-services/order-sign-service' + } + response_template = { cards: [instructions_card_template] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + expect(last_response).to be_ok + cards = JSON.parse(last_response.body)['cards'] + expect(cards.length).to eq(1) + expect(cards[0]['extension']).to be_nil + end + + it 'excludes cards when the extension value does not match the request URL' do + instructions_card_template['extension'] = { + 'com.inferno.includeForServices': 'prefetch-subset/cds-services/order-sign-subset' + } + response_template = { cards: [instructions_card_template] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + expect(last_response).to be_ok + expect(JSON.parse(last_response.body)['cards'].length).to eq(0) + end + + it 'includes cards when any one of multiple comma-delimited service URLs matches' do + instructions_card_template['extension'] = { + 'com.inferno.includeForServices': + 'prefetch-subset/cds-services/order-sign-subset, cds-services/order-sign-service' + } + response_template = { cards: [instructions_card_template] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + expect(last_response).to be_ok + expect(JSON.parse(last_response.body)['cards'].length).to eq(1) + end + + it 'includes systemActions when the extension value matches the request URL' do + system_action_template_static['extension'] = { + 'com.inferno.includeForServices': 'cds-services/order-sign-service' + } + response_template = { cards: [], systemActions: [system_action_template_static] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + expect(last_response).to be_ok + actions = JSON.parse(last_response.body)['systemActions'] + expect(actions.length).to eq(1) + expect(actions[0]['extension']).to be_nil + end + + it 'excludes systemActions when the extension value does not match the request URL' do + system_action_template_static['extension'] = { + 'com.inferno.includeForServices': 'prefetch-subset/cds-services/order-sign-subset' + } + response_template = { cards: [], systemActions: [system_action_template_static] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + expect(last_response).to be_ok + expect(JSON.parse(last_response.body)['systemActions'].length).to eq(0) + end + + describe 'when posting to the v221 prefetch-subset endpoint' do + let(:suite_id) { 'crd_client_v221' } + let(:test) { DaVinciCRDTestKit::V221::OrderSignReceiveRequestTest } + let(:subset_server_endpoint) { '/custom/crd_client_v221/prefetch-subset/cds-services/order-sign-subset' } + let(:token) do + v221_base_url = "#{Inferno::Application['base_url']}/custom/crd_client_v221" + jwt_helper.build( + aud: "#{v221_base_url}/cds-services/order-sign-service", + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + end + + it 'includes only subset-targeted cards when the template has cards for both endpoints' do + complete_card = JSON.parse(instructions_card_template.to_json).merge( + 'extension' => { 'com.inferno.includeForServices' => 'cds-services/order-sign-service' } + ) + subset_card = JSON.parse(instructions_card_template.to_json).merge( + 'extension' => { 'com.inferno.includeForServices' => 'prefetch-subset/cds-services/order-sign-subset' } + ) + response_template = { cards: [complete_card, subset_card] } + run(test, cds_jwt_iss: example_client_url, order_sign_custom_response_template: response_template.to_json) + header('Authorization', "Bearer #{token}") + post_json(subset_server_endpoint, body) + expect(last_response).to be_ok + cards = JSON.parse(last_response.body)['cards'] + expect(cards.length).to eq(1) + expect(cards[0]['extension']).to be_nil + end + end + end + it 'returns success and does not duplicate sub-extensions when coverage-information is instantiated twice' do allow(test).to receive(:suite).and_return(suite) fhirpath_result = [{ type: 'resource', diff --git a/spec/davinci_crd_test_kit/decode_auth_token_test_spec.rb b/spec/davinci_crd_test_kit/decode_auth_token_test_spec.rb index c4eeaa5a..a7bc6b32 100644 --- a/spec/davinci_crd_test_kit/decode_auth_token_test_spec.rb +++ b/spec/davinci_crd_test_kit/decode_auth_token_test_spec.rb @@ -1,12 +1,12 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/decode_auth_token_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/auth/decode_auth_token_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::DecodeAuthTokenTest do +RSpec.describe DaVinciCRDTestKit::V201::DecodeAuthTokenTest do let(:suite_id) { 'crd_client' } let(:jwt_helper) { Class.new(DaVinciCRDTestKit::JwtHelper) } let(:result) { repo_create(:result, test_session_id: test_session.id) } let(:results_repo) { Inferno::Repositories::Results.new } - let(:runnable) { Inferno::Repositories::Tests.new.find('crd_decode_auth_token') } + let(:runnable) { Inferno::Repositories::Tests.new.find('crd_v201_decode_auth_token') } let(:example_client_url) { 'https://cds.example.org' } let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } @@ -49,7 +49,7 @@ def entity_result_message describe 'Appointment Book Decode Auth Token Test' do let(:test) do - Class.new(DaVinciCRDTestKit::DecodeAuthTokenTest) do + Class.new(DaVinciCRDTestKit::V201::DecodeAuthTokenTest) do config( options: { hook_name: 'appointment-book' } ) diff --git a/spec/davinci_crd_test_kit/encounter_discharge_receive_request_test_spec.rb b/spec/davinci_crd_test_kit/encounter_discharge_receive_request_test_spec.rb index f48f8d6b..5ba792cb 100644 --- a/spec/davinci_crd_test_kit/encounter_discharge_receive_request_test_spec.rb +++ b/spec/davinci_crd_test_kit/encounter_discharge_receive_request_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/encounter_discharge_receive_request_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_discharge_receive_request_test' -RSpec.describe DaVinciCRDTestKit::EncounterDischargeReceiveRequestTest, :request do +RSpec.describe DaVinciCRDTestKit::V201::EncounterDischargeReceiveRequestTest, :request do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -9,8 +9,7 @@ let(:example_client_url) { 'https://cds.example.org' } let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } let(:resume_pass_url) do - "#{Inferno::Application['base_url']}/custom/crd_client/resume_pass" \ - "?token=encounter-discharge%20#{example_client_url}" + "#{base_url}/resume_pass?token=#{example_client_url}" end let(:encounter_discharge_url) { "#{base_url}/cds-services/encounter-discharge-service" } let(:client_fhir_server) { 'https://example/r4' } diff --git a/spec/davinci_crd_test_kit/encounter_start_receive_request_test_spec.rb b/spec/davinci_crd_test_kit/encounter_start_receive_request_test_spec.rb index 9f4ed44c..f1ff3975 100644 --- a/spec/davinci_crd_test_kit/encounter_start_receive_request_test_spec.rb +++ b/spec/davinci_crd_test_kit/encounter_start_receive_request_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/encounter_start_receive_request_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/invocation/encounter_start_receive_request_test' -RSpec.describe DaVinciCRDTestKit::EncounterStartReceiveRequestTest, :request do +RSpec.describe DaVinciCRDTestKit::V201::EncounterStartReceiveRequestTest, :request do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -8,7 +8,7 @@ let(:example_client_url) { 'https://cds.example.org' } let(:resume_pass_url) do - "#{Inferno::Application['base_url']}/custom/crd_client/resume_pass?token=encounter-start%20#{example_client_url}" + "#{base_url}/resume_pass?token=#{example_client_url}" end let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } let(:encounter_start_url) { "#{base_url}/cds-services/encounter-start-service" } diff --git a/spec/davinci_crd_test_kit/external_reference_card_across_hooks_validation_test_spec.rb b/spec/davinci_crd_test_kit/external_reference_card_across_hooks_validation_test_spec.rb index 21b44768..a19caa35 100644 --- a/spec/davinci_crd_test_kit/external_reference_card_across_hooks_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/external_reference_card_across_hooks_validation_test_spec.rb @@ -1,13 +1,14 @@ -RSpec.describe DaVinciCRDTestKit::ExternalReferenceCardAcrossHooksValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::ExternalReferenceCardAcrossHooksValidationTest do let(:suite_id) { 'crd_server' } let(:runnable_across) do - id = 'crd_server-crd_server_hooks-crd_server_required_card_response_validation' \ - '-crd_external_reference_card_across_hooks_validation' + id = 'crd_server-crd_v201_server_hooks-crd_v201_server_required_card_response_validation' \ + '-crd_v201_external_reference_card_across_hooks_validation' Inferno::Repositories::Tests.new.find(id) end let(:runnable_within) do Inferno::Repositories::Tests.new - .find('crd_server-crd_server_hooks-crd_server_order_dispatch-crd_external_reference_card_validation') + .find('crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-' \ + 'crd_v201_external_reference_card_validation') end let(:results_repo) { Inferno::Repositories::Results.new } let(:valid_response_body) do diff --git a/spec/davinci_crd_test_kit/external_reference_card_validation_test_spec.rb b/spec/davinci_crd_test_kit/external_reference_card_validation_test_spec.rb index e187e317..57ad1195 100644 --- a/spec/davinci_crd_test_kit/external_reference_card_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/external_reference_card_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::ExternalReferenceCardValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::ExternalReferenceCardValidationTest do let(:suite_id) { 'crd_server' } let(:runnable) { described_class } let(:valid_response_body) do diff --git a/spec/davinci_crd_test_kit/fhirpath_on_cds_request_spec.rb b/spec/davinci_crd_test_kit/fhirpath_on_cds_request_spec.rb index 6f66e9f9..67b9e10b 100644 --- a/spec/davinci_crd_test_kit/fhirpath_on_cds_request_spec.rb +++ b/spec/davinci_crd_test_kit/fhirpath_on_cds_request_spec.rb @@ -1,4 +1,4 @@ -require_relative '../../lib/davinci_crd_test_kit/fhirpath_on_cds_request' +require_relative '../../lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request' RSpec.describe DaVinciCRDTestKit::FhirpathOnCDSRequest do let(:module_instance) { Class.new { include DaVinciCRDTestKit::FhirpathOnCDSRequest }.new } @@ -7,97 +7,303 @@ let(:order_sign_request) do JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_sign_hook_request.json'))) end - let(:fancy_structure_request) do - JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'fancy_structure_hook_request.json'))) + let(:order_dispatch_v221_request) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_dispatch_hook_v221_request.json'))) + end + let(:crd_practitioner_example) do + FHIR.from_contents(File.read(File.join(__dir__, '..', 'fixtures', 'crd_practitioner_example.json'))) + end + let(:crd_service_request_example) do + FHIR.from_contents(File.read(File.join(__dir__, '..', 'fixtures', 'crd_service_request_example.json'))) + end + let(:nutrition_order) do + FHIR.from_contents(File.read(File.join(__dir__, '..', 'fixtures', 'NutritionOrder-pureeddiet-simple.json'))) + end + let(:medication_request) do + FHIR.from_contents(File.read(File.join(__dir__, '..', 'fixtures', + 'MedicationRequest-smart-MedicationRequest-103.json'))) + end + let(:task_schedule_json) do + File.read(File.join(__dir__, '..', 'fixtures', 'Task-example-schedule-task.json')) + end + let(:task_refill_json) do + File.read(File.join(__dir__, '..', 'fixtures', 'Task-example-refill-task.json')) end - it 'returns the value for a base string field' do - results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'hook') + describe 'for cds hook request fields' do + it 'returns the value for a base string field' do + results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'hook') - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(1) - expect(results[0]).to eq('order-sign') - end + expect(results).to be_an_instance_of(Array) + expect(results.length).to eq(1) + expect(results[0]).to eq('order-sign') + end - it 'returns the value for a nested object field' do - results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'fhirAuthorization') + it 'returns the value for a nested object field' do + results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'fhirAuthorization') - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(1) - expect(results[0]).to be_an_instance_of(Hash) - expect(results[0]['access_token']).to eq('SAMPLE_TOKEN') - end + expect(results).to be_an_instance_of(Array) + expect(results.length).to eq(1) + expect(results[0]).to be_an_instance_of(Hash) + expect(results[0]['access_token']).to eq('SAMPLE_TOKEN') + end - it 'returns the value for a nested string field' do - results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'fhirAuthorization.access_token') + it 'returns the value for a nested string field' do + results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'fhirAuthorization.access_token') - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(1) - expect(results[0]).to eq('SAMPLE_TOKEN') - end + expect(results).to be_an_instance_of(Array) + expect(results.length).to eq(1) + expect(results[0]).to eq('SAMPLE_TOKEN') + end + + it 'returns the value for a list field' do + results = module_instance.execute_fhirpath_on_cds_request(order_dispatch_v221_request, 'context.dispatchedOrders') - it 'returns the value for a nested FHIR resource field' do - fhirpath_result = [{ type: 'id', element: 'pureeddiet-simple' }, - { type: 'id', element: 'smart-MedicationRequest-103' }] - stub_request(:post, "#{fhirpath_url}?path=entry.resource.id") - .to_return(status: 200, body: fhirpath_result.to_json) + expect(results).to be_an_instance_of(Array) + expect(results.length).to eq(2) + expect(results[0]).to eq('ServiceRequest/example') + expect(results[1]).to eq('MedicationRequest/smart-MedicationRequest-103') + end - results = - module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'context.draftOrders.entry.resource.id') + # it 'resolves lists of references in the cds request' do + # results = module_instance.execute_fhirpath_on_cds_request( + # order_dispatch_v221_request, + # 'context.dispatchedOrders.resolve()', + # fetched_resources: + # { 'ServiceRequest/example' => JSON.parse(crd_service_request_example.to_json), + # 'MedicationRequest/smart-MedicationRequest-103' => JSON.parse(medication_request.to_json) } + # ) - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(2) - expect(results[0]).to eq('pureeddiet-simple') - expect(results[1]).to eq('smart-MedicationRequest-103') + # expect(results).to be_an_instance_of(Array) + # expect(results.length).to eq(2) + # expect(results[0]).to be_a(Hash) + # expect(results[0]['resourceType']).to eq('ServiceRequest') + # expect(results[0]['id']).to eq('example') + # expect(results[1]).to be_a(Hash) + # expect(results[1]['resourceType']).to eq('MedicationRequest') + # expect(results[1]['id']).to eq('smart-MedicationRequest-103') + # end end - it 'returns the value for a nested FHIR resource field filtered by type' do - fhirpath_result = [{ type: 'id', element: 'smart-MedicationRequest-103' }] - stub_request(:post, "#{fhirpath_url}?path=entry.resource.ofType(MedicationRequest).id") - .to_return(status: 200, body: fhirpath_result.to_json) + describe 'for fhirpath on resources in the cds object' do + it 'clears current_fhir_base_server after execution' do + hook_request = { + 'context' => { + 'draftOrders' => { + 'resourceType' => 'Bundle', + 'entry' => [{ 'fullUrl' => 'http://example.com/fhir/NutritionOrder/1', + 'resource' => { 'resourceType' => 'NutritionOrder', 'id' => '1' } }] + } + } + } + stub_request(:post, "#{fhirpath_url}?path=entry.resource.id") + .to_return(status: 200, body: [{ type: 'id', element: '1' }].to_json) - results = - module_instance - .execute_fhirpath_on_cds_request(order_sign_request, - 'context.draftOrders.entry.resource.ofType(MedicationRequest).id') + module_instance.execute_fhirpath_on_cds_request(hook_request, 'context.draftOrders.entry.resource.id') - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(1) - expect(results[0]).to eq('smart-MedicationRequest-103') - end + expect(module_instance.instance_variable_get(:@current_fhir_base_server)).to be_nil + end + + it 'returns an empty array without calling the fhirpath service when the target hash is nil' do + stub_request(:post, /#{Regexp.escape(fhirpath_url)}/) + results = module_instance.execute_fhirpath_on_cds_request( + order_sign_request, + 'context.nonExistentField.someProperty' + ) + expect(results).to eq([]) + expect(a_request(:post, /#{Regexp.escape(fhirpath_url)}/)).to_not have_been_made + end + + it 'returns the value for a nested FHIR resource field' do + stub_request(:post, "#{fhirpath_url}?path=entry.resource.id") + .to_return(status: 200, body: [{ type: 'id', element: 'pureeddiet-simple' }, + { type: 'id', element: 'smart-MedicationRequest-103' }].to_json) + + results = + module_instance.execute_fhirpath_on_cds_request(order_sign_request, 'context.draftOrders.entry.resource.id') + + expect(results).to be_an_instance_of(Array) + expect(results.length).to eq(2) + expect(results[0]).to eq('pureeddiet-simple') + expect(results[1]).to eq('smart-MedicationRequest-103') + end + + it 'returns the value for a nested FHIR resource field filtered by type' do + stub_request(:post, "#{fhirpath_url}?path=entry.resource.ofType(MedicationRequest).id") + .to_return(status: 200, body: [{ type: 'id', element: 'smart-MedicationRequest-103' }].to_json) - it 'returns the value for a list field' do - results = module_instance.execute_fhirpath_on_cds_request(fancy_structure_request, 'context.list') + results = + module_instance + .execute_fhirpath_on_cds_request(order_sign_request, + 'context.draftOrders.entry.resource.ofType(MedicationRequest).id') - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(2) - expect(results[0]['id']).to eq('123') - expect(results[1]['id']).to eq('456') + expect(results).to be_an_instance_of(Array) + expect(results.length).to eq(1) + expect(results[0]).to eq('smart-MedicationRequest-103') + end + + it 'executes fhirpath on a list of FHIR resources in a cds request' do + fhirpath_result_one = [{ type: 'Reference', element: { 'reference' => 'ServiceRequest/example' } }] + stub_request(:post, "#{fhirpath_url}?path=focus") + .with(body: /"id":"example-schedule-task"/) + .to_return(status: 200, body: fhirpath_result_one.to_json) + fhirpath_result_two = [{ type: 'Reference', + element: { 'reference' => 'MedicationRequest/smart-MedicationRequest-103' } }] + stub_request(:post, "#{fhirpath_url}?path=focus") + .with(body: /"id":"example-refill-task"/) + .to_return(status: 200, body: fhirpath_result_two.to_json) + + results = module_instance.execute_fhirpath_on_cds_request( + order_dispatch_v221_request, + 'context.fulfillmentTasks.focus' + ) + + expect(results).to be_an_instance_of(Array) + expect(results.length).to eq(2) + expect(results[0]['reference']).to eq('ServiceRequest/example') + expect(results[1]['reference']).to eq('MedicationRequest/smart-MedicationRequest-103') + end end - it 'returns the value for a nested list field' do - results = module_instance.execute_fhirpath_on_cds_request(fancy_structure_request, 'context.list.nested_list') + describe 'current_base_fhir_server during execution' do + let(:captured_base_servers) { [] } + let(:capturing_instance) do + servers = captured_base_servers + Class.new do + include DaVinciCRDTestKit::FhirpathOnCDSRequest + + private - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(6) - expect(results[0]).to eq('one') - expect(results[5]).to eq('six') + define_method(:resolve) do |_reference| + servers << @current_base_fhir_server + nil + end + end.new + end + + it 'defaults @current_base_fhir_server from hook request fhirServer' do + hook_request = { + 'fhirServer' => 'http://example.com/fhir', + 'context' => { 'patient' => 'Patient/123' } + } + capturing_instance.execute_fhirpath_on_cds_request(hook_request, 'context.patient.resolve()') + expect(captured_base_servers).to eq(['http://example.com/fhir']) + end + + it 'overrides @current_base_fhir_server from entry fullUrl during entry.resource processing' do + hook_request = { + 'fhirServer' => 'http://example.com/fhir', + 'context' => { + 'draftOrders' => { + 'resourceType' => 'Bundle', + 'entry' => [{ + 'fullUrl' => 'http://entry.example.com/fhir/NutritionOrder/1', + 'resource' => { 'resourceType' => 'NutritionOrder', 'id' => '1' } + }] + } + } + } + stub_request(:post, "#{fhirpath_url}?path=subject") + .to_return(status: 200, body: [{ type: 'string', element: 'Patient/123' }].to_json) + + capturing_instance.execute_fhirpath_on_cds_request( + hook_request, + 'context.draftOrders.entry.resource.subject.resolve()' + ) + expect(captured_base_servers).to eq(['http://entry.example.com/fhir']) + end end - it 'handles where(field=value) function when it matches' do - results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, - 'context.where(patientId=example).userId') + describe 'entry.resource queries with resolve()' do + let(:hook_request_with_entry) do + { + 'fhirServer' => 'http://example.com/fhir', + 'context' => { + 'draftOrders' => { + 'resourceType' => 'Bundle', + 'entry' => [{ + 'fullUrl' => 'http://example.com/fhir/NutritionOrder/1', + 'resource' => { 'resourceType' => 'NutritionOrder', 'id' => '1' } + }] + } + } + } + end + + it 'raises FhirpathServiceError when an unsupported function appears after resolve()' do + expect do + module_instance.execute_fhirpath_on_cds_request( + hook_request_with_entry, + 'context.draftOrders.entry.resource.subject.resolve().exists()' + ) + end.to raise_error(DaVinciCRDTestKit::FhirpathServiceError, /exists/) + end - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(1) - expect(results[0]).to eq('Practitioner/example') + it 'raises before making any fhirpath service calls' do + stub_request(:post, /#{Regexp.escape(fhirpath_url)}/) + expect do + module_instance.execute_fhirpath_on_cds_request( + hook_request_with_entry, + 'context.draftOrders.entry.resource.subject.resolve().count()' + ) + end.to raise_error(DaVinciCRDTestKit::FhirpathServiceError) + expect(a_request(:post, /#{Regexp.escape(fhirpath_url)}/)).to_not have_been_made + end + + it 'permits ofType() after resolve()' do + stub_request(:post, "#{fhirpath_url}?path=subject") + .to_return(status: 200, body: [{ type: 'string', element: 'Patient/123' }].to_json) + expect do + module_instance.execute_fhirpath_on_cds_request( + hook_request_with_entry, + 'context.draftOrders.entry.resource.subject.resolve().ofType(Patient)' + ) + end.to_not raise_error + end + + it 'permits chained resolve() after resolve()' do + stub_request(:post, "#{fhirpath_url}?path=subject") + .to_return(status: 200, body: [{ type: 'string', element: 'Patient/123' }].to_json) + expect do + module_instance.execute_fhirpath_on_cds_request( + hook_request_with_entry, + 'context.draftOrders.entry.resource.subject.resolve().resolve()' + ) + end.to_not raise_error + end end - it 'handles where(field=value) function when it does not match' do - results = module_instance.execute_fhirpath_on_cds_request(order_sign_request, - 'context.where(patientId=wrong).userId') + describe '#base_fhir_server_for_identity' do + def base_fhir_server(url) + module_instance.send(:base_fhir_server_for_identity, url) + end + + it 'returns nil for nil input' do + expect(base_fhir_server(nil)).to be_nil + end + + it 'returns nil for an empty string' do + expect(base_fhir_server('')).to be_nil + end + + it 'returns the base server for an http URL' do + expect(base_fhir_server('http://example.com/fhir/NutritionOrder/1')).to eq('http://example.com/fhir') + end + + it 'returns the base server for an https URL' do + expect(base_fhir_server('https://example.com/fhir/Patient/123')).to eq('https://example.com/fhir') + end + + it 'returns nil for a relative URL' do + expect(base_fhir_server('NutritionOrder/1')).to be_nil + end + + it 'returns nil for a urn scheme' do + expect(base_fhir_server('urn:uuid:some-uuid')).to be_nil + end - expect(results).to be_an_instance_of(Array) - expect(results.length).to eq(0) + it 'returns nil for an invalid URI' do + expect(base_fhir_server('http://example.com/foo bar')).to be_nil + end end end diff --git a/spec/davinci_crd_test_kit/form_completion_response_validation_test_spec.rb b/spec/davinci_crd_test_kit/form_completion_response_validation_test_spec.rb index 77b31f46..982a04db 100644 --- a/spec/davinci_crd_test_kit/form_completion_response_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/form_completion_response_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::FormCompletionResponseValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::FormCompletionResponseValidationTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/gather_response_generation_data_spec.rb b/spec/davinci_crd_test_kit/gather_response_generation_data_spec.rb index 0c3fe509..887d4f98 100644 --- a/spec/davinci_crd_test_kit/gather_response_generation_data_spec.rb +++ b/spec/davinci_crd_test_kit/gather_response_generation_data_spec.rb @@ -1,4 +1,5 @@ -require_relative '../../lib/davinci_crd_test_kit/gather_response_generation_data' +require_relative '../../lib/davinci_crd_test_kit/client/endpoints/gather_response_generation_data' +require_relative '../../lib/davinci_crd_test_kit/cross_suite/tags' RSpec.describe DaVinciCRDTestKit::GatherResponseGenerationData do let(:module_instance) do @@ -277,6 +278,17 @@ def request_body expect(pr_request).to have_been_made.once expect(p_request).to have_been_made.once end + + it 'handles a non-JSON response body without raising' do + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + + stub_request(:get, patient_example_reference_absolute) + .to_return(status: 200, body: 'not valid json') + + module_instance.gather_data_for_request([patient_example_reference_relative], []) + expect(module_instance.analyzed_resources.key?(patient_example_reference_relative)).to be(true) + expect(module_instance.analyzed_resources[patient_example_reference_relative]).to be_nil + end end describe 'when fetching coverage resources' do @@ -380,6 +392,147 @@ def request_body end end + describe 'when handling prefetched location data' do + let(:location_fhir) { FHIR.from_contents(location_example.to_json) } + let(:location2_fhir) { FHIR.from_contents(location2_example.to_json) } + let(:location_prefetch_bundle) do + bundle = FHIR::Bundle.new(type: 'searchset') + bundle.entry << FHIR::Bundle::Entry.new(resource: location_fhir) + bundle.entry << FHIR::Bundle::Entry.new(resource: location2_fhir) + bundle + end + + describe '#prefetched_location_bundle' do + it 'returns nil when no locations in prefetch' do + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + expect(module_instance.prefetched_location_bundle).to be_nil + end + + it 'returns the bundle when prefetch contains a location bundle' do + order_sign_request['prefetch'] = { 'locations' => JSON.parse(location_prefetch_bundle.to_json) } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + result = module_instance.prefetched_location_bundle + expect(result).to be_a(FHIR::Bundle) + expect(result.entry.count).to eq(2) + end + + it 'wraps a single prefetched Location in a Bundle' do + order_sign_request['prefetch'] = { 'locations' => JSON.parse(location_fhir.to_json) } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + result = module_instance.prefetched_location_bundle + expect(result).to be_a(FHIR::Bundle) + expect(result.entry.first.resource.id).to eq('example') + end + + it 'returns nil when prefetch locations is neither a Bundle nor a Location' do + order_sign_request['prefetch'] = { 'locations' => { 'resourceType' => 'Patient', 'id' => '1' } } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + expect(module_instance.prefetched_location_bundle).to be_nil + end + end + + describe '#prefetched_locations_and_parents_hash' do + it 'returns nil when no locations in prefetch' do + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + expect(module_instance.prefetched_locations_and_parents_hash).to be_nil + end + + it 'returns a hash keyed by relative reference for each location' do + order_sign_request['prefetch'] = { 'locations' => JSON.parse(location_prefetch_bundle.to_json) } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + result = module_instance.prefetched_locations_and_parents_hash + expect(result.size).to eq(2) + expect(result[location_example_reference_relative]).to be_a(FHIR::Location) + expect(result[location2_example_reference_relative]).to be_a(FHIR::Location) + end + + it 'skips bundle entries without an id' do + location_prefetch_bundle.entry << FHIR::Bundle::Entry.new(resource: FHIR::Location.new(name: 'no-id')) + order_sign_request['prefetch'] = { 'locations' => JSON.parse(location_prefetch_bundle.to_json) } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + result = module_instance.prefetched_locations_and_parents_hash + expect(result.size).to eq(2) + end + + it 'deduplicates entries with the same relative reference' do + location_prefetch_bundle.entry << FHIR::Bundle::Entry.new(resource: location_fhir) + order_sign_request['prefetch'] = { 'locations' => JSON.parse(location_prefetch_bundle.to_json) } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + result = module_instance.prefetched_locations_and_parents_hash + expect(result.size).to eq(2) + end + + it 'fetches and includes parent locations when a prefetched location has partOf' do + location_with_parent = FHIR.from_contents(location_example.to_json) + location_with_parent.partOf = FHIR::Reference.new(reference: location2_example_reference_relative) + bundle = FHIR::Bundle.new(type: 'searchset') + bundle.entry << FHIR::Bundle::Entry.new(resource: location_with_parent) + order_sign_request['prefetch'] = { 'locations' => JSON.parse(bundle.to_json) } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + + parent_request = stub_request(:get, location2_example_reference_absolute) + .to_return(status: 200, body: location2_example.to_json) + + result = module_instance.prefetched_locations_and_parents_hash + expect(result.size).to eq(2) + expect(result[location_example_reference_relative]).to be_a(FHIR::Location) + expect(result[location2_example_reference_relative]).to be_a(FHIR::Location) + expect(parent_request).to have_been_made.once + end + end + + describe '#add_location_to_hash' do + let(:location_hash) { {} } + + it 'does nothing when given a non-Location resource' do + module_instance.add_location_to_hash(nil, location_hash) + module_instance.add_location_to_hash('not a location', location_hash) + expect(location_hash).to be_empty + end + + it 'does nothing when the Location has no id' do + module_instance.add_location_to_hash(FHIR::Location.new, location_hash) + expect(location_hash).to be_empty + end + + it 'adds a valid Location to the hash keyed by relative reference' do + module_instance.add_location_to_hash(location_fhir, location_hash) + expect(location_hash[location_example_reference_relative]).to eq(location_fhir) + end + + it 'does not re-add a Location already present in the hash' do + location_hash[location_example_reference_relative] = location_fhir + module_instance.add_location_to_hash(location_fhir, location_hash) + expect(location_hash.size).to eq(1) + end + + it 'fetches and recursively adds the parent location when partOf is present' do + location_with_parent = FHIR.from_contents(location_example.to_json) + location_with_parent.partOf = FHIR::Reference.new(reference: location2_example_reference_relative) + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + loc_request = stub_request(:get, location2_example_reference_absolute) + .to_return(status: 200, body: location2_example.to_json) + + module_instance.add_location_to_hash(location_with_parent, location_hash) + expect(location_hash.size).to eq(2) + expect(location_hash[location_example_reference_relative]).to eq(location_with_parent) + expect(location_hash[location2_example_reference_relative]).to eq(location2_fhir) + expect(loc_request).to have_been_made.once + end + end + + describe '#request_parent_locations' do + it 'returns a hash of prefetched locations' do + order_sign_request['prefetch'] = { 'locations' => JSON.parse(location_prefetch_bundle.to_json) } + allow(module_instance).to receive(:request_body).and_return(order_sign_request) + result = module_instance.request_parent_locations + expect(result).to be_a(Hash) + expect(result[location_example_reference_relative]).to be_a(FHIR::Location) + expect(result[location2_example_reference_relative]).to be_a(FHIR::Location) + end + end + end + describe 'when fetching data for specific hooks' do it 'fetches expected resources for appointment-book example' do allow(module_instance).to receive(:request_body).and_return(appointment_book_request) diff --git a/spec/davinci_crd_test_kit/hook_request_endpoint_spec.rb b/spec/davinci_crd_test_kit/hook_request_endpoint_spec.rb index 32c5cabc..fbd4a7f6 100644 --- a/spec/davinci_crd_test_kit/hook_request_endpoint_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_endpoint_spec.rb @@ -1,9 +1,16 @@ -require_relative '../../lib/davinci_crd_test_kit/routes/hook_request_endpoint' -require_relative '../../lib/davinci_crd_test_kit/tags' +require_relative '../../lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint' +require_relative '../../lib/davinci_crd_test_kit/cross_suite/tags' RSpec.describe DaVinciCRDTestKit::HookRequestEndpoint, :request do let(:suite_id) { 'crd_client' } - let(:test) { DaVinciCRDTestKit::OrderSignReceiveRequestTest } + let(:test) do + suite = Inferno::Repositories::TestSuites.new.find(suite_id) + hook_inv = suite.groups.find { |g| g.id.to_s.include?('hook_invocation') } + hooks = hook_inv.groups.find { |g| g.id.to_s.include?('client_hooks') } + order_sign = hooks.groups.find { |g| g.id.to_s.include?('client_order_sign') } + make_requests = order_sign.groups.find { |g| g.title == 'Make Hook Requests' } + make_requests.tests.first + end let(:results_repo) { Inferno::Repositories::Results.new } let(:requests_repo) { Inferno::Repositories::Requests.new } @@ -19,7 +26,8 @@ let(:server_endpoint) { '/custom/crd_client/cds-services/order-sign-service' } let(:instructions_card_template) do JSON.parse(File.read(File.join( - __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'card_responses', 'instructions.json' + __dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'endpoints', + 'mocked_card_responses', 'instructions.json' ))) end @@ -76,10 +84,6 @@ def run(runnable, inputs = {}, scratch = {}) Inferno::TestRunner.new(test_session:, test_run:).run(runnable, scratch) end - def hook_instance_tag(hook_instance) - "#{DaVinciCRDTestKit::HOOK_INSTANCE_TAG_PREFIX}#{hook_instance}" - end - describe 'When responding' do it 'returns 400 when the hookInstance has already been used' do allow(test).to receive(:suite).and_return(suite) @@ -104,11 +108,13 @@ def hook_instance_tag(hook_instance) post_json(server_endpoint, order_sign_hook_request) expect(last_response).to be_client_error - expect(last_response.body) + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']) .to match(/Hook instance `#{order_sign_hook_request['hookInstance']}` has already been used in this session./) end - it 'returns 500 when the hook is not supported since cannot find session' do + it 'returns 400 with OperationOutcome when the requested hook does not match the invoked hook' do allow(test).to receive(:suite).and_return(suite) token = jwt_helper.build( aud: order_sign_url, @@ -124,9 +130,108 @@ def hook_instance_tag(hook_instance) header('Authorization', "Bearer #{token}") post_json(server_endpoint, order_sign_hook_request) - expect(last_response).to be_server_error - expect(last_response.body) - .to match(/Unable to find test run with identifier 'not_a_hook #{example_client_url}'./) + expect(last_response.status).to eq(400) + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']).to match(/order-sign.*not_a_hook/) + end + + it 'returns 400 with OperationOutcome when a valid hook in the body differs from the invoked hook' do + allow(test).to receive(:suite).and_return(suite) + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: instructions_card_template.to_json) + + order_sign_hook_request['hook'] = 'appointment-book' + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, order_sign_hook_request) + + expect(last_response.status).to eq(400) + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']).to match(/order-sign.*appointment-book/) + end + + it 'returns 422 with OperationOutcome when the hook matches the endpoint but not the hook being tested' do + allow(test).to receive(:suite).and_return(suite) + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: instructions_card_template.to_json) + + appointment_book_request = order_sign_hook_request.merge('hook' => 'appointment-book') + header('Authorization', "Bearer #{token}") + post_json('/custom/crd_client/cds-services/appointment-book-service', appointment_book_request) + + expect(last_response.status).to eq(422) + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']).to match(/appointment-book.*order-sign/) + end + end + + describe '#apply_hook_configuration' do + let(:endpoint) { described_class.allocate } + let(:coverage_info_card) { { 'summary' => 'Coverage', 'source' => { 'type' => 'coverage-info' } } } + let(:coverage_info_topic_card) do + { 'summary' => 'Coverage topic', 'source' => { 'topic' => { 'code' => 'coverage-info' } } } + end + let(:guideline_card) { { 'summary' => 'Guideline', 'source' => { 'topic' => { 'code' => 'guideline' } } } } + let(:coverage_info_action) do + { + 'type' => 'update', + 'resource' => { + 'resourceType' => 'ServiceRequest', + 'extension' => [{ 'url' => DaVinciCRDTestKit::CardsIdentification::COVERAGE_INFO_EXT_URL }] + } + } + end + let(:form_completion_action) do + { + 'type' => 'create', + 'resource' => { + 'resourceType' => 'Task', + 'code' => { 'coding' => [{ 'code' => 'complete-questionnaire' }] }, + 'input' => [ + { + 'type' => { 'text' => 'questionnaire' }, + 'valueCanonical' => 'http://example.com/Questionnaire/example' + } + ] + } + } + end + let(:other_action) { { 'type' => 'delete', 'resource' => { 'resourceType' => 'ServiceRequest' } } } + + it 'filters coverage-info cards and actions when the coverage-info configuration option is false' do + allow(endpoint).to receive(:request_body).and_return( + 'extension' => { + 'davinci-crd.configuration' => { + 'coverage-info' => false + } + } + ) + + response_body = { + 'cards' => [coverage_info_card, coverage_info_topic_card, guideline_card], + 'systemActions' => [coverage_info_action, form_completion_action, other_action] + } + + filtered_response = endpoint.apply_hook_configuration(response_body) + + expect(filtered_response['cards']).to eq([guideline_card]) + expect(filtered_response['systemActions']).to eq([other_action]) end end @@ -159,13 +264,274 @@ def hook_instance_tag(hook_instance) expect(p_request).to have_been_made.once expect(pat_request).to have_been_made.once expect(cov_request).to have_been_made.once - tagged_requests = requests_repo.tagged_requests(test_session.id, - [hook_instance_tag(hook_instance), - DaVinciCRDTestKit::DATA_FETCH_TAG]) + tagged_requests = + requests_repo.tagged_requests(test_session.id, + [DaVinciCRDTestKit::TagMethods.hook_instance_data_fetch_tag(hook_instance), + DaVinciCRDTestKit::DATA_FETCH_TAG]) expect(tagged_requests.length).to eq(3) expect(tagged_requests.one? { |request| request.url == patient_example_reference_absolute }).to be(true) expect(tagged_requests.one? { |request| request.url == practitioner_example_reference_absolute }).to be(true) expect(tagged_requests.one? { |request| request.url == coverage_search_url }).to be(true) end end + + describe 'ig_version inference' do + describe 'when posting to the v221 endpoint path' do + let(:suite_id) { 'crd_client_v221' } + let(:test) { DaVinciCRDTestKit::V221::OrderSignReceiveRequestTest } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client_v221" } + let(:server_endpoint) { '/custom/crd_client_v221/cds-services/order-sign-service' } + + it 'does not make FHIR data-fetch requests when version inferred from path' do + allow(test).to receive(:suite).and_return(suite) + pat_request = stub_request(:get, patient_example_reference_absolute) + .to_return(status: 200, body: patient_example.to_json) + p_request = stub_request(:get, practitioner_example_reference_absolute) + .to_return(status: 200, body: practitioner_example.to_json) + cov_request = stub_request(:get, coverage_search_url) + .to_return(status: 200, body: crd_coverage_bundle.to_json) + + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, order_sign_hook_request) + + expect(last_response).to be_ok + expect(pat_request).to_not have_been_made + expect(p_request).to_not have_been_made + expect(cov_request).to_not have_been_made + end + + it 'fetches the coverage payer when coverage with a payer reference is in the prefetch' do + allow(test).to receive(:suite).and_return(suite) + payer_org_url = "#{fhir_server}/Organization/example-payer" + payer_request = stub_request(:get, payer_org_url) + .to_return(status: 200, body: { 'resourceType' => 'Organization', 'id' => 'example-payer' }.to_json) + + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + hook_instance = order_sign_hook_request['hookInstance'] + request_with_coverage = order_sign_hook_request.merge( + 'prefetch' => { + 'coverage' => { + 'resourceType' => 'Bundle', + 'type' => 'searchset', + 'entry' => [{ 'resource' => { + 'resourceType' => 'Coverage', + 'payor' => [{ 'reference' => 'Organization/example-payer' }] + } }] + } + } + ) + + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, request_with_coverage) + + expect(last_response).to be_ok + expect(payer_request).to have_been_made.once + tagged_requests = requests_repo.tagged_requests( + test_session.id, + [DaVinciCRDTestKit::PAYER_ORG_FETCH_TAG, + DaVinciCRDTestKit::TagMethods.hook_instance_data_fetch_tag(hook_instance), + DaVinciCRDTestKit::DATA_FETCH_TAG] + ) + expect(tagged_requests.length).to eq(1) + expect(tagged_requests.first.url).to eq(payer_org_url) + end + + it 'fetches parent locations when a prefetched location has partOf' do + allow(test).to receive(:suite).and_return(suite) + parent_url = "#{fhir_server}/Location/parent-loc" + parent_request = stub_request(:get, parent_url) + .to_return(status: 200, body: { 'resourceType' => 'Location', 'id' => 'parent-loc' }.to_json) + + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + hook_instance = order_sign_hook_request['hookInstance'] + request_with_location = order_sign_hook_request.merge( + 'prefetch' => { + 'locations' => { + 'resourceType' => 'Bundle', + 'type' => 'searchset', + 'entry' => [{ 'resource' => { + 'resourceType' => 'Location', + 'id' => 'child-loc', + 'partOf' => { 'reference' => 'Location/parent-loc' } + } }] + } + } + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, request_with_location) + + expect(last_response).to be_ok + expect(parent_request).to have_been_made.once + tagged_requests = requests_repo.tagged_requests( + test_session.id, + [DaVinciCRDTestKit::PARENT_LOCATION_FETCH_TAG, + DaVinciCRDTestKit::TagMethods.hook_instance_data_fetch_tag(hook_instance), + DaVinciCRDTestKit::DATA_FETCH_TAG] + ) + expect(tagged_requests.length).to eq(1) + expect(tagged_requests.first.url).to eq(parent_url) + end + + it 'makes FHIR data-fetch requests when requestedVersion extension overrides path to v201' do + allow(test).to receive(:suite).and_return(suite) + pat_request = stub_request(:get, patient_example_reference_absolute) + .to_return(status: 200, body: patient_example.to_json) + p_request = stub_request(:get, practitioner_example_reference_absolute) + .to_return(status: 200, body: practitioner_example.to_json) + cov_request = stub_request(:get, coverage_search_url) + .to_return(status: 200, body: crd_coverage_bundle.to_json) + + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + request_with_v201_extension = order_sign_hook_request.merge( + 'extension' => { 'davinci-crd.requestedVersion' => '2.0' } + ) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, request_with_v201_extension) + + expect(last_response).to be_ok + expect(pat_request).to have_been_made.once + expect(p_request).to have_been_made.once + expect(cov_request).to have_been_made.once + end + end + + describe 'when posting to the v221 prefetch-subset endpoint' do + let(:suite_id) { 'crd_client_v221' } + let(:test) { DaVinciCRDTestKit::V221::OrderSignReceiveRequestTest } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client_v221" } + let(:server_endpoint) { '/custom/crd_client_v221/prefetch-subset/cds-services/order-sign-subset' } + + it 'correctly identifies the hook from the subset endpoint path and returns 200' do + allow(test).to receive(:suite).and_return(suite) + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, order_sign_hook_request) + expect(last_response).to be_ok + end + + it 'returns 400 when the requested hook does not match the subset endpoint' do + allow(test).to receive(:suite).and_return(suite) + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + order_sign_hook_request['hook'] = 'appointment-book' + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, order_sign_hook_request) + + expect(last_response.status).to eq(400) + parsed_body = JSON.parse(last_response.body) + expect(parsed_body['resourceType']).to eq('OperationOutcome') + expect(parsed_body['issue'].first['details']['text']).to match(/order-sign.*appointment-book/) + end + + it 'tags the request with hook_instance_tag and ORDER_SIGN_TAG so it can be found by prefetch analysis tests' do + allow(test).to receive(:suite).and_return(suite) + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + hook_instance = order_sign_hook_request['hookInstance'] + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, order_sign_hook_request) + + expect(last_response).to be_ok + tagged_requests = requests_repo.tagged_requests( + test_session.id, + [DaVinciCRDTestKit::TagMethods.hook_instance_tag(hook_instance), DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + expect(tagged_requests.length).to eq(1) + end + end + + it 'does not make FHIR data-fetch requests when requestedVersion extension specifies 2.2' do + allow(test).to receive(:suite).and_return(suite) + pat_request = stub_request(:get, patient_example_reference_absolute) + .to_return(status: 200, body: patient_example.to_json) + p_request = stub_request(:get, practitioner_example_reference_absolute) + .to_return(status: 200, body: practitioner_example.to_json) + cov_request = stub_request(:get, coverage_search_url) + .to_return(status: 200, body: crd_coverage_bundle.to_json) + + token = jwt_helper.build( + aud: order_sign_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, + order_sign_custom_response_template: { cards: [instructions_card_template] }.to_json) + + request_with_v221_extension = order_sign_hook_request.merge( + 'extension' => { 'davinci-crd.requestedVersion' => '2.2' } + ) + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, request_with_v221_extension) + + expect(last_response).to be_ok + expect(pat_request).to_not have_been_made + expect(p_request).to_not have_been_made + expect(cov_request).to_not have_been_made + end + end end diff --git a/spec/davinci_crd_test_kit/hook_request_fetched_data_test_spec.rb b/spec/davinci_crd_test_kit/hook_request_fetched_data_test_spec.rb index 456b8923..34f5f6b1 100644 --- a/spec/davinci_crd_test_kit/hook_request_fetched_data_test_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_fetched_data_test_spec.rb @@ -1,8 +1,8 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_fetched_data_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' -require_relative '../../lib/davinci_crd_test_kit/tags' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_fetched_data_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/cross_suite/tags' -RSpec.describe DaVinciCRDTestKit::HookRequestFetchedDataTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestFetchedDataTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } let(:runnable) { described_class } @@ -41,7 +41,7 @@ def create_appointment_hook_request(hook_instance, url: appointment_book_url, bo request_body: body.is_a?(Hash) ? body.to_json : body, status:, headers:, - tags: ['appointment-book', hook_instance_tag(hook_instance), workflow_tag].compact + tags: ['appointment-book', DaVinciCRDTestKit::TagMethods.hook_instance_tag(hook_instance), workflow_tag].compact ) end @@ -63,14 +63,11 @@ def create_data_fetch_request(url, hook_instance, body: nil, status: 200, header request_body: body.is_a?(Hash) ? body.to_json : body, status:, headers:, - tags: [DaVinciCRDTestKit::DATA_FETCH_TAG, hook_instance_tag(hook_instance)] + tags: [DaVinciCRDTestKit::DATA_FETCH_TAG, + DaVinciCRDTestKit::TagMethods.hook_instance_data_fetch_tag(hook_instance)] ) end - def hook_instance_tag(hook_instance) - "#{DaVinciCRDTestKit::HOOK_INSTANCE_TAG_PREFIX}#{hook_instance}" - end - def entity_result_message(test, index: 0) results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]) .first @@ -79,7 +76,7 @@ def entity_result_message(test, index: 0) describe 'Without a specific workflow' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestFetchedDataTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestFetchedDataTest) do config( options: { hook_name: 'appointment-book' } ) @@ -167,7 +164,7 @@ def entity_result_message(test, index: 0) let(:alpha_workflow) { 'alpha' } let(:beta_workflow) { 'beta' } let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestFetchedDataTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestFetchedDataTest) do config( options: { hook_name: 'appointment-book', crd_test_group: 'alpha' } ) diff --git a/spec/davinci_crd_test_kit/hook_request_optional_fields_test_spec.rb b/spec/davinci_crd_test_kit/hook_request_optional_fields_test_spec.rb index bf51737f..ba71e695 100644 --- a/spec/davinci_crd_test_kit/hook_request_optional_fields_test_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_optional_fields_test_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_optional_fields_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_optional_fields_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::HookRequestOptionalFieldsTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestOptionalFieldsTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } let(:runnable) { described_class } @@ -51,7 +51,7 @@ def entity_result_message(index: 0) describe 'Appointment Book Hook Request Optional Fields' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestOptionalFieldsTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestOptionalFieldsTest) do config( options: { hook_name: 'appointment-book' } ) @@ -231,7 +231,7 @@ def entity_result_message(index: 0) result = run(test) expect(result.result).to eq('fail') - expect(entity_result_message.message).to match(/Request 1: Hook request field prefetch is not of type Hash/) + expect(entity_result_message.message).to match(/Request 1: Hook request field `prefetch` is not of type Hash/) end it 'fails if an optional field is defined but empty (hash)' do diff --git a/spec/davinci_crd_test_kit/hook_request_prefetch_equals_queried_test_spec.rb b/spec/davinci_crd_test_kit/hook_request_prefetch_equals_queried_test_spec.rb index 38d779f3..773f0b90 100644 --- a/spec/davinci_crd_test_kit/hook_request_prefetch_equals_queried_test_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_prefetch_equals_queried_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::HookRequestPrefetchEqualsQueriedTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestPrefetchEqualsQueriedTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -170,7 +170,7 @@ def create_appointment_hook_request(url: appointment_book_url, body: nil, status describe 'Appointment Book Hook Prefetch' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestPrefetchEqualsQueriedTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestPrefetchEqualsQueriedTest) do config( options: { hook_name: 'appointment-book' } ) diff --git a/spec/davinci_crd_test_kit/hook_request_required_fields_test_spec.rb b/spec/davinci_crd_test_kit/hook_request_required_fields_test_spec.rb index 8e96e4fc..8097f6d1 100644 --- a/spec/davinci_crd_test_kit/hook_request_required_fields_test_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_required_fields_test_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_required_fields_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_required_fields_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::HookRequestRequiredFieldsTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestRequiredFieldsTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } let(:runnable) { described_class } @@ -51,7 +51,7 @@ def entity_result_message describe 'Appointment Book Hook Request Required Fields' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestRequiredFieldsTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestRequiredFieldsTest) do config( options: { hook_path: '/cds-services/appointment-book-service', hook_name: 'appointment-book' } ) diff --git a/spec/davinci_crd_test_kit/hook_request_valid_context_test_appointment_book_spec.rb b/spec/davinci_crd_test_kit/hook_request_valid_context_test_appointment_book_spec.rb index fde7c665..49e8e9ce 100644 --- a/spec/davinci_crd_test_kit/hook_request_valid_context_test_appointment_book_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_valid_context_test_appointment_book_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::HookRequestValidContextTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestValidContextTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } let(:jwt_helper) { Class.new(DaVinciCRDTestKit::JwtHelper) } @@ -78,7 +78,7 @@ def entity_result_message(runnable) describe 'Appointment Book Hook Valid Context' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidContextTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidContextTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) diff --git a/spec/davinci_crd_test_kit/hook_request_valid_context_test_encounter_hook_spec.rb b/spec/davinci_crd_test_kit/hook_request_valid_context_test_encounter_hook_spec.rb index fb2a3812..32bcb66a 100644 --- a/spec/davinci_crd_test_kit/hook_request_valid_context_test_encounter_hook_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_valid_context_test_encounter_hook_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::HookRequestValidContextTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestValidContextTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } let(:example_client_url) { 'https://cds.example.org' } diff --git a/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_dispatch_spec.rb b/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_dispatch_spec.rb index 2f1d3bf0..7cb2d133 100644 --- a/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_dispatch_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_dispatch_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::HookRequestValidContextTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestValidContextTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } @@ -79,7 +79,7 @@ def entity_result_message(runnable) describe 'Order Dispatch Hook Valid Context' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidContextTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidContextTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) diff --git a/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_select_spec.rb b/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_select_spec.rb index 8bf05ef2..b4739e3a 100644 --- a/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_select_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_select_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::HookRequestValidContextTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestValidContextTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } @@ -83,7 +83,7 @@ def entity_result_message(runnable) describe 'Order Select Hook Valid Context' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidContextTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidContextTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) diff --git a/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_sign_spec.rb b/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_sign_spec.rb index 4d5800f1..51cf8879 100644 --- a/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_sign_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_valid_context_test_order_sign_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_valid_context_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_context_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::HookRequestValidContextTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestValidContextTest do let(:suite_id) { 'crd_client' } let(:results_repo) { Inferno::Repositories::Results.new } @@ -79,7 +79,7 @@ def entity_result_message(runnable) describe 'Order Sign Hook Valid Context' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidContextTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidContextTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) diff --git a/spec/davinci_crd_test_kit/hook_request_valid_prefetch_test_spec.rb b/spec/davinci_crd_test_kit/hook_request_valid_prefetch_test_spec.rb index 3b5c7879..6e1e8aad 100644 --- a/spec/davinci_crd_test_kit/hook_request_valid_prefetch_test_spec.rb +++ b/spec/davinci_crd_test_kit/hook_request_valid_prefetch_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/hook_request_valid_prefetch_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/verify_request/hook_request_valid_prefetch_test' -RSpec.describe DaVinciCRDTestKit::HookRequestValidPrefetchTest do +RSpec.describe DaVinciCRDTestKit::V201::HookRequestValidPrefetchTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -147,7 +147,7 @@ def entity_result_message(runnable) describe 'Appointment Book Hook Valid Prefetch' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidPrefetchTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidPrefetchTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) @@ -372,7 +372,7 @@ def entity_result_message(runnable) describe 'Encounter Start Hook Valid Prefetch' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidPrefetchTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidPrefetchTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) @@ -403,7 +403,7 @@ def entity_result_message(runnable) describe 'Order Dispatch Hook Valid Prefetch' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidPrefetchTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidPrefetchTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) @@ -434,7 +434,7 @@ def entity_result_message(runnable) describe 'Order Select Hook Valid Prefetch' do let(:test) do - Class.new(DaVinciCRDTestKit::HookRequestValidPrefetchTest) do + Class.new(DaVinciCRDTestKit::V201::HookRequestValidPrefetchTest) do fhir_resource_validator do url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) diff --git a/spec/davinci_crd_test_kit/inferno_response_validation_test_spec.rb b/spec/davinci_crd_test_kit/inferno_response_validation_test_spec.rb index 5799458a..745d38e1 100644 --- a/spec/davinci_crd_test_kit/inferno_response_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/inferno_response_validation_test_spec.rb @@ -1,15 +1,15 @@ -require_relative '../../lib/davinci_crd_test_kit/tags' +require_relative '../../lib/davinci_crd_test_kit/cross_suite/tags' -RSpec.describe DaVinciCRDTestKit::InfernoResponseValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::InfernoResponseValidationTest do let(:suite_id) { 'crd_client' } let(:order_sign_test) do - Class.new(DaVinciCRDTestKit::InfernoResponseValidationTest) do + Class.new(DaVinciCRDTestKit::V201::InfernoResponseValidationTest) do config({ options: { hook_name: DaVinciCRDTestKit::ORDER_SIGN_TAG } }) end end let(:coverage_tag) { 'coverage' } let(:order_sign_coverage_test) do - Class.new(DaVinciCRDTestKit::InfernoResponseValidationTest) do + Class.new(DaVinciCRDTestKit::V201::InfernoResponseValidationTest) do config({ options: { hook_name: DaVinciCRDTestKit::ORDER_SIGN_TAG, crd_test_group: 'coverage' } }) end end @@ -28,6 +28,10 @@ Class.new do include DaVinciCRDTestKit::MockServiceResponse + def ig_version + 'v201' + end + def selected_response_types @selected_response_types ||= [ 'coverage_information', @@ -52,7 +56,7 @@ def request_body }) end - def hook_name + def requested_hook DaVinciCRDTestKit::ORDER_SIGN_TAG end end @@ -88,8 +92,13 @@ def store_request(response_body, tags, status: 200) describe 'when requests made' do it 'skips if only error responses are returned' do - store_request('Invalid template provided for custom Inferno CRD response: invalid JSON', - [DaVinciCRDTestKit::ORDER_SIGN_TAG], status: 500) + store_request( + { resourceType: 'OperationOutcome', + issue: [{ severity: 'error', code: 'processing', + details: { text: 'Invalid template provided for custom Inferno CRD response: invalid JSON' } }] } + .to_json, + [DaVinciCRDTestKit::ORDER_SIGN_TAG], status: 500 + ) result = run(order_sign_test) expect(result.result).to eq('skip') diff --git a/spec/davinci_crd_test_kit/instructions_card_received_across_hooks_test_spec.rb b/spec/davinci_crd_test_kit/instructions_card_received_across_hooks_test_spec.rb index 9bbc6baa..9db66292 100644 --- a/spec/davinci_crd_test_kit/instructions_card_received_across_hooks_test_spec.rb +++ b/spec/davinci_crd_test_kit/instructions_card_received_across_hooks_test_spec.rb @@ -1,13 +1,14 @@ -RSpec.describe DaVinciCRDTestKit::InstructionsCardReceivedAcrossHooksTest do +RSpec.describe DaVinciCRDTestKit::V201::InstructionsCardReceivedAcrossHooksTest do let(:suite_id) { 'crd_server' } let(:runnable_across) do - id = 'crd_server-crd_server_hooks-crd_server_required_card_response_validation' \ - '-crd_valid_instructions_card_received_across_hooks' + id = 'crd_server-crd_v201_server_hooks-crd_v201_server_required_card_response_validation' \ + '-crd_v201_valid_instructions_card_received_across_hooks' Inferno::Repositories::Tests.new.find(id) end let(:runnable_within) do Inferno::Repositories::Tests.new - .find('crd_server-crd_server_hooks-crd_server_order_dispatch-crd_valid_instructions_card_received') + .find('crd_server-crd_v201_server_hooks-crd_v201_server_order_dispatch-Group03-' \ + 'crd_v201_valid_instructions_card_received') end let(:valid_response_body) do File.read(File.join(__dir__, '..', 'fixtures', 'crd_authorization_hook_response.json')) diff --git a/spec/davinci_crd_test_kit/instructions_card_received_test_spec.rb b/spec/davinci_crd_test_kit/instructions_card_received_test_spec.rb index d5f0644d..eeb9cc7a 100644 --- a/spec/davinci_crd_test_kit/instructions_card_received_test_spec.rb +++ b/spec/davinci_crd_test_kit/instructions_card_received_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::InstructionsCardReceivedTest do +RSpec.describe DaVinciCRDTestKit::V201::InstructionsCardReceivedTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } let(:cards) do diff --git a/spec/davinci_crd_test_kit/invoke_hook_spec.rb b/spec/davinci_crd_test_kit/invoke_hook_spec.rb new file mode 100644 index 00000000..5aeeed4e --- /dev/null +++ b/spec/davinci_crd_test_kit/invoke_hook_spec.rb @@ -0,0 +1,261 @@ +RSpec.describe DaVinciCRDTestKit::Jobs::InvokeHook do + let(:test_session_id) { '12345' } + let(:test_run_id) { '12345' } + let(:result_id) { '12345' } + let(:suite_id) { 'crd_server' } + + let(:base_url) { 'http://example.com' } + let(:discovery_url) { 'http://example.com/cds-services' } + let(:inferno_base_url) { 'http://inferno.com' } + let(:service_ids) { 'service_ids' } + let(:service_request_body) do + json = File.read(File.join(__dir__, '..', 'fixtures', 'appointment_book_hook_request.json')) + JSON.parse(json) + end + let(:service_request_bodies) { [service_request_body] } + let(:service_endpoint) { "#{discovery_url}/#{service_ids}" } + let(:encryption_method) { 'ES384' } + let(:invoked_hook) { 'appointment-book' } + let(:coverage_info_response) do + { + cards: [ + { + summary: 'Coverage information', + indicator: 'info', + source: { type: DaVinciCRDTestKit::CardsIdentification::COVERAGE_INFO_CONFIGURATION_CODE } + } + ] + } + end + let(:filtered_response) { { cards: [] } } + let(:continuation_url) do + "#{inferno_base_url}/custom/#{suite_id}/resume_pass?token=#{test_session_id}" + end + let(:failure_url) do + "#{inferno_base_url}/custom/#{suite_id}/resume_fail?token=#{test_session_id}" \ + '&message=Hook%20invocation%20failed:%20bad' + end + + before do + allow_any_instance_of(Inferno::Repositories::TestRuns) + .to receive(:last_test_run) + .and_return(instance_double( + Inferno::Entities::TestRun, id: test_run_id + )) + allow_any_instance_of(Inferno::Repositories::TestRuns) + .to receive(:status_for_test_run) + .and_return('waiting') + allow_any_instance_of(Inferno::Repositories::Results) + .to receive(:find_waiting_result) + .and_return(instance_double( + Inferno::Entities::Result, id: result_id + )) + allow_any_instance_of(Inferno::Repositories::Requests) + .to receive(:create) + .and_return(nil) + end + + describe 'when continuing after the invoke hooks job' do + it 'invokes the continuation url after successful hook invocations' do + hook_request = stub_request(:post, service_endpoint).to_return(status: 200) + continuation_request = stub_request(:get, continuation_url).to_return(status: 200) + expect_any_instance_of(Inferno::Repositories::Requests) # rubocop:disable RSpec/StubbedMock + .to receive(:create) + .and_return(nil) + + described_class.new.perform( + test_session_id, service_request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, false, false + ) + + expect(hook_request).to have_been_made.once + expect(continuation_request).to have_been_made.once + end + + it 'updates hook request details before invoking the service' do + original_hook_instance = service_request_body['hookInstance'] + hook_request = stub_request(:post, service_endpoint) + .with do |request| + request_body = JSON.parse(request.body) + token = request_body.dig('fhirAuthorization', 'access_token') + token_body = JSON.parse(Base64.urlsafe_decode64(token)) + + request_body['hookInstance'] != original_hook_instance && + request_body['fhirServer'] == "#{inferno_base_url}/fhir" && + token_body['session_id'] == test_session_id + end + .to_return(status: 200) + stub_request(:get, continuation_url).to_return(status: 200) + + described_class.new.perform( + test_session_id, service_request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, false, false + ) + + expect(hook_request).to have_been_made.once + end + + it 'sends follow-up requests when coverage-info content is returned' do + job = described_class.new + + random_key = 'RANDOM_KEY' + allow(job).to receive(:random_key).and_return(random_key) + + original_request = + stub_request(:post, service_endpoint) + .with do |request| + JSON.parse(request.body).dig('extension', 'davinci-crd.configuration', 'coverage-info').nil? && + JSON.parse(request.body).dig('extension', 'davinci-crd.configuration', random_key).nil? && + JSON.parse(request.body).dig('context', random_key).nil? && + JSON.parse(request.body)[random_key].nil? + end + .to_return(status: 200, body: coverage_info_response.to_json) + + coverage_info_disabled_request = + stub_request(:post, service_endpoint) + .with do |request| + JSON.parse(request.body).dig('extension', 'davinci-crd.configuration', 'coverage-info') == false + end + .to_return(status: 200, body: filtered_response.to_json) + + unknown_configuration_request = + stub_request(:post, service_endpoint) + .with do |request| + JSON.parse(request.body).dig('extension', 'davinci-crd.configuration', random_key) == true + end + .to_return(status: 200, body: filtered_response.to_json) + + unknown_context_request = + stub_request(:post, service_endpoint) + .with do |request| + JSON.parse(request.body).dig('context', random_key).present? + end + .to_return(status: 200, body: filtered_response.to_json) + + unknown_element_request = + stub_request(:post, service_endpoint) + .with do |request| + JSON.parse(request.body)[random_key].present? + end + .to_return(status: 200, body: filtered_response.to_json) + + stub_request(:get, continuation_url).to_return(status: 200) + + job.perform( + test_session_id, service_request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, false, true + ) + + expect(original_request).to have_been_made.once + expect(coverage_info_disabled_request).to have_been_made.once + expect(unknown_configuration_request).to have_been_made.once + expect(unknown_context_request).to have_been_made.once + expect(unknown_element_request).to have_been_made.once + end + + it 'sends only one coverage-info disabled follow-up request per job' do + request_bodies = [service_request_body, service_request_body.deep_dup] + original_request = stub_request(:post, service_endpoint) + .with do |request| + JSON.parse(request.body).dig('extension', 'davinci-crd.configuration', 'coverage-info').nil? + end + .to_return(status: 200, body: coverage_info_response.to_json) + coverage_info_disabled_request = stub_request(:post, service_endpoint) + .with do |request| + JSON.parse(request.body).dig('extension', 'davinci-crd.configuration', 'coverage-info') == false + end + .to_return(status: 200, body: filtered_response.to_json) + stub_request(:get, continuation_url).to_return(status: 200) + + job = described_class.new + job.instance_variable_set(:@unknown_configuration_invoked, true) + job.instance_variable_set(:@unknown_context_invoked, true) + job.instance_variable_set(:@unknown_cds_hooks_element_invoked, true) + + job.perform( + test_session_id, request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, false, true + ) + + expect(original_request).to have_been_made.twice + expect(coverage_info_disabled_request).to have_been_made.once + end + + it 'does not invoke the continuation url after successful hook invocations if acknowledgement required' do + hook_request = stub_request(:post, service_endpoint).to_return(status: 200) + continuation_request = stub_request(:get, continuation_url).to_return(status: 200) + expect_any_instance_of(Inferno::Repositories::Requests) # rubocop:disable RSpec/StubbedMock + .to receive(:create) + .and_return(nil) + + described_class.new.perform( + test_session_id, service_request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, true, false + ) + + expect(hook_request).to have_been_made.once + expect(continuation_request).to_not have_been_made + end + + it 'invokes the failure url after failed hook invocations' do + fake_connection = instance_double(Faraday::Connection) + allow(fake_connection).to receive(:post).and_raise(Faraday::ConnectionFailed.new('bad')) + allow_any_instance_of(described_class) + .to receive(:service_connection).and_return(fake_connection) + failure_request = stub_request(:get, failure_url).to_return(status: 200) + + described_class.new.perform( + test_session_id, service_request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, false, false + ) + expect(failure_request).to have_been_made.once + end + + it 'ends without invoking the continuation url if the test was cancelled before all invocations sent' do + call_count = 0 + allow_any_instance_of(Inferno::Repositories::Results) + .to receive(:find_waiting_result) do + call_count += 1 + if call_count < 4 + instance_double( + Inferno::Entities::Result, id: result_id + ) + end + end + + hook_request = stub_request(:post, service_endpoint).to_return(status: 200) + continuation_request = stub_request(:get, continuation_url).to_return(status: 200) + expect_any_instance_of(Inferno::Repositories::Requests) # rubocop:disable RSpec/StubbedMock + .to receive(:create) + .and_return(nil) + + described_class.new.perform( + test_session_id, service_request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, false, false + ) + + expect(hook_request).to have_been_made.once + expect(continuation_request).to_not have_been_made + end + + it 'ends without doing anything if the test is done at the start' do + allow_any_instance_of(Inferno::Repositories::TestRuns) + .to receive(:status_for_test_run) + .and_return('done') + allow_any_instance_of(Inferno::Repositories::Results) + .to receive(:find_waiting_result) + .and_return(nil) + + hook_request = stub_request(:post, service_endpoint).to_return(status: 200) + continuation_request = stub_request(:get, continuation_url).to_return(status: 200) + + described_class.new.perform( + test_session_id, service_request_bodies, service_endpoint, inferno_base_url, + nil, encryption_method, invoked_hook, continuation_url, failure_url, false, false + ) + + expect(hook_request).to_not have_been_made + expect(continuation_request).to_not have_been_made + end + end +end diff --git a/spec/davinci_crd_test_kit/launch_smart_app_card_validation_test_spec.rb b/spec/davinci_crd_test_kit/launch_smart_app_card_validation_test_spec.rb index fd9b7440..1c738daa 100644 --- a/spec/davinci_crd_test_kit/launch_smart_app_card_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/launch_smart_app_card_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::LaunchSmartAppCardValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::LaunchSmartAppCardValidationTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } let(:valid_cards) do diff --git a/spec/davinci_crd_test_kit/mock_ehr/fhir_create_endpoint_spec.rb b/spec/davinci_crd_test_kit/mock_ehr/fhir_create_endpoint_spec.rb new file mode 100644 index 00000000..18251dbe --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_ehr/fhir_create_endpoint_spec.rb @@ -0,0 +1,115 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler' + +RSpec.describe DaVinciCRDTestKit::V201::ServerInvokeHookTest, :request do + let(:suite_id) { 'crd_server' } + let(:runnable) do + Class.new(described_class) do + input :inferno_base_url + end + end + let(:test_session_id) { '12345' } + let(:token) do + DaVinciCRDTestKit::MockEHR::FHIRRequestHandler.session_id_to_token(test_session_id) + end + let(:base_url) { 'http://example.com' } + let(:discovery_url) { 'http://example.com/cds-services' } + let(:inferno_base_url) { 'http://inferno.com' } + let(:service_ids) { 'appointment-book-service' } + let(:service_request_body) do + json = File.read(File.join(__dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json')) + JSON.parse(json) + end + let(:service_request_bodies) { [service_request_body].to_json } + let(:encryption_method) { 'ES384' } + let(:mock_ehr_bundle) { FHIR::Bundle.new.to_json } + let(:new_patient) { FHIR::Patient.new(name: [FHIR::HumanName.new(family: 'Test')]) } + let(:not_a_bundle) { FHIR::Patient.new.to_json } + + def wait_and_auth(bundle_input = mock_ehr_bundle) + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:, + mock_ehr_bundle: bundle_input) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + end + + before do + allow_any_instance_of(DaVinciCRDTestKit::Jobs::InvokeHook) # hook invocations + .to receive(:perform).and_return(nil) + allow_any_instance_of(runnable).to receive(:test_session_id).and_return(test_session_id) + end + + describe 'FHIRCreateEndpoint - POST /fhir/:resource_type' do + it 'returns 201 with the created resource' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Patient", new_patient.to_json + expect(last_response.status).to eq(201) + resource = FHIR.from_contents(last_response.body) + expect(resource.resourceType).to eq('Patient') + end + + it 'assigns a generated id to the created resource' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Patient", new_patient.to_json + resource = FHIR.from_contents(last_response.body) + expect(resource.id).to_not be_nil + end + + it 'sets Content-Type to application/fhir+json' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Patient", new_patient.to_json + expect(last_response.headers['Content-Type']).to include('application/fhir+json') + end + + it 'returns 400 when the body resource type does not match the URL resource type' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Observation", new_patient.to_json + expect(last_response.status).to eq(400) + outcome = FHIR.from_contents(last_response.body) + expect(outcome.resourceType).to eq('OperationOutcome') + end + + it 'returns 400 when the body is not valid FHIR' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Patient", '{"not":"fhir"}' + expect(last_response.status).to eq(400) + outcome = FHIR.from_contents(last_response.body) + expect(outcome.resourceType).to eq('OperationOutcome') + end + + it 'adds the created resource to the bundle in session data' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Patient", new_patient.to_json + expect(last_response.status).to eq(201) + + created_id = FHIR.from_contents(last_response.body).id + saved_json = session_data_repo.load(test_session_id: test_session.id, name: 'mock_ehr_bundle') + saved_bundle = FHIR.from_contents(saved_json) + expect(saved_bundle.entry.length).to eq(1) + expect(saved_bundle.entry.first.resource.id).to eq(created_id) + end + + it 'sets Access-Control-Allow-Origin to *' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Patient", new_patient.to_json + expect(last_response.headers['Access-Control-Allow-Origin']).to eq('*') + end + + it 'returns an error when the Authorization header is missing' do + run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle:) + post "/custom/#{suite_id}/fhir/Patient", new_patient.to_json + expect(last_response.status).to be >= 400 + end + + it 'created resource can be read back via GET' do + wait_and_auth + post "/custom/#{suite_id}/fhir/Patient", new_patient.to_json + expect(last_response.status).to eq(201) + + created_id = FHIR.from_contents(last_response.body).id + get "/custom/#{suite_id}/fhir/Patient/#{created_id}" + expect(last_response.status).to eq(200) + expect(FHIR.from_contents(last_response.body).id).to eq(created_id) + end + end +end diff --git a/spec/davinci_crd_test_kit/mock_ehr/fhir_delete_endpoint_spec.rb b/spec/davinci_crd_test_kit/mock_ehr/fhir_delete_endpoint_spec.rb new file mode 100644 index 00000000..0736c4c8 --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_ehr/fhir_delete_endpoint_spec.rb @@ -0,0 +1,98 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler' + +RSpec.describe DaVinciCRDTestKit::V201::ServerInvokeHookTest, :request do + let(:suite_id) { 'crd_server' } + let(:runnable) do + Class.new(described_class) do + input :inferno_base_url + end + end + let(:test_session_id) { '12345' } + let(:token) do + DaVinciCRDTestKit::MockEHR::FHIRRequestHandler.session_id_to_token(test_session_id) + end + let(:base_url) { 'http://example.com' } + let(:discovery_url) { 'http://example.com/cds-services' } + let(:inferno_base_url) { 'http://inferno.com' } + let(:service_ids) { 'appointment-book-service' } + let(:service_request_body) do + json = File.read(File.join(__dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json')) + JSON.parse(json) + end + let(:service_request_bodies) { [service_request_body].to_json } + let(:encryption_method) { 'ES384' } + let(:patient) do + FHIR.from_contents(File.read(File.join(__dir__, '..', '..', 'fixtures', 'crd_patient_example.json'))) + end + let(:mock_ehr_bundle) do + bundle = FHIR::Bundle.new + bundle.entry << FHIR::Bundle::Entry.new({ resource: patient }) + bundle.to_json + end + let(:not_a_bundle) { FHIR::Patient.new.to_json } + + def wait_and_auth(bundle_input = mock_ehr_bundle) + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:, + mock_ehr_bundle: bundle_input) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + end + + before do + allow_any_instance_of(DaVinciCRDTestKit::Jobs::InvokeHook) # hook invocations + .to receive(:perform).and_return(nil) + allow_any_instance_of(runnable).to receive(:test_session_id).and_return(test_session_id) + end + + describe 'FHIRDeleteEndpoint - DELETE /fhir/:resource_type/:resource_id' do + it 'returns 204 after deleting an existing resource' do + wait_and_auth + delete "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to eq(204) + end + + it 'returns no body after a successful delete' do + wait_and_auth + delete "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.body).to be_empty + end + + it 'returns 204 when the resource does not exist (idempotent)' do + wait_and_auth + delete "/custom/#{suite_id}/fhir/Patient/nonexistent-id" + expect(last_response.status).to eq(204) + end + + it 'removes the resource from the bundle in session data' do + wait_and_auth + delete "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to eq(204) + + saved_json = session_data_repo.load(test_session_id: test_session.id, name: 'mock_ehr_bundle') + saved_bundle = FHIR.from_contents(saved_json) + expect(saved_bundle.entry).to be_empty + end + + it 'sets Access-Control-Allow-Origin to *' do + wait_and_auth + delete "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.headers['Access-Control-Allow-Origin']).to eq('*') + end + + it 'returns an error when the Authorization header is missing' do + run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle:) + delete "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to be >= 400 + end + + it 'deleted resource cannot be read back via GET' do + wait_and_auth + delete "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to eq(204) + + get "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to eq(404) + end + end +end diff --git a/spec/davinci_crd_test_kit/mock_ehr/fhir_read_endpoint_spec.rb b/spec/davinci_crd_test_kit/mock_ehr/fhir_read_endpoint_spec.rb new file mode 100644 index 00000000..56371450 --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_ehr/fhir_read_endpoint_spec.rb @@ -0,0 +1,83 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler' + +RSpec.describe DaVinciCRDTestKit::V201::ServerInvokeHookTest, :request do + let(:suite_id) { 'crd_server' } + let(:runnable) do + Class.new(described_class) do + input :inferno_base_url + end + end + let(:test_session_id) { '12345' } + let(:token) do + DaVinciCRDTestKit::MockEHR::FHIRRequestHandler.session_id_to_token(test_session_id) + end + let(:base_url) { 'http://example.com' } + let(:discovery_url) { 'http://example.com/cds-services' } + let(:inferno_base_url) { 'http://inferno.com' } + let(:service_ids) { 'appointment-book-service' } + let(:service_request_body) do + json = File.read(File.join(__dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json')) + JSON.parse(json) + end + let(:service_request_bodies) { [service_request_body].to_json } + let(:encryption_method) { 'ES384' } + let(:patient) do + FHIR.from_contents(File.read(File.join(__dir__, '..', '..', 'fixtures', 'crd_patient_example.json'))) + end + let(:mock_ehr_bundle) do + bundle = FHIR::Bundle.new + bundle.entry << FHIR::Bundle::Entry.new({ resource: patient }) + bundle.to_json + end + + def wait_and_auth(bundle_input = mock_ehr_bundle) + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:, + mock_ehr_bundle: bundle_input) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + end + + before do + allow_any_instance_of(DaVinciCRDTestKit::Jobs::InvokeHook) # hook invocations + .to receive(:perform).and_return(nil) + allow_any_instance_of(runnable).to receive(:test_session_id).and_return(test_session_id) + end + + describe 'FHIRReadEndpoint - GET /fhir/:resource_type/:resource_id' do + it 'returns 200 with the matching resource' do + wait_and_auth + get "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to eq(200) + resource = FHIR.from_contents(last_response.body) + expect(resource.resourceType).to eq('Patient') + expect(resource.id).to eq(patient.id) + end + + it 'sets Content-Type to application/fhir+json' do + wait_and_auth + get "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.headers['Content-Type']).to include('application/fhir+json') + end + + it 'returns 404 with an OperationOutcome when the resource is not found' do + wait_and_auth + get "/custom/#{suite_id}/fhir/Patient/nonexistent-id" + expect(last_response.status).to eq(404) + outcome = FHIR.from_contents(last_response.body) + expect(outcome.resourceType).to eq('OperationOutcome') + end + + it 'sets Access-Control-Allow-Origin to *' do + wait_and_auth + get "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.headers['Access-Control-Allow-Origin']).to eq('*') + end + + it 'returns an error when the Authorization header is missing' do + run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle:) + get "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to be >= 400 + end + end +end diff --git a/spec/davinci_crd_test_kit/mock_ehr/fhir_request_handler_spec.rb b/spec/davinci_crd_test_kit/mock_ehr/fhir_request_handler_spec.rb new file mode 100644 index 00000000..ccebd1cd --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_ehr/fhir_request_handler_spec.rb @@ -0,0 +1,25 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler' + +RSpec.describe DaVinciCRDTestKit::MockEHR::FHIRRequestHandler do + let(:handler) do + Class.new { include DaVinciCRDTestKit::MockEHR::FHIRRequestHandler }.new + end + + describe '#token_to_session_id' do + let(:session_id) { 'abc123' } + let(:valid_token) { described_class.session_id_to_token(session_id) } + + it 'decodes a valid token and returns its session_id' do + expect(handler.token_to_session_id(valid_token)).to eq(session_id) + end + + it 'returns nil when the token contains characters invalid for urlsafe base64' do + expect(handler.token_to_session_id('not!!!valid@base64')).to be_nil + end + + it 'returns nil when the token is valid base64 but not JSON' do + token = Base64.urlsafe_encode64('not json', padding: false) + expect(handler.token_to_session_id(token)).to be_nil + end + end +end diff --git a/spec/davinci_crd_test_kit/mock_ehr/fhir_search_endpoint_spec.rb b/spec/davinci_crd_test_kit/mock_ehr/fhir_search_endpoint_spec.rb new file mode 100644 index 00000000..15f35560 --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_ehr/fhir_search_endpoint_spec.rb @@ -0,0 +1,943 @@ +# --------------------------------------------------------------------------- +# Integration tests — exercises the full HTTP endpoint via FHIRRequestTest +# --------------------------------------------------------------------------- +RSpec.describe DaVinciCRDTestKit::V201::ServerInvokeHookTest, :request do + let(:suite_id) { 'crd_server_v221' } + let(:runnable) do + Class.new(described_class) do + input :inferno_base_url + end + end + let(:test_session_id) { '12345' } + let(:token) do + DaVinciCRDTestKit::MockEHR::FHIRRequestHandler.session_id_to_token(test_session_id) + end + let(:base_url) { 'http://example.org' } + let(:discovery_url) { 'http://example.com/cds-services' } + let(:inferno_base_url) { 'http://inferno.com' } + let(:service_ids) { 'appointment-book-service' } + let(:service_request_body) do + json = File.read(File.join(__dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json')) + JSON.parse(json) + end + let(:service_request_bodies) { [service_request_body].to_json } + let(:encryption_method) { 'ES384' } + # A Patient with known, searchable field values. + let(:patient) do + FHIR::Patient.new( + id: 'patient-search-1', + gender: 'female', + birthDate: '1987-02-20', + name: [ + FHIR::HumanName.new(family: 'Smith', given: %w[John A.], suffix: ['MD']), + FHIR::HumanName.new(family: 'Jones', given: ['John']) + ], + identifier: [ + FHIR::Identifier.new(system: 'http://example.org/mrn', value: 'MRN-12345') + ], + address: [ + FHIR::Address.new(city: 'Springfield', state: 'IL', postalCode: '62701', country: 'US') + ] + ) + end + + # An Encounter with a closed day-precision period and other typed fields. + # Note: FHIR::Encounter.new ignores :local_class in the initializer hash; + # it must be set via the accessor after construction. + let(:encounter) do + enc = FHIR::Encounter.new( + id: 'encounter-search-1', + status: 'finished', + type: [ + FHIR::CodeableConcept.new( + coding: [FHIR::Coding.new(system: 'http://snomed.info/sct', code: '270427003')] + ) + ], + subject: FHIR::Reference.new(reference: 'Patient/patient-search-1'), + identifier: [ + FHIR::Identifier.new(system: 'http://example.org/visits', value: 'V-001') + ], + period: FHIR::Period.new(start: '2024-01-10', end: '2024-01-20') + ) + enc.local_class = FHIR::Coding.new( + system: 'http://terminology.hl7.org/CodeSystem/v3-ActCode', + code: 'AMB' + ) + enc + end + + let(:bundle) do + b = FHIR::Bundle.new + b.entry << FHIR::Bundle::Entry.new(resource: patient) + b.entry << FHIR::Bundle::Entry.new(resource: encounter) + b.to_json + end + + let(:patient_endpoint) { "/custom/#{suite_id}/fhir/Patient" } + let(:encounter_endpoint) { "/custom/#{suite_id}/fhir/Encounter" } + + before do + allow_any_instance_of(DaVinciCRDTestKit::Jobs::InvokeHook) # hook invocations + .to receive(:perform).and_return(nil) + allow_any_instance_of(runnable).to receive(:test_session_id).and_return(test_session_id) + end + + # Starts a waiting test run and issues a GET search request against the mock EHR. + # Returns the parsed FHIR Bundle response. + def search(endpoint_path, params = {}) + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:, + mock_ehr_bundle: bundle) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + + qs = params.map { |k, v| "#{k}=#{URI.encode_www_form_component(v.to_s)}" }.join('&') + request_url = qs.present? ? "#{endpoint_path}?#{qs}" : endpoint_path + get(request_url) + + response = FHIR.from_contents(last_response.body) + expect(response.link.find { |link| link.relation == 'self' }&.url) + .to eq(URI.decode_www_form_component("#{base_url}#{request_url}")) + + response + end + + # Like search but returns only the self-link URL without asserting it matches + # the full request URL — needed when unsupported params should be excluded. + def self_link_for_search(endpoint_path, params = {}) + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle: bundle) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + + qs = params.map { |k, v| "#{k}=#{URI.encode_www_form_component(v.to_s)}" }.join('&') + get(qs.present? ? "#{endpoint_path}?#{qs}" : endpoint_path) + + FHIR.from_contents(last_response.body).link.find { |l| l.relation == 'self' }&.url + end + + # ------------------------------------------------------------------------- + # Helpers for common assertions + # ------------------------------------------------------------------------- + def expect_one_result(response, id) + expect(last_response.status).to eq(200) + expect(response.resourceType).to eq('Bundle') + expect(response.entry.size).to eq(1) + expect(response.entry.first.resource.id).to eq(id) + end + + def expect_no_results(response) + expect(last_response.status).to eq(200) + expect(response.entry).to be_empty + end + + # ========================================================================= + # code / else-branch search (Patient.gender) + # ========================================================================= + describe 'code search — Patient.gender' do + it 'matches the exact code value' do + expect_one_result(search(patient_endpoint, gender: 'female'), 'patient-search-1') + end + + it 'does not match a different code value' do + expect_no_results(search(patient_endpoint, gender: 'male')) + end + end + + # ========================================================================= + # string search (Patient.name.family) + # ========================================================================= + describe 'string search — Patient.name.family' do + it 'matches on a prefix' do + expect_one_result(search(patient_endpoint, family: 'Smi'), 'patient-search-1') + end + + it 'is case-insensitive' do + expect_one_result(search(patient_endpoint, family: 'smith'), 'patient-search-1') + end + + it 'matches the full value' do + expect_one_result(search(patient_endpoint, family: 'Smith'), 'patient-search-1') + end + + it 'does not match an infix (non-prefix substring)' do + expect_no_results(search(patient_endpoint, family: 'mit')) + end + + it 'does not match a value from a different family name' do + expect_no_results(search(patient_endpoint, family: 'Brown')) + end + end + + # ========================================================================= + # HumanName search (Patient.name) + # ========================================================================= + describe 'HumanName search — Patient.name' do + it 'matches on a family-name prefix' do + expect_one_result(search(patient_endpoint, name: 'Smi'), 'patient-search-1') + end + + it 'matches on a given-name prefix' do + expect_one_result(search(patient_endpoint, name: 'Joh'), 'patient-search-1') + end + + it 'matches on a suffix prefix' do + expect_one_result(search(patient_endpoint, name: 'MD'), 'patient-search-1') + end + + it 'is case-insensitive' do + expect_one_result(search(patient_endpoint, name: 'smi'), 'patient-search-1') + end + + it 'does not match when no name component starts with the value' do + expect_no_results(search(patient_endpoint, name: 'Xyz')) + end + end + + # ========================================================================= + # CodeableConcept search (Encounter.type) + # ========================================================================= + describe 'CodeableConcept search — Encounter.type' do + it 'matches by code alone' do + expect_one_result(search(encounter_endpoint, type: '270427003'), 'encounter-search-1') + end + + it 'matches by system|code' do + expect_one_result( + search(encounter_endpoint, type: 'http://snomed.info/sct|270427003'), + 'encounter-search-1' + ) + end + + it 'does not match a wrong code' do + expect_no_results(search(encounter_endpoint, type: '999999')) + end + + it 'does not match a right code paired with the wrong system' do + expect_no_results(search(encounter_endpoint, type: 'http://wrong.system|270427003')) + end + end + + # ========================================================================= + # Coding search (Encounter.class) + # ========================================================================= + describe 'Coding search — Encounter.class' do + it 'matches by code alone' do + expect_one_result(search(encounter_endpoint, class: 'AMB'), 'encounter-search-1') + end + + it 'matches by system|code' do + expect_one_result( + search(encounter_endpoint, class: 'http://terminology.hl7.org/CodeSystem/v3-ActCode|AMB'), + 'encounter-search-1' + ) + end + + it 'is case-insensitive on the code' do + expect_one_result(search(encounter_endpoint, class: 'amb'), 'encounter-search-1') + end + + it 'does not match a different code' do + expect_no_results(search(encounter_endpoint, class: 'IMP')) + end + + it 'does not match the right code with the wrong system' do + expect_no_results( + search(encounter_endpoint, class: 'http://wrong.system|AMB') + ) + end + end + + # ========================================================================= + # Identifier search (Encounter.identifier) + # ========================================================================= + describe 'Identifier search — Encounter.identifier' do + it 'matches by value alone' do + expect_one_result(search(encounter_endpoint, identifier: 'V-001'), 'encounter-search-1') + end + + it 'matches by system|value' do + expect_one_result( + search(encounter_endpoint, identifier: 'http://example.org/visits|V-001'), + 'encounter-search-1' + ) + end + + it 'does not match a wrong value' do + expect_no_results(search(encounter_endpoint, identifier: 'V-999')) + end + + it 'does not match the right value paired with the wrong system' do + expect_no_results(search(encounter_endpoint, identifier: 'http://wrong.system|V-001')) + end + end + + # ========================================================================= + # Patient / subject reference search (Encounter.subject) + # ========================================================================= + describe 'patient/subject reference search — Encounter.patient' do + it 'matches with a plain patient id' do + expect_one_result(search(encounter_endpoint, patient: 'patient-search-1'), 'encounter-search-1') + end + + it 'matches with the Patient/ relative-reference format' do + expect_one_result( + search(encounter_endpoint, patient: 'Patient/patient-search-1'), + 'encounter-search-1' + ) + end + + it 'does not match a different patient id' do + expect_no_results(search(encounter_endpoint, patient: 'patient-99')) + end + end + + # ========================================================================= + # date search against a date-type field (Patient.birthDate = 1987-02-20) + # ========================================================================= + describe 'date search — Patient.birthDate (1987-02-20)' do + context 'when implicit eq (no comparator)' do + it 'matches the exact date' do + expect_one_result(search(patient_endpoint, birthdate: '1987-02-20'), 'patient-search-1') + end + + it 'matches with month precision (1987-02 contains Feb 20)' do + expect_one_result(search(patient_endpoint, birthdate: '1987-02'), 'patient-search-1') + end + + it 'matches with year precision (1987 contains Feb 20)' do + expect_one_result(search(patient_endpoint, birthdate: '1987'), 'patient-search-1') + end + + it 'does not match a different day' do + expect_no_results(search(patient_endpoint, birthdate: '1987-02-21')) + end + + it 'does not match a different month' do + expect_no_results(search(patient_endpoint, birthdate: '1987-03')) + end + + it 'does not match a different year' do + expect_no_results(search(patient_endpoint, birthdate: '1988')) + end + end + + context 'when gt (greater than)' do + it 'matches when target is one day after the search date' do + expect_one_result(search(patient_endpoint, birthdate: 'gt1987-02-19'), 'patient-search-1') + end + + it 'does not match when target equals the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'gt1987-02-20')) + end + + it 'does not match when target is before the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'gt1987-02-21')) + end + end + + context 'when lt (less than)' do + it 'matches when target is one day before the search date' do + expect_one_result(search(patient_endpoint, birthdate: 'lt1987-02-21'), 'patient-search-1') + end + + it 'does not match when target equals the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'lt1987-02-20')) + end + + it 'does not match when target is after the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'lt1987-02-19')) + end + end + + context 'when ge (greater than or equal)' do + it 'matches when target equals the search date' do + expect_one_result(search(patient_endpoint, birthdate: 'ge1987-02-20'), 'patient-search-1') + end + + it 'matches when target is after the search date' do + expect_one_result(search(patient_endpoint, birthdate: 'ge1987-02-19'), 'patient-search-1') + end + + it 'does not match when target is before the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'ge1987-02-21')) + end + end + + context 'when le (less than or equal)' do + it 'matches when target equals the search date' do + expect_one_result(search(patient_endpoint, birthdate: 'le1987-02-20'), 'patient-search-1') + end + + it 'matches when target is before the search date' do + expect_one_result(search(patient_endpoint, birthdate: 'le1987-02-21'), 'patient-search-1') + end + + it 'does not match when target is after the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'le1987-02-19')) + end + end + + context 'when ne (not equal)' do + it 'does not match the same date' do + expect_no_results(search(patient_endpoint, birthdate: 'ne1987-02-20')) + end + + it 'does not match the containing month' do + expect_no_results(search(patient_endpoint, birthdate: 'ne1987-02')) + end + + it 'matches a different day' do + expect_one_result(search(patient_endpoint, birthdate: 'ne1987-02-21'), 'patient-search-1') + end + + it 'matches a different month' do + expect_one_result(search(patient_endpoint, birthdate: 'ne1987-03'), 'patient-search-1') + end + end + + context 'when sa (starts after)' do + it 'matches when the target day starts the day after the search range ends' do + expect_one_result(search(patient_endpoint, birthdate: 'sa1987-02-19'), 'patient-search-1') + end + + it 'does not match when the target and search are the same day' do + expect_no_results(search(patient_endpoint, birthdate: 'sa1987-02-20')) + end + + it 'does not match when the target is before the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'sa1987-02-21')) + end + end + + context 'when eb (ends before)' do + it 'matches when the target day ends the day before the search range starts' do + expect_one_result(search(patient_endpoint, birthdate: 'eb1987-02-21'), 'patient-search-1') + end + + it 'does not match when the target and search are the same day' do + expect_no_results(search(patient_endpoint, birthdate: 'eb1987-02-20')) + end + + it 'does not match when the target is after the search date' do + expect_no_results(search(patient_endpoint, birthdate: 'eb1987-02-19')) + end + end + + context 'when ap (approximately)' do + it 'matches the same day' do + expect_one_result(search(patient_endpoint, birthdate: 'ap1987-02-20'), 'patient-search-1') + end + + it 'does not match a month that contains the target (search endpoints fall outside target day range)' do + # ap checks whether search range endpoints fall inside the target range. + # A month (Feb 1–Feb 28) has endpoints outside a single day (Feb 20), so no match. + expect_no_results(search(patient_endpoint, birthdate: 'ap1987-02')) + end + + it 'does not match a different day' do + expect_no_results(search(patient_endpoint, birthdate: 'ap1987-02-21')) + end + end + end + + # ========================================================================= + # Period search (Encounter.date → Encounter.period = 2024-01-10 .. 2024-01-20) + # ========================================================================= + describe 'Period search — Encounter.date (period 2024-01-10 to 2024-01-20)' do + context 'when implicit eq (no comparator — search must fully contain period)' do + it 'does not match a day inside the period (day cannot contain 10-day period)' do + expect_no_results(search(encounter_endpoint, date: '2024-01-15')) + end + + it 'matches a month that fully contains the period' do + expect_one_result(search(encounter_endpoint, date: '2024-01'), 'encounter-search-1') + end + + it 'does not match a day outside the period' do + expect_no_results(search(encounter_endpoint, date: '2024-01-21')) + end + + it 'does not match a month that only partially covers the period' do + # 2024-02 starts after the period ends + expect_no_results(search(encounter_endpoint, date: '2024-02')) + end + end + + context 'when gt (range above search overlaps target)' do + it 'matches when the period extends past the search date' do + expect_one_result(search(encounter_endpoint, date: 'gt2024-01-15'), 'encounter-search-1') + end + + it 'does not match when the period ends exactly on the search date' do + expect_no_results(search(encounter_endpoint, date: 'gt2024-01-20')) + end + + it 'does not match when the period ends before the search date' do + expect_no_results(search(encounter_endpoint, date: 'gt2024-01-21')) + end + end + + context 'when lt (range below search overlaps target)' do + it 'matches when the period starts before the search date' do + expect_one_result(search(encounter_endpoint, date: 'lt2024-01-15'), 'encounter-search-1') + end + + it 'does not match when the period starts exactly on the search date' do + expect_no_results(search(encounter_endpoint, date: 'lt2024-01-10')) + end + + it 'does not match when the period starts after the search date' do + expect_no_results(search(encounter_endpoint, date: 'lt2024-01-09')) + end + end + + context 'when ge (greater than or equal)' do + it 'matches when the period extends past the search date (via gt)' do + expect_one_result(search(encounter_endpoint, date: 'ge2024-01-15'), 'encounter-search-1') + end + + it 'matches at the period start boundary (via gt: period end > search end)' do + expect_one_result(search(encounter_endpoint, date: 'ge2024-01-10'), 'encounter-search-1') + end + + it 'does not match when the period ends before the search date' do + expect_no_results(search(encounter_endpoint, date: 'ge2024-01-21')) + end + end + + context 'when le (less than or equal)' do + it 'matches when the period starts before the search date (via lt)' do + expect_one_result(search(encounter_endpoint, date: 'le2024-01-15'), 'encounter-search-1') + end + + it 'matches at the period end boundary (via lt: period start < search start)' do + expect_one_result(search(encounter_endpoint, date: 'le2024-01-20'), 'encounter-search-1') + end + + it 'does not match when the period starts after the search date' do + expect_no_results(search(encounter_endpoint, date: 'le2024-01-09')) + end + end + + context 'when ne (not equal)' do + it 'matches when the search is outside the period' do + expect_one_result(search(encounter_endpoint, date: 'ne2024-01-25'), 'encounter-search-1') + end + + it 'does not match when the search month fully contains the period' do + expect_no_results(search(encounter_endpoint, date: 'ne2024-01')) + end + end + + context 'when sa (target starts after search range)' do + it 'matches when the period starts the day after the search date range' do + # search=2024-01-09 → search ends Jan 9 23:59:59; period starts Jan 10 00:00 + expect_one_result(search(encounter_endpoint, date: 'sa2024-01-09'), 'encounter-search-1') + end + + it 'does not match when the period starts on the search date' do + expect_no_results(search(encounter_endpoint, date: 'sa2024-01-10')) + end + + it 'does not match when the period starts before the search date' do + expect_no_results(search(encounter_endpoint, date: 'sa2024-01-15')) + end + end + + context 'when eb (target ends before search range)' do + it 'matches when the period ends the day before the search date range' do + # search=2024-01-21 → search starts Jan 21 00:00; period ends Jan 20 23:59:59 + expect_one_result(search(encounter_endpoint, date: 'eb2024-01-21'), 'encounter-search-1') + end + + it 'does not match when the period ends on the search date' do + expect_no_results(search(encounter_endpoint, date: 'eb2024-01-20')) + end + + it 'does not match when the period ends after the search date' do + expect_no_results(search(encounter_endpoint, date: 'eb2024-01-15')) + end + end + + context 'when ap (approximately — search overlaps period)' do + it 'matches when search equals the period start' do + expect_one_result(search(encounter_endpoint, date: 'ap2024-01-10'), 'encounter-search-1') + end + + it 'matches when search equals the period end' do + expect_one_result(search(encounter_endpoint, date: 'ap2024-01-20'), 'encounter-search-1') + end + + it 'matches when search falls inside the period' do + expect_one_result(search(encounter_endpoint, date: 'ap2024-01-15'), 'encounter-search-1') + end + + it 'does not match when search is the day after the period ends' do + expect_no_results(search(encounter_endpoint, date: 'ap2024-01-21')) + end + + it 'does not match when search is the day before the period starts' do + expect_no_results(search(encounter_endpoint, date: 'ap2024-01-09')) + end + end + end + + # ========================================================================= + # Multiple search parameters (AND logic) + # ========================================================================= + describe 'multiple search parameters (AND logic)' do + it 'returns a result only when all parameters match' do + expect_one_result( + search(encounter_endpoint, patient: 'patient-search-1', status: 'finished'), + 'encounter-search-1' + ) + end + + it 'returns no results when any parameter does not match' do + expect_no_results( + search(encounter_endpoint, patient: 'patient-search-1', status: 'in-progress') + ) + end + + it 'returns no results when all parameters are individually valid but for different resources' do + expect_no_results( + search(encounter_endpoint, patient: 'patient-99', status: 'finished') + ) + end + end + + # ========================================================================= + # Empty result + # ========================================================================= + describe 'search with no matching resources' do + it 'returns an empty searchset bundle' do + response = search(patient_endpoint, gender: 'other') + expect(last_response.status).to eq(200) + expect(response.resourceType).to eq('Bundle') + expect(response.entry).to be_empty + end + end + + # ========================================================================= + # search.mode values + # ========================================================================= + describe 'search.mode on bundle entries' do + it "sets mode='match' on all directly matched resources" do + response = search(patient_endpoint, gender: 'female') + expect(response.entry).to_not be_empty + expect(response.entry.all? { |e| e.search&.mode == 'match' }).to be true + end + + it "sets mode='include' on resources returned via _include" do + medication = FHIR::Medication.new(id: 'med-1') + medication_dispense = FHIR::MedicationDispense.new( + id: 'med-dispense-1', + status: 'completed', + subject: FHIR::Reference.new(reference: 'Patient/patient-search-1'), + medicationReference: FHIR::Reference.new(reference: 'Medication/med-1') + ) + med_bundle = FHIR::Bundle.new + med_bundle.entry << FHIR::Bundle::Entry.new(resource: patient) + med_bundle.entry << FHIR::Bundle::Entry.new(resource: medication) + med_bundle.entry << FHIR::Bundle::Entry.new(resource: medication_dispense) + + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle: med_bundle.to_json) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + get "/custom/#{suite_id}/fhir/MedicationDispense?patient=patient-search-1" \ + '&_include=MedicationDispense%3Amedication' + + response = FHIR.from_contents(last_response.body) + include_entry = response.entry.find { |e| e.resource.resourceType == 'Medication' } + expect(include_entry).to_not be_nil + expect(include_entry.search&.mode).to eq('include') + end + + it "sets mode='include' on resources returned via _revinclude" do + provenance = FHIR::Provenance.new( + id: 'provenance-1', + target: [FHIR::Reference.new(reference: 'Patient/patient-search-1')], + recorded: '2024-01-10T12:00:00Z' + ) + prov_bundle = FHIR::Bundle.new + prov_bundle.entry << FHIR::Bundle::Entry.new(resource: patient) + prov_bundle.entry << FHIR::Bundle::Entry.new(resource: encounter) + prov_bundle.entry << FHIR::Bundle::Entry.new(resource: provenance) + + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle: prov_bundle.to_json) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + get "/custom/#{suite_id}/fhir/Patient?gender=female&_revinclude=Provenance%3Atarget" + + response = FHIR.from_contents(last_response.body) + revinclude_entry = response.entry.find { |e| e.resource.resourceType == 'Provenance' } + expect(revinclude_entry).to_not be_nil + expect(revinclude_entry.search&.mode).to eq('include') + end + end + + # ========================================================================= + # No search parameters (resource-type-only search) + # ========================================================================= + describe 'search with no search parameters' do + it 'returns all resources of the requested type' do + response = search(patient_endpoint) + expect(last_response.status).to eq(200) + expect(response.resourceType).to eq('Bundle') + expect(response.entry.size).to eq(1) + expect(response.entry.first.resource.resourceType).to eq('Patient') + expect(response.entry.first.resource.id).to eq('patient-search-1') + end + + it 'does not return resources of a different type' do + response = search(patient_endpoint) + expect(response.entry.none? { |e| e.resource.resourceType == 'Encounter' }).to be true + end + end + + # ========================================================================= + # Self-link construction + # ========================================================================= + describe 'self-link construction' do + let(:medication_dispense_endpoint) { "/custom/#{suite_id}/fhir/MedicationDispense" } + + context 'with search parameters' do + it 'includes supported search params' do + self_link = self_link_for_search(patient_endpoint, gender: 'female') + expect(self_link).to eq("#{base_url}#{patient_endpoint}?gender=female") + end + + it 'excludes unsupported (unknown) params' do + self_link = self_link_for_search(patient_endpoint, gender: 'female', unknown_param: 'foo') + expect(self_link).to eq("#{base_url}#{patient_endpoint}?gender=female") + end + + it 'produces no query string when all params are unsupported' do + self_link = self_link_for_search(patient_endpoint, unknown_param: 'foo') + expect(self_link).to eq("#{base_url}#{patient_endpoint}") + end + end + + context 'with _include parameter' do + it 'includes _include when the value is a supported include param' do + self_link = self_link_for_search(medication_dispense_endpoint, + patient: 'patient-search-1', + _include: 'MedicationDispense:medication') + expect(self_link).to include('patient=patient-search-1') + expect(self_link).to include('_include=MedicationDispense:medication') + end + + it 'excludes _include when the value is not a supported include param' do + self_link = self_link_for_search(patient_endpoint, gender: 'female', _include: 'Patient:not-real') + expect(self_link).to eq("#{base_url}#{patient_endpoint}?gender=female") + end + end + + context 'with _revinclude parameter' do + it 'includes _revinclude=Provenance:target' do + self_link = self_link_for_search(patient_endpoint, gender: 'female', _revinclude: 'Provenance:target') + expect(self_link).to include('gender=female') + expect(self_link).to include('_revinclude=Provenance:target') + end + + it 'excludes _revinclude when the value is not Provenance:target' do + self_link = self_link_for_search(patient_endpoint, gender: 'female', _revinclude: 'Observation:subject') + expect(self_link).to eq("#{base_url}#{patient_endpoint}?gender=female") + end + end + end + + # ========================================================================= + # _include search (MedicationDispense:medication) + # ========================================================================= + describe '_include search — MedicationDispense:medication' do + let(:medication) { FHIR::Medication.new(id: 'med-1') } + + let(:medication_dispense) do + FHIR::MedicationDispense.new( + id: 'med-dispense-1', + status: 'completed', + subject: FHIR::Reference.new(reference: 'Patient/patient-search-1'), + medicationReference: FHIR::Reference.new(reference: 'Medication/med-1') + ) + end + + let(:bundle) do + b = FHIR::Bundle.new + b.entry << FHIR::Bundle::Entry.new(resource: patient) + b.entry << FHIR::Bundle::Entry.new(resource: medication) + b.entry << FHIR::Bundle::Entry.new(resource: medication_dispense) + b.to_json + end + + let(:medication_dispense_endpoint) { "/custom/#{suite_id}/fhir/MedicationDispense" } + + it 'includes the referenced Medication alongside the matching MedicationDispense' do + response = search(medication_dispense_endpoint, patient: 'patient-search-1', + _include: 'MedicationDispense:medication') + expect(last_response.status).to eq(200) + match_entries = response.entry.select { |e| e.search&.mode == 'match' } + include_entries = response.entry.select { |e| e.search&.mode == 'include' } + expect(match_entries.size).to eq(1) + expect(match_entries.first.resource.id).to eq('med-dispense-1') + expect(include_entries.size).to eq(1) + expect(include_entries.first.resource.resourceType).to eq('Medication') + expect(include_entries.first.resource.id).to eq('med-1') + end + + it 'does not return included resources when no resources match the base search' do + response = search(medication_dispense_endpoint, patient: 'unknown-patient', + _include: 'MedicationDispense:medication') + expect(last_response.status).to eq(200) + expect(response.entry).to be_empty + end + + it 'does not include the Medication when no _include param is sent' do + response = search(medication_dispense_endpoint, patient: 'patient-search-1') + expect(last_response.status).to eq(200) + expect(response.entry.size).to eq(1) + expect(response.entry.first.resource.resourceType).to eq('MedicationDispense') + expect(response.entry.first.search.mode).to eq('match') + end + + context 'when multiple matching dispenses reference the same medication' do + let(:medication_dispense2) do + FHIR::MedicationDispense.new( + id: 'med-dispense-2', + status: 'in-progress', + subject: FHIR::Reference.new(reference: 'Patient/patient-search-1'), + medicationReference: FHIR::Reference.new(reference: 'Medication/med-1') + ) + end + + let(:bundle) do + b = FHIR::Bundle.new + b.entry << FHIR::Bundle::Entry.new(resource: patient) + b.entry << FHIR::Bundle::Entry.new(resource: medication) + b.entry << FHIR::Bundle::Entry.new(resource: medication_dispense) + b.entry << FHIR::Bundle::Entry.new(resource: medication_dispense2) + b.to_json + end + + it 'includes the shared referenced Medication only once' do + response = search(medication_dispense_endpoint, patient: 'patient-search-1', + _include: 'MedicationDispense:medication') + match_entries = response.entry.select { |e| e.search&.mode == 'match' } + include_entries = response.entry.select { |e| e.search&.mode == 'include' } + expect(match_entries.size).to eq(2) + expect(include_entries.size).to eq(1) + expect(include_entries.first.resource.id).to eq('med-1') + end + end + end + + # ========================================================================= + # _revinclude search (Provenance:target) + # ========================================================================= + describe '_revinclude search — Provenance:target' do + let(:provenance) do + FHIR::Provenance.new( + id: 'provenance-1', + target: [FHIR::Reference.new(reference: 'Patient/patient-search-1')], + recorded: '2024-01-10T12:00:00Z' + ) + end + + let(:bundle) do + b = FHIR::Bundle.new + b.entry << FHIR::Bundle::Entry.new(resource: patient) + b.entry << FHIR::Bundle::Entry.new(resource: encounter) + b.entry << FHIR::Bundle::Entry.new(resource: provenance) + b.to_json + end + + it 'includes Provenance resources that target a matching resource' do + response = search(patient_endpoint, gender: 'female', _revinclude: 'Provenance:target') + expect(last_response.status).to eq(200) + match_entries = response.entry.select { |e| e.search&.mode == 'match' } + include_entries = response.entry.select { |e| e.search&.mode == 'include' } + expect(match_entries.size).to eq(1) + expect(match_entries.first.resource.id).to eq('patient-search-1') + expect(include_entries.size).to eq(1) + expect(include_entries.first.resource.resourceType).to eq('Provenance') + expect(include_entries.first.resource.id).to eq('provenance-1') + end + + it 'does not include Provenance when no resources match the base search' do + response = search(patient_endpoint, gender: 'other', _revinclude: 'Provenance:target') + expect(last_response.status).to eq(200) + expect(response.entry).to be_empty + end + + it 'does not revinclude Provenance that targets only non-matched resources' do + # Provenance targets Patient but we are searching Encounters — Patient is not in match set + response = search(encounter_endpoint, patient: 'patient-search-1', _revinclude: 'Provenance:target') + expect(last_response.status).to eq(200) + include_entries = response.entry.select { |e| e.search&.mode == 'include' } + expect(include_entries).to be_empty + end + + it 'does not return Provenance when the _revinclude param is absent' do + response = search(patient_endpoint, gender: 'female') + expect(last_response.status).to eq(200) + expect(response.entry.size).to eq(1) + expect(response.entry.first.resource.resourceType).to eq('Patient') + end + + context 'when multiple Provenance resources target the same matched resource' do + let(:provenance2) do + FHIR::Provenance.new( + id: 'provenance-2', + target: [FHIR::Reference.new(reference: 'Patient/patient-search-1')], + recorded: '2024-02-01T09:00:00Z' + ) + end + + let(:bundle) do + b = FHIR::Bundle.new + b.entry << FHIR::Bundle::Entry.new(resource: patient) + b.entry << FHIR::Bundle::Entry.new(resource: encounter) + b.entry << FHIR::Bundle::Entry.new(resource: provenance) + b.entry << FHIR::Bundle::Entry.new(resource: provenance2) + b.to_json + end + + it 'includes all Provenance resources that target the matched resource' do + response = search(patient_endpoint, gender: 'female', _revinclude: 'Provenance:target') + include_entries = response.entry.select { |e| e.search&.mode == 'include' } + expect(include_entries.size).to eq(2) + expect(include_entries.map { |e| e.resource.id }).to contain_exactly('provenance-1', 'provenance-2') + end + end + end + + # ========================================================================= + # Response headers + # ========================================================================= + describe 'response headers' do + it 'sets Content-Type to application/fhir+json' do + search(patient_endpoint, gender: 'female') + expect(last_response.headers['Content-Type']).to include('application/fhir+json') + end + + it 'sets Access-Control-Allow-Origin to *' do + search(patient_endpoint, gender: 'female') + expect(last_response.headers['Access-Control-Allow-Origin']).to eq('*') + end + end + + # ========================================================================= + # Authorization + # ========================================================================= + describe 'authorization' do + it 'returns an error when the Authorization header is missing' do + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle: bundle) + expect(result.result).to eq('wait') + get patient_endpoint + expect(last_response.status).to be >= 400 + end + end +end diff --git a/spec/davinci_crd_test_kit/mock_ehr/fhir_search_logic_spec.rb b/spec/davinci_crd_test_kit/mock_ehr/fhir_search_logic_spec.rb new file mode 100644 index 00000000..eda9f326 --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_ehr/fhir_search_logic_spec.rb @@ -0,0 +1,830 @@ +# Unit tests for the pure logic methods on FHIRSearchEndpoint (no HTTP stack needed). +RSpec.describe DaVinciCRDTestKit::MockEHR::FHIRSearchEndpoint do + let(:endpoint) { described_class.allocate } + + # Build a simple DateTime range from XML-schema strings (nil values allowed). + def dt_range(start_str, end_str = nil) + { + start: start_str ? DateTime.xmlschema(start_str) : nil, + end: end_str ? DateTime.xmlschema(end_str) : nil + } + end + + context 'when executing search logic' do + # --------------------------------------------------------------------------- + # #date? + # --------------------------------------------------------------------------- + describe '#date?' do + it 'matches YYYY' do + expect(endpoint.date?('2024')).to be true + end + + it 'matches YYYY-MM' do + expect(endpoint.date?('2024-01')).to be true + end + + it 'matches YYYY-MM-DD' do + expect(endpoint.date?('2024-01-15')).to be true + end + + it 'does not match a full datetime string' do + expect(endpoint.date?('2024-01-15T10:00:00+00:00')).to be false + end + + it 'does not match nil' do + expect(endpoint.date?(nil)).to be false + end + + it 'does not match an empty string' do + expect(endpoint.date?('')).to be false + end + end + + # --------------------------------------------------------------------------- + # #get_fhir_datetime_range + # --------------------------------------------------------------------------- + describe '#get_fhir_datetime_range' do + it 'builds a year-precision range that spans the whole calendar year' do + range = endpoint.get_fhir_datetime_range('2024') + expect(range[:start]).to eq(DateTime.xmlschema('2024-01-01')) + expect(range[:end]).to eq(DateTime.xmlschema('2025-01-01') - 1.second) + end + + it 'builds a month-precision range that spans the whole calendar month' do + range = endpoint.get_fhir_datetime_range('2024-03') + expect(range[:start]).to eq(DateTime.xmlschema('2024-03-01')) + expect(range[:end]).to eq(DateTime.xmlschema('2024-04-01') - 1.second) + end + + it 'handles February in a leap year correctly' do + range = endpoint.get_fhir_datetime_range('2024-02') + expect(range[:start]).to eq(DateTime.xmlschema('2024-02-01')) + expect(range[:end]).to eq(DateTime.xmlschema('2024-03-01') - 1.second) + end + + it 'handles February in a non-leap year correctly' do + range = endpoint.get_fhir_datetime_range('2023-02') + expect(range[:start]).to eq(DateTime.xmlschema('2023-02-01')) + expect(range[:end]).to eq(DateTime.xmlschema('2023-03-01') - 1.second) + end + + it 'builds a day-precision range that spans the whole calendar day' do + range = endpoint.get_fhir_datetime_range('2024-01-15') + expect(range[:start]).to eq(DateTime.xmlschema('2024-01-15')) + expect(range[:end]).to eq(DateTime.xmlschema('2024-01-16') - 1.second) + end + + it 'handles end-of-month day boundary' do + range = endpoint.get_fhir_datetime_range('2024-01-31') + expect(range[:start]).to eq(DateTime.xmlschema('2024-01-31')) + expect(range[:end]).to eq(DateTime.xmlschema('2024-02-01') - 1.second) + end + + it 'builds a point range (start == end) for a full datetime' do + range = endpoint.get_fhir_datetime_range('2024-01-15T10:30:00+00:00') + expect(range[:start]).to eq(range[:end]) + expect(range[:start]).to eq(DateTime.xmlschema('2024-01-15T10:30:00+00:00')) + end + + it 'handles a datetime at midnight (boundary of day)' do + range = endpoint.get_fhir_datetime_range('2024-01-15T00:00:00+00:00') + expect(range[:start]).to eq(range[:end]) + end + end + + # --------------------------------------------------------------------------- + # #get_fhir_period_range + # --------------------------------------------------------------------------- + describe '#get_fhir_period_range' do + it 'converts a day-precision period with both start and end' do + period = FHIR::Period.new(start: '2024-01-10', end: '2024-01-20') + range = endpoint.get_fhir_period_range(period) + expect(range[:start]).to eq(DateTime.xmlschema('2024-01-10')) + expect(range[:end]).to eq(DateTime.xmlschema('2024-01-21') - 1.second) + end + + it 'returns a nil start when the period has no start value' do + period = FHIR::Period.new(end: '2024-01-20') + range = endpoint.get_fhir_period_range(period) + expect(range[:start]).to be_nil + expect(range[:end]).to_not be_nil + end + + it 'returns a nil end when the period has no end value (open-ended)' do + period = FHIR::Period.new(start: '2024-01-10') + range = endpoint.get_fhir_period_range(period) + expect(range[:start]).to_not be_nil + expect(range[:end]).to be_nil + end + + it 'returns both nil for an empty period' do + period = FHIR::Period.new + range = endpoint.get_fhir_period_range(period) + expect(range[:start]).to be_nil + expect(range[:end]).to be_nil + end + + it 'treats a full-datetime period end as a point (no expansion)' do + period = FHIR::Period.new(start: '2024-01-10T08:00:00+00:00', end: '2024-01-20T17:00:00+00:00') + range = endpoint.get_fhir_period_range(period) + expect(range[:start]).to eq(DateTime.xmlschema('2024-01-10T08:00:00+00:00')) + expect(range[:end]).to eq(DateTime.xmlschema('2024-01-20T17:00:00+00:00')) + end + + it 'expands a month-precision period end to the last instant of that month' do + period = FHIR::Period.new(start: '2024-01-10', end: '2024-02') + range = endpoint.get_fhir_period_range(period) + expect(range[:end]).to eq(DateTime.xmlschema('2024-03-01') - 1.second) + end + + it 'expands a year-precision period end to the last instant of that year' do + period = FHIR::Period.new(start: '2024-01-10', end: '2024') + range = endpoint.get_fhir_period_range(period) + expect(range[:end]).to eq(DateTime.xmlschema('2025-01-01') - 1.second) + end + end + + # --------------------------------------------------------------------------- + # #fhir_date_comparer + # --------------------------------------------------------------------------- + describe '#fhir_date_comparer' do + # Reusable day-precision ranges expressed as {start, end} hashes + # rubocop:disable RSpec/IndexedLet,Naming/VariableNumber + let(:jan_15) { dt_range('2024-01-15T00:00:00+00:00', '2024-01-15T23:59:59+00:00') } + let(:jan_16) { dt_range('2024-01-16T00:00:00+00:00', '2024-01-16T23:59:59+00:00') } + let(:jan_10_to_20) { dt_range('2024-01-10T00:00:00+00:00', '2024-01-20T23:59:59+00:00') } + let(:jan_10_to_15) { dt_range('2024-01-10T00:00:00+00:00', '2024-01-15T23:59:59+00:00') } + let(:jan_15_to_20) { dt_range('2024-01-15T00:00:00+00:00', '2024-01-20T23:59:59+00:00') } + let(:open_end) { dt_range('2024-01-15T00:00:00+00:00', nil) } # no upper bound + let(:open_start) { dt_range(nil, '2024-01-15T23:59:59+00:00') } # no lower bound + # rubocop:enable RSpec/IndexedLet,Naming/VariableNumber + + # ------------------------------------------------------------------ + describe 'eq — search range fully contains target range' do + it 'matches when target is the same range as search' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15, 'eq')).to be true + end + + it 'matches when target is strictly narrower than search' do + expect(endpoint.fhir_date_comparer(jan_10_to_20, jan_15, 'eq')).to be true + end + + it 'does not match when target starts before search' do + expect(endpoint.fhir_date_comparer(jan_15, jan_10_to_20, 'eq')).to be false + end + + it 'does not match when target ends after search' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15_to_20, 'eq')).to be false + end + + it 'does not match when target has a nil start (open-started)' do + expect(endpoint.fhir_date_comparer(jan_15, open_start, 'eq')).to be false + end + + it 'does not match when target has a nil end (open-ended)' do + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'eq')).to be false + end + end + + # ------------------------------------------------------------------ + describe 'ne — search range does NOT fully contain target range' do + it 'does not match when ranges are equal (eq would hold)' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15, 'ne')).to be false + end + + it 'does not match when search fully contains target (eq would hold)' do + expect(endpoint.fhir_date_comparer(jan_10_to_20, jan_15, 'ne')).to be false + end + + it 'matches when target has a nil start' do + expect(endpoint.fhir_date_comparer(jan_15, open_start, 'ne')).to be true + end + + it 'matches when target has a nil end' do + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'ne')).to be true + end + + it 'matches when target starts before search start' do + expect(endpoint.fhir_date_comparer(jan_15, jan_10_to_20, 'ne')).to be true + end + + it 'matches when target ends after search end' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15_to_20, 'ne')).to be true + end + end + + # ------------------------------------------------------------------ + describe 'gt — range above search overlaps with target' do + it 'matches when target end is strictly after search end' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15_to_20, 'gt')).to be true + end + + it 'matches when target has no end (open-ended future)' do + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'gt')).to be true + end + + it 'does not match when target end equals search end (boundary)' do + expect(endpoint.fhir_date_comparer(jan_15, jan_10_to_15, 'gt')).to be false + end + + it 'does not match when target end is before search end' do + expect(endpoint.fhir_date_comparer(jan_15_to_20, jan_15, 'gt')).to be false + end + + it 'matches via extend_end when target end exactly equals search end' do + # With extend_end the boundary is widened by 1 second, enabling equality to count. + expect(endpoint.fhir_date_comparer(jan_15, jan_10_to_15, 'gt', extend_end: true)).to be true + end + end + + # ------------------------------------------------------------------ + describe 'lt — range below search overlaps with target' do + it 'matches when target start is strictly before search start' do + expect(endpoint.fhir_date_comparer(jan_15, jan_10_to_15, 'lt')).to be true + end + + it 'matches when target has no start (open-started past)' do + expect(endpoint.fhir_date_comparer(jan_15, open_start, 'lt')).to be true + end + + it 'does not match when target start equals search start (boundary)' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15, 'lt')).to be false + end + + it 'does not match when target start is after search start' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15_to_20, 'lt')).to be false + end + + it 'matches via extend_start when target start exactly equals search start' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15_to_20, 'lt', extend_start: true)).to be true + end + + it 'does not match when target has no upper bound and search start equals target start' do + # open_end starts at the same instant as jan_15; search_start == target_start → not strictly greater + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'lt')).to be false + end + end + + # ------------------------------------------------------------------ + describe 'ge — target end is at or after search range start' do + it 'matches when target extends past search' do + expect(endpoint.fhir_date_comparer(jan_15, jan_15_to_20, 'ge')).to be true + end + + it 'matches when target is fully contained within search' do + expect(endpoint.fhir_date_comparer(jan_10_to_20, jan_15, 'ge')).to be true + end + + it 'does not match when target ends before search starts' do + # search=jan_16, target=jan_10_to_15 → target ends Jan 15 23:59:59 < search starts Jan 16 00:00 + expect(endpoint.fhir_date_comparer(jan_16, jan_10_to_15, 'ge')).to be false + end + + it 'matches when target has no lower bound and search end equals target end' do + # open_start ends at Jan 15 23:59:59 >= search starts Jan 15 00:00 → true + expect(endpoint.fhir_date_comparer(jan_15, open_start, 'ge')).to be true + end + end + + # ------------------------------------------------------------------ + describe 'le — target start is at or before search range end' do + it 'matches when target starts before search' do + expect(endpoint.fhir_date_comparer(jan_15, jan_10_to_15, 'le')).to be true + end + + it 'matches when target is fully contained within search' do + expect(endpoint.fhir_date_comparer(jan_10_to_20, jan_15, 'le')).to be true + end + + it 'does not match when target starts after search ends' do + # search=jan_10_to_15, target=jan_16 → target starts Jan 16 00:00 > search ends Jan 15 23:59:59 + expect(endpoint.fhir_date_comparer(jan_10_to_15, jan_16, 'le')).to be false + end + + it 'matches when target has no upper bound and search end equals target start' do + # open_end starts Jan 15 00:00 <= search ends Jan 15 23:59:59 → true + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'le')).to be true + end + end + + # ------------------------------------------------------------------ + describe 'sa — target starts after (range above search contains target)' do + it 'matches when target start is strictly after search end' do + # jan_15 ends at 23:59:59; jan_16 starts at 00:00:00 next day + expect(endpoint.fhir_date_comparer(jan_15, jan_16, 'sa')).to be true + end + + it 'does not match when target start is within search range' do + # search ends Jan 15 23:59:59; target starts Jan 15 00:00:00 — not after + expect(endpoint.fhir_date_comparer(jan_15, jan_15, 'sa')).to be false + end + + it 'does not match when target has a nil start' do + expect(endpoint.fhir_date_comparer(jan_15, open_start, 'sa')).to be false + end + + it 'does not match when target is completely before search' do + expect(endpoint.fhir_date_comparer(jan_16, jan_15, 'sa')).to be false + end + + it 'does not match when target has no upper bound and search end equals target start (same day)' do + # open_end starts at Jan 15 00:00; search ends at Jan 15 23:59:59 + # sa requires search_end STRICTLY LESS THAN target_start — fails when both are on the same day + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'sa')).to be false + end + end + + # ------------------------------------------------------------------ + describe 'eb — target ends before (range below search contains target)' do + it 'matches when target end is strictly before search start' do + # jan_16 starts 00:00; jan_15 ends 23:59:59 — target end is before search start + expect(endpoint.fhir_date_comparer(jan_16, jan_15, 'eb')).to be true + end + + it 'does not match when target end falls within search range' do + # search starts Jan 15 00:00; target ends Jan 15 23:59:59 — 00:00 is not > 23:59:59 + expect(endpoint.fhir_date_comparer(jan_15, jan_15, 'eb')).to be false + end + + it 'does not match when target has a nil end' do + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'eb')).to be false + end + + it 'does not match when target is completely after search' do + expect(endpoint.fhir_date_comparer(jan_15, jan_16, 'eb')).to be false + end + end + + # ------------------------------------------------------------------ + describe 'ap — ranges approximately overlap' do + it 'matches when search start falls within target range' do + expect(endpoint.fhir_date_comparer(jan_15, jan_10_to_20, 'ap')).to be true + end + + it 'matches when search end falls within target range' do + # search=jan_10_to_15, target=jan_15_to_20 — search end (Jan 15) is inside target + expect(endpoint.fhir_date_comparer(jan_10_to_15, jan_15_to_20, 'ap')).to be true + end + + it 'does not match when search is entirely before target' do + expect(endpoint.fhir_date_comparer(jan_15, jan_16, 'ap')).to be false + end + + it 'does not match when search is entirely after target' do + expect(endpoint.fhir_date_comparer(jan_16, jan_15, 'ap')).to be false + end + + it 'matches when target has nil start and search end is before target end' do + target = dt_range(nil, '2024-01-20T23:59:59+00:00') + search = dt_range('2024-01-10T00:00:00+00:00', '2024-01-10T23:59:59+00:00') + expect(endpoint.fhir_date_comparer(search, target, 'ap')).to be true + end + + it 'does not match when target has nil start but search end is past target end' do + target = dt_range(nil, '2024-01-09T23:59:59+00:00') + expect(endpoint.fhir_date_comparer(jan_15, target, 'ap')).to be false + end + + it 'matches when target has nil end and search start is after target start' do + target = dt_range('2024-01-10T00:00:00+00:00', nil) + expect(endpoint.fhir_date_comparer(jan_15, target, 'ap')).to be true + end + + it 'does not match when target has nil end but search end is before target start' do + target = dt_range('2024-01-20T00:00:00+00:00', nil) + expect(endpoint.fhir_date_comparer(jan_15, target, 'ap')).to be false + end + + it 'matches when target has no upper bound and search is a day starting at target start' do + # ap (nil-end branch): search_end > target_start? + # jan_15 ends 23:59:59; open_end starts 00:00:00 → 23:59:59 > 00:00:00 → true + expect(endpoint.fhir_date_comparer(jan_15, open_end, 'ap')).to be true + end + + it 'does not match when target has no upper bound and search is a point datetime at exactly target start' do + # ap (nil-end branch): search_end > target_start? + # A point datetime (start == end == Jan 15 00:00:00) means search_end == target_start → NOT strictly greater + point_at_start = dt_range('2024-01-15T00:00:00+00:00', '2024-01-15T00:00:00+00:00') + expect(endpoint.fhir_date_comparer(point_at_start, open_end, 'ap')).to be false + end + end + end + + # --------------------------------------------------------------------------- + # #validate_datetime_search — searching a date/dateTime/instant field + # --------------------------------------------------------------------------- + describe '#validate_datetime_search' do + # Patient.birthDate = '1987-02-20' serves as the canonical target throughout. + let(:target_day) { '1987-02-20' } + let(:target_datetime) { '1987-02-20T12:00:00+00:00' } + + context 'without a comparator prefix (implicit eq)' do + it 'matches an exact day' do + expect(endpoint.validate_datetime_search('1987-02-20', target_day)).to be true + end + + it 'matches a month that contains the target day' do + expect(endpoint.validate_datetime_search('1987-02', target_day)).to be true + end + + it 'matches a year that contains the target day' do + expect(endpoint.validate_datetime_search('1987', target_day)).to be true + end + + it 'does not match a different day' do + expect(endpoint.validate_datetime_search('1987-02-21', target_day)).to be false + end + + it 'does not match a different month' do + expect(endpoint.validate_datetime_search('1987-03', target_day)).to be false + end + + it 'does not match a different year' do + expect(endpoint.validate_datetime_search('1988', target_day)).to be false + end + + it 'day search contains a target datetime that falls in that day' do + expect(endpoint.validate_datetime_search('1987-02-20', target_datetime)).to be true + end + + it 'day search does not contain a target datetime from another day' do + expect(endpoint.validate_datetime_search('1987-02-21', target_datetime)).to be false + end + end + + context 'with gt (greater than)' do + it 'matches when target is strictly after the search date' do + expect(endpoint.validate_datetime_search('gt1987-02-19', target_day)).to be true + end + + it 'does not match when target equals the search date (eq boundary)' do + expect(endpoint.validate_datetime_search('gt1987-02-20', target_day)).to be false + end + + it 'does not match when target is before the search date' do + expect(endpoint.validate_datetime_search('gt1987-02-21', target_day)).to be false + end + + it 'matches with month precision when target month is after search month' do + expect(endpoint.validate_datetime_search('gt1987-01', target_day)).to be true + end + end + + context 'with lt (less than)' do + it 'matches when target is strictly before the search date' do + expect(endpoint.validate_datetime_search('lt1987-02-21', target_day)).to be true + end + + it 'does not match when target equals the search date' do + expect(endpoint.validate_datetime_search('lt1987-02-20', target_day)).to be false + end + + it 'does not match when target is after the search date' do + expect(endpoint.validate_datetime_search('lt1987-02-19', target_day)).to be false + end + end + + context 'with ge (greater than or equal)' do + it 'matches when target equals the search date' do + expect(endpoint.validate_datetime_search('ge1987-02-20', target_day)).to be true + end + + it 'matches when target is after the search date' do + expect(endpoint.validate_datetime_search('ge1987-02-19', target_day)).to be true + end + + it 'does not match when target is before the search date' do + expect(endpoint.validate_datetime_search('ge1987-02-21', target_day)).to be false + end + end + + context 'with le (less than or equal)' do + it 'matches when target equals the search date' do + expect(endpoint.validate_datetime_search('le1987-02-20', target_day)).to be true + end + + it 'matches when target is before the search date' do + expect(endpoint.validate_datetime_search('le1987-02-21', target_day)).to be true + end + + it 'does not match when target is after the search date' do + expect(endpoint.validate_datetime_search('le1987-02-19', target_day)).to be false + end + end + + context 'with ne (not equal)' do + it 'does not match the exact same day' do + expect(endpoint.validate_datetime_search('ne1987-02-20', target_day)).to be false + end + + it 'matches a different day' do + expect(endpoint.validate_datetime_search('ne1987-02-21', target_day)).to be true + end + + it 'matches a different month' do + expect(endpoint.validate_datetime_search('ne1987-03', target_day)).to be true + end + + it 'does not match the containing month (month range contains the target day)' do + expect(endpoint.validate_datetime_search('ne1987-02', target_day)).to be false + end + end + + context 'with sa (starts after)' do + it 'matches when the whole target day starts after the search range' do + # sa1987-02-19 → search ends Feb 19 23:59:59; target starts Feb 20 00:00:00 + expect(endpoint.validate_datetime_search('sa1987-02-19', target_day)).to be true + end + + it 'does not match when target starts within the search day range' do + expect(endpoint.validate_datetime_search('sa1987-02-20', target_day)).to be false + end + + it 'does not match when target is before the search date' do + expect(endpoint.validate_datetime_search('sa1987-02-21', target_day)).to be false + end + end + + context 'with eb (ends before)' do + it 'matches when the whole target day ends before the search range starts' do + # eb1987-02-21 → search starts Feb 21 00:00:00; target ends Feb 20 23:59:59 + expect(endpoint.validate_datetime_search('eb1987-02-21', target_day)).to be true + end + + it 'does not match when target ends within the search day range' do + expect(endpoint.validate_datetime_search('eb1987-02-20', target_day)).to be false + end + + it 'does not match when target is after the search date' do + expect(endpoint.validate_datetime_search('eb1987-02-19', target_day)).to be false + end + end + + context 'with ap (approximately)' do + it 'matches when search range and target range are the same day' do + expect(endpoint.validate_datetime_search('ap1987-02-20', target_day)).to be true + end + + it 'does not match when search month contains the target day (search endpoints outside target range)' do + # ap checks whether SEARCH endpoints fall within the target range. + # A month-wide search (Feb 1–Feb 28) has endpoints outside a single day (Feb 20). + expect(endpoint.validate_datetime_search('ap1987-02', target_day)).to be false + end + + it 'does not match when search is a different day' do + expect(endpoint.validate_datetime_search('ap1987-02-21', target_day)).to be false + end + end + + context 'when datetime search value against a date-precision target (extend_start/extend_end)' do + it 'gt: a datetime at the last instant of a day matches the next day (target)' do + # search gt1987-02-19T23:59:59+00:00 — search end = Feb 19 23:59:59 + # target Feb 20 — target end = Feb 20 23:59:59; strictly greater → match + expect(endpoint.validate_datetime_search('gt1987-02-19T23:59:59+00:00', target_day)).to be true + end + + it 'gt: a datetime exactly at the target date end still matches via extend_end' do + # search end = 1987-02-20T23:59:59; target end = 1987-02-20T23:59:59 + # Without extend_end: not strictly less; with extend_end (search not a date, target is date): match + expect(endpoint.validate_datetime_search('gt1987-02-20T23:59:59+00:00', target_day)).to be true + end + + it 'lt: a datetime at midnight of the next day matches the previous day (target)' do + # search lt1987-02-21T00:00:00+00:00 — search start = Feb 21 00:00 + # target Feb 20 — target start = Feb 20 00:00; search start > target start → match + expect(endpoint.validate_datetime_search('lt1987-02-21T00:00:00+00:00', target_day)).to be true + end + + it 'lt: a datetime exactly at the target date start still matches via extend_start' do + # search start = 1987-02-20T00:00:00; target start = 1987-02-20T00:00:00 + # Without extend_start: not strictly greater; with extend_start: match + expect(endpoint.validate_datetime_search('lt1987-02-20T00:00:00+00:00', target_day)).to be true + end + end + end + + # --------------------------------------------------------------------------- + # #validate_period_search — searching a Period-type field + # --------------------------------------------------------------------------- + describe '#validate_period_search' do + # Encounter.period = '2024-01-10' .. '2024-01-20' + let(:closed_period) { FHIR::Period.new(start: '2024-01-10', end: '2024-01-20') } + let(:open_end_period) { FHIR::Period.new(start: '2024-01-10') } + let(:open_start_period) { FHIR::Period.new(end: '2024-01-20') } + let(:empty_period) { FHIR::Period.new } + + context 'without a comparator prefix (implicit eq)' do + # eq semantics: the SEARCH range must fully contain the TARGET range. + # A single day cannot contain a multi-day period, so these return false. + it 'does not match a day that falls inside but does not contain the period' do + expect(endpoint.validate_period_search('2024-01-15', closed_period)).to be false + end + + it 'does not match the day that equals the period start (period wider than search)' do + expect(endpoint.validate_period_search('2024-01-10', closed_period)).to be false + end + + it 'does not match the day that equals the period end (period wider than search)' do + expect(endpoint.validate_period_search('2024-01-20', closed_period)).to be false + end + + it 'does not match a day outside the period' do + expect(endpoint.validate_period_search('2024-01-21', closed_period)).to be false + end + + it 'matches a month that fully contains the period' do + # search=2024-01 → range Jan 1 – Jan 31; period Jan 10 – Jan 20 is contained + expect(endpoint.validate_period_search('2024-01', closed_period)).to be true + end + + it 'does not match a month that only partially contains the period' do + # search=2024-01 but period is Jan 1 – Feb 5 → period extends past January + partial_period = FHIR::Period.new(start: '2024-01-01', end: '2024-02-05') + expect(endpoint.validate_period_search('2024-01', partial_period)).to be false + end + + it 'does not match an open-start period (eq requires non-nil boundaries)' do + expect(endpoint.validate_period_search('2024-01-15', open_start_period)).to be false + end + + it 'does not match an open-end period (eq requires non-nil boundaries)' do + expect(endpoint.validate_period_search('2024-01-15', open_end_period)).to be false + end + end + + context 'with gt (range above search overlaps target)' do + it 'matches when the period extends past the search date' do + expect(endpoint.validate_period_search('gt2024-01-15', closed_period)).to be true + end + + it 'does not match when the period ends exactly on the search date' do + # search end = Jan 20 23:59:59; period end = Jan 20 23:59:59 — not strictly less + expect(endpoint.validate_period_search('gt2024-01-20', closed_period)).to be false + end + + it 'does not match when the period ends before the search date' do + expect(endpoint.validate_period_search('gt2024-01-21', closed_period)).to be false + end + + it 'matches an open-end period (period end is nil ⇒ extends forever)' do + expect(endpoint.validate_period_search('gt2024-01-15', open_end_period)).to be true + end + + it 'matches an open-end period even when search date equals period start' do + # gt: target_end.nil? → true regardless of where the search falls + expect(endpoint.validate_period_search('gt2024-01-10', open_end_period)).to be true + end + + it 'does not match an open-start period when it ends before the search date' do + past_end_open_start = FHIR::Period.new(end: '2024-01-05') + expect(endpoint.validate_period_search('gt2024-01-10', past_end_open_start)).to be false + end + end + + context 'with lt (range below search overlaps target)' do + it 'matches when the period starts before the search date' do + expect(endpoint.validate_period_search('lt2024-01-15', closed_period)).to be true + end + + it 'does not match when the period starts exactly on the search date' do + # search start = Jan 10 00:00; period start = Jan 10 00:00 — not strictly greater + expect(endpoint.validate_period_search('lt2024-01-10', closed_period)).to be false + end + + it 'does not match when the period starts after the search date' do + expect(endpoint.validate_period_search('lt2024-01-09', closed_period)).to be false + end + + it 'matches an open-start period (period start is nil ⇒ extends to the past)' do + expect(endpoint.validate_period_search('lt2024-01-15', open_start_period)).to be true + end + + it 'does not match an open-end period when search date equals period start' do + # search_start(Jan 10 00:00) == target_start(Jan 10 00:00) → not strictly greater → false + expect(endpoint.validate_period_search('lt2024-01-10', open_end_period)).to be false + end + end + + context 'with ge (greater than or equal)' do + it 'matches when the period extends past the search date' do + expect(endpoint.validate_period_search('ge2024-01-15', closed_period)).to be true + end + + it 'matches when search date equals the period start (period end >= search start)' do + expect(endpoint.validate_period_search('ge2024-01-10', closed_period)).to be true + end + + it 'does not match when period ends before search date' do + expect(endpoint.validate_period_search('ge2024-01-21', closed_period)).to be false + end + + it 'matches an open-start period when search date equals period end' do + # open_start_period ends Jan 20; 'ge2024-01-20' starts Jan 20 00:00 + # Jan 20 23:59:59 >= Jan 20 00:00 → true + expect(endpoint.validate_period_search('ge2024-01-20', open_start_period)).to be true + end + end + + context 'with le (less than or equal)' do + it 'matches when the period starts before the search date' do + expect(endpoint.validate_period_search('le2024-01-15', closed_period)).to be true + end + + it 'matches when search date equals the period end (period start <= search end)' do + expect(endpoint.validate_period_search('le2024-01-20', closed_period)).to be true + end + + it 'does not match when period starts after search date' do + expect(endpoint.validate_period_search('le2024-01-09', closed_period)).to be false + end + + it 'matches an open-end period when search date equals period start' do + # open_end_period starts Jan 10; 'le2024-01-10' ends Jan 10 23:59:59 + # Jan 10 00:00 <= Jan 10 23:59:59 → true + expect(endpoint.validate_period_search('le2024-01-10', open_end_period)).to be true + end + end + + context 'with ne (not equal)' do + it 'matches when the search day is outside the period (not contained)' do + expect(endpoint.validate_period_search('ne2024-01-25', closed_period)).to be true + end + + it 'does not match when search month fully contains the period' do + # 2024-01 (Jan 1 – Jan 31) contains Jan 10 – Jan 20 → eq holds → ne is false + expect(endpoint.validate_period_search('ne2024-01', closed_period)).to be false + end + + it 'matches an open-start period (nil start prevents eq)' do + expect(endpoint.validate_period_search('ne2024-01-15', open_start_period)).to be true + end + + it 'matches an open-end period (nil end prevents eq)' do + expect(endpoint.validate_period_search('ne2024-01-15', open_end_period)).to be true + end + end + + context 'with sa (target starts after search range)' do + it 'matches when period starts the day after the search date' do + # search=2024-01-09 → search end = Jan 9 23:59:59; period starts Jan 10 00:00 + expect(endpoint.validate_period_search('sa2024-01-09', closed_period)).to be true + end + + it 'does not match when period starts on the same day as the search date' do + # search=2024-01-10 → search end = Jan 10 23:59:59; period start = Jan 10 00:00 → not after + expect(endpoint.validate_period_search('sa2024-01-10', closed_period)).to be false + end + + it 'does not match when period starts before the search date' do + expect(endpoint.validate_period_search('sa2024-01-15', closed_period)).to be false + end + + it 'does not match an open-start period (nil start has no defined beginning)' do + expect(endpoint.validate_period_search('sa2024-01-09', open_start_period)).to be false + end + end + + context 'with eb (target ends before search range)' do + it 'matches when period ends the day before the search date' do + # search=2024-01-21 → search start = Jan 21 00:00; period ends Jan 20 23:59:59 + expect(endpoint.validate_period_search('eb2024-01-21', closed_period)).to be true + end + + it 'does not match when period ends on the same day as the search date' do + # search=2024-01-20 → search start = Jan 20 00:00; period end = Jan 20 23:59:59 → not before + expect(endpoint.validate_period_search('eb2024-01-20', closed_period)).to be false + end + + it 'does not match when period ends after the search date' do + expect(endpoint.validate_period_search('eb2024-01-15', closed_period)).to be false + end + + it 'does not match an open-end period (nil end has no defined finish)' do + expect(endpoint.validate_period_search('eb2024-01-21', open_end_period)).to be false + end + end + + context 'with ap (approximately — search overlaps period)' do + it 'matches when search day equals the period start' do + expect(endpoint.validate_period_search('ap2024-01-10', closed_period)).to be true + end + + it 'matches when search day equals the period end' do + expect(endpoint.validate_period_search('ap2024-01-20', closed_period)).to be true + end + + it 'matches when search day is inside the period' do + expect(endpoint.validate_period_search('ap2024-01-15', closed_period)).to be true + end + + it 'does not match when search day is the day after the period ends' do + expect(endpoint.validate_period_search('ap2024-01-21', closed_period)).to be false + end + + it 'does not match when search day is the day before the period starts' do + expect(endpoint.validate_period_search('ap2024-01-09', closed_period)).to be false + end + end + end + end +end diff --git a/spec/davinci_crd_test_kit/mock_ehr/fhir_update_endpoint_spec.rb b/spec/davinci_crd_test_kit/mock_ehr/fhir_update_endpoint_spec.rb new file mode 100644 index 00000000..db4dda3d --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_ehr/fhir_update_endpoint_spec.rb @@ -0,0 +1,140 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/endpoints/mock_ehr/fhir_request_handler' + +RSpec.describe DaVinciCRDTestKit::V201::ServerInvokeHookTest, :request do + let(:suite_id) { 'crd_server' } + let(:runnable) do + Class.new(described_class) do + input :inferno_base_url + end + end + let(:test_session_id) { '12345' } + let(:token) do + DaVinciCRDTestKit::MockEHR::FHIRRequestHandler.session_id_to_token(test_session_id) + end + let(:base_url) { 'http://example.com' } + let(:discovery_url) { 'http://example.com/cds-services' } + let(:inferno_base_url) { 'http://inferno.com' } + let(:service_ids) { 'appointment-book-service' } + let(:service_request_body) do + json = File.read(File.join(__dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json')) + JSON.parse(json) + end + let(:service_request_bodies) { [service_request_body].to_json } + let(:encryption_method) { 'ES384' } + let(:patient) do + FHIR.from_contents(File.read(File.join(__dir__, '..', '..', 'fixtures', 'crd_patient_example.json'))) + end + let(:mock_ehr_bundle) do + bundle = FHIR::Bundle.new + bundle.entry << FHIR::Bundle::Entry.new({ resource: patient }) + bundle.to_json + end + let(:not_a_bundle) { FHIR::Patient.new.to_json } + + def wait_and_auth(bundle_input = mock_ehr_bundle) + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:, + mock_ehr_bundle: bundle_input) + expect(result.result).to eq('wait') + header 'Authorization', "Bearer #{token}" + end + + before do + allow_any_instance_of(DaVinciCRDTestKit::Jobs::InvokeHook) # hook invocations + .to receive(:perform).and_return(nil) + allow_any_instance_of(runnable).to receive(:test_session_id).and_return(test_session_id) + end + + describe 'FHIRUpdateEndpoint - PUT /fhir/:resource_type/:resource_id' do + it 'returns 200 when updating an existing resource' do + updated = FHIR::Patient.new(id: patient.id, gender: 'unknown') + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/#{patient.id}", updated.to_json + expect(last_response.status).to eq(200) + resource = FHIR.from_contents(last_response.body) + expect(resource.id).to eq(patient.id) + end + + it 'returns 201 when upserting a resource that does not exist' do + new_patient = FHIR::Patient.new(id: 'brand-new-id') + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/brand-new-id", new_patient.to_json + expect(last_response.status).to eq(201) + end + + it 'sets Content-Type to application/fhir+json' do + updated = FHIR::Patient.new(id: patient.id) + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/#{patient.id}", updated.to_json + expect(last_response.headers['Content-Type']).to include('application/fhir+json') + end + + it 'returns 400 when the body resource type does not match the URL resource type' do + mismatched = FHIR::Patient.new(id: patient.id) + wait_and_auth + put "/custom/#{suite_id}/fhir/Observation/#{patient.id}", mismatched.to_json + expect(last_response.status).to eq(400) + outcome = FHIR.from_contents(last_response.body) + expect(outcome.resourceType).to eq('OperationOutcome') + end + + it 'updates the resource in the bundle in session data' do + updated = FHIR::Patient.new(id: patient.id, gender: 'unknown') + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/#{patient.id}", updated.to_json + expect(last_response.status).to eq(200) + + saved_json = session_data_repo.load(test_session_id: test_session.id, name: 'mock_ehr_bundle') + saved_bundle = FHIR.from_contents(saved_json) + saved_patient = saved_bundle.entry.map(&:resource).find { |r| r.id == patient.id } + expect(saved_patient).to_not be_nil + expect(saved_patient.gender).to eq('unknown') + end + + it 'adds the upserted resource to the bundle in session data' do + new_patient = FHIR::Patient.new(id: 'brand-new-id') + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/brand-new-id", new_patient.to_json + expect(last_response.status).to eq(201) + + saved_json = session_data_repo.load(test_session_id: test_session.id, name: 'mock_ehr_bundle') + saved_bundle = FHIR.from_contents(saved_json) + expect(saved_bundle.entry.length).to eq(2) + expect(saved_bundle.entry.map { |e| e.resource.id }).to include('brand-new-id') + end + + it 'uses the URL resource_id when body id differs' do + mismatched = FHIR::Patient.new(id: 'different-id') + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/#{patient.id}", mismatched.to_json + expect(last_response.status).to eq(200) + resource = FHIR.from_contents(last_response.body) + expect(resource.id).to eq(patient.id) + end + + it 'sets Access-Control-Allow-Origin to *' do + updated = FHIR::Patient.new(id: patient.id) + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/#{patient.id}", updated.to_json + expect(last_response.headers['Access-Control-Allow-Origin']).to eq('*') + end + + it 'returns an error when the Authorization header is missing' do + run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle:) + updated = FHIR::Patient.new(id: patient.id) + put "/custom/#{suite_id}/fhir/Patient/#{patient.id}", updated.to_json + expect(last_response.status).to be >= 400 + end + + it 'updated resource can be read back via GET' do + updated = FHIR::Patient.new(id: patient.id, gender: 'unknown') + wait_and_auth + put "/custom/#{suite_id}/fhir/Patient/#{patient.id}", updated.to_json + expect(last_response.status).to eq(200) + + get "/custom/#{suite_id}/fhir/Patient/#{patient.id}" + expect(last_response.status).to eq(200) + expect(FHIR.from_contents(last_response.body).gender).to eq('unknown') + end + end +end diff --git a/spec/davinci_crd_test_kit/mock_service_response_spec.rb b/spec/davinci_crd_test_kit/mock_service_response_spec.rb new file mode 100644 index 00000000..4b1e451a --- /dev/null +++ b/spec/davinci_crd_test_kit/mock_service_response_spec.rb @@ -0,0 +1,406 @@ +require_relative '../../lib/davinci_crd_test_kit/cross_suite/tags' + +RSpec.describe DaVinciCRDTestKit::MockServiceResponse do + describe 'v201' do + let(:mocked_response_creator_v201) do + Class.new do + include DaVinciCRDTestKit::MockServiceResponse + + def ig_version + 'v201' + end + + def selected_response_types + @selected_response_types ||= [ + 'request_form_completion' + ] + end + + def request_body + @request_body ||= + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_sign_hook_request.json'))) + .merge({ + 'prefetch' => { + 'coverage' => + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))) + } + }) + end + + def requested_hook + DaVinciCRDTestKit::ORDER_SIGN_TAG + end + + def result + @result ||= Struct.new(:id).new('test-result-id') + end + end.new + end + + it 'form completion task has two inputs' do + response = mocked_response_creator_v201.build_mock_hook_response + expect(response['cards'].size).to eq(1) + task = response.dig('cards', 0, 'suggestions', 0, 'actions', 1, 'resource') + expect(task).to be_present + expect(task['resourceType']).to eq('Task') + expect(task['input'].size).to eq(2) + end + + it 'card source topic uses temp code system' do + response = mocked_response_creator_v201.build_mock_hook_response + source_system = response.dig('cards', 0, 'source', 'topic', 'system') + expect(source_system).to eq('http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp') + end + + def make_v201_creator(types:, body:, hook: DaVinciCRDTestKit::ORDER_SIGN_TAG) + rb = body + Class.new do + include DaVinciCRDTestKit::MockServiceResponse + define_method(:ig_version) { 'v201' } + define_method(:selected_response_types) { @selected_response_types ||= types.dup } + define_method(:request_body) { @request_body ||= rb } + define_method(:requested_hook) { hook } + define_method(:result) { @result ||= Struct.new(:id).new('test-result-id') } + end.new + end + + it 'propose_alternate_request for order-dispatch uses context order reference to fetch from FHIR server' do + coverage = JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))) + service_request = FHIR::ServiceRequest.new(id: 'example') + allow(Faraday).to receive(:get) + .with('https://example/r4/ServiceRequest/example', nil, anything) + .and_return(instance_double(Faraday::Response, status: 200, body: service_request.to_json)) + messages_double = instance_double(Inferno::Repositories::Messages) + allow(messages_double).to receive(:create) + allow(Inferno::Repositories::Messages).to receive(:new).and_return(messages_double) + + creator = make_v201_creator( + types: ['propose_alternate_request'], + hook: DaVinciCRDTestKit::ORDER_DISPATCH_TAG, + body: { + 'fhirServer' => 'https://example/r4', + 'fhirAuthorization' => { 'access_token' => 'SAMPLE_TOKEN' }, + 'context' => { 'patientId' => 'example', 'order' => 'ServiceRequest/example' }, + 'prefetch' => { 'coverage' => coverage } + } + ) + response = creator.build_mock_hook_response + actions = response.dig('cards', 0, 'suggestions', 0, 'actions') + expect(actions[0]['type']).to eq('delete') + expect(actions[0]['resourceId']).to eq('ServiceRequest/example') + expect(actions[1]['type']).to eq('create') + end + end + + describe 'v221' do + let(:mocked_response_creator_v221) do + Class.new do + include DaVinciCRDTestKit::MockServiceResponse + + def ig_version + 'v221' + end + + def selected_response_types + @selected_response_types ||= [ + 'request_form_completion' + ] + end + + def request_body + @request_body ||= + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_sign_hook_request.json'))) + .merge({ + 'prefetch' => { + 'coverage' => + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))) + } + }) + end + + def requested_hook + DaVinciCRDTestKit::ORDER_SIGN_TAG + end + + def result + @result ||= Struct.new(:id).new('test-result-id') + end + end.new + end + + let(:mocked_response_creator_v221_order_dispatch) do + Class.new do + include DaVinciCRDTestKit::MockServiceResponse + include DaVinciCRDTestKit::CardsIdentification + + def ig_version + 'v221' + end + + def selected_response_types + @selected_response_types ||= [ + 'create_update_coverage_info' + ] + end + + def request_body + @request_body ||= + JSON.parse(File.read(File.join(__dir__, '..', '..', 'execution_scripts', 'prefetch', + 'order-dispatch-request_complete-prefetch.json'))) + end + + def requested_hook + DaVinciCRDTestKit::ORDER_DISPATCH_TAG + end + + def result + @result ||= Struct.new(:id).new('test-result-id') + end + end.new + end + + let(:order_sign_request_with_coverage) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_sign_hook_request.json'))) + .merge({ + 'prefetch' => { + 'coverage' => + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))) + } + }) + end + + it 'form completion task has two inputs' do + response = mocked_response_creator_v221.build_mock_hook_response + expect(response['cards'].size).to eq(1) + task = response.dig('cards', 0, 'suggestions', 0, 'actions', 1, 'resource') + expect(task).to be_present + expect(task['resourceType']).to eq('Task') + expect(task['input'].size).to eq(1) + end + + it 'form completion questionnaire version is a string' do + response = mocked_response_creator_v221.build_mock_hook_response + questionnaire = response.dig('cards', 0, 'suggestions', 0, 'actions', 0, 'resource') + + expect(questionnaire['resourceType']).to eq('Questionnaire') + expect(questionnaire['version']).to eq('2') + end + + it 'card source topic uses cdshooks code system instead of temp' do + response = mocked_response_creator_v221.build_mock_hook_response + source_system = response.dig('cards', 0, 'source', 'topic', 'system') + expect(source_system).to eq('http://terminology.hl7.org/CodeSystem/cdshooks-card-type') + end + + it 'order dispatch returns create/update coverage card' do + response = mocked_response_creator_v221_order_dispatch.build_mock_hook_response + expect(response['cards'].size).to eq(1) + expect(response.dig('cards', 0, 'summary')).to include('Create/Update Coverage Information') + end + + it 'order dispatch returns coverage-information system action' do + response = mocked_response_creator_v221_order_dispatch.build_mock_hook_response + system_actions = response['systemActions'] + expect(system_actions).to be_present + expect(system_actions.size).to eq(13) + expect(system_actions.first['description']).to include('coverage information') + end + + it 'order dispatch coverage-information system action targets the dispatched order' do + response = mocked_response_creator_v221_order_dispatch.build_mock_hook_response + action_resource = response.dig('systemActions', 0, 'resource') + expect(action_resource).to be_present + expect(action_resource.resourceType).to eq('CommunicationRequest') + coverage_ext = action_resource.extension&.find do |ext| + ext.url == 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' + end + expect(coverage_ext).to be_present + end + + def make_v221_creator(types:, body:, hook: DaVinciCRDTestKit::ORDER_SIGN_TAG) + rb = body + Class.new do + include DaVinciCRDTestKit::MockServiceResponse + define_method(:ig_version) { 'v221' } + define_method(:selected_response_types) { @selected_response_types ||= types.dup } + define_method(:request_body) { @request_body ||= rb } + define_method(:requested_hook) { hook } + define_method(:result) { @result ||= Struct.new(:id).new('test-result-id') } + end.new + end + + it 'external_reference returns a card with the correct summary' do + creator = make_v221_creator(types: ['external_reference'], body: order_sign_request_with_coverage) + response = creator.build_mock_hook_response + expect(response['cards'].size).to eq(1) + expect(response.dig('cards', 0, 'summary')).to include('External Reference') + end + + it 'launch_smart_app card link URL is set to the Inferno smart launch URL' do + creator = make_v221_creator(types: ['launch_smart_app'], body: order_sign_request_with_coverage) + response = creator.build_mock_hook_response + launch_url = response.dig('cards', 0, 'links', 0, 'url') + expect(launch_url).to eq("#{Inferno::Application['base_url']}/custom/smart/launch") + end + + it 'companions_prerequisites card populates service request subject and requester from context' do + creator = make_v221_creator(types: ['companions_prerequisites'], body: order_sign_request_with_coverage) + response = creator.build_mock_hook_response + service_request = response.dig('cards', 0, 'suggestions', 0, 'actions', 0, 'resource') + expect(service_request['subject']['reference']).to eq('Patient/example') + expect(service_request['requester']['reference']).to eq('Practitioner/example') + end + + it 'propose_alternate_request appends delete and create actions for order-sign' do + creator = make_v221_creator(types: ['propose_alternate_request'], body: order_sign_request_with_coverage) + response = creator.build_mock_hook_response + actions = response.dig('cards', 0, 'suggestions', 0, 'actions') + expect(actions.size).to eq(2) + expect(actions[0]['type']).to eq('delete') + expect(actions[0]['resourceId']).to eq('NutritionOrder/pureeddiet-simple') + expect(actions[1]['type']).to eq('create') + expect(actions[1]['resource'].resourceType).to eq('NutritionOrder') + end + + it 'multiple selected response types produce multiple cards' do + creator = make_v221_creator( + types: ['external_reference', 'request_form_completion'], + body: order_sign_request_with_coverage + ) + response = creator.build_mock_hook_response + expect(response['cards'].size).to eq(2) + end + + it 'hook display name is prepended to each card summary' do + creator = make_v221_creator(types: ['external_reference'], body: order_sign_request_with_coverage) + response = creator.build_mock_hook_response + expect(response.dig('cards', 0, 'summary')).to start_with('Order Sign ') + end + + it 'coverage_information system action created for each draftOrder entry in order-sign' do + creator = make_v221_creator(types: ['coverage_information'], body: order_sign_request_with_coverage) + response = creator.build_mock_hook_response + system_actions = response['systemActions'] + expect(system_actions).to be_present + expect(system_actions.size).to eq(2) + expect(system_actions.all? { |a| a['description'].include?('coverage information') }).to be true + end + + it 'coverage_information system action built from encounter prefetch for encounter-start hook' do + request = JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'encounter_start_hook_request.json'))) + .merge({ + 'prefetch' => { + 'coverage' => + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))), + 'encounter' => + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_encounter_example.json'))) + } + }) + creator = make_v221_creator( + types: ['coverage_information'], + hook: DaVinciCRDTestKit::ENCOUNTER_START_TAG, + body: request + ) + response = creator.build_mock_hook_response + system_actions = response['systemActions'] + expect(system_actions).to be_present + expect(system_actions.size).to eq(1) + expect(system_actions.first['resource'].resourceType).to eq('Encounter') + end + + it 'instructions card returned as fallback when no cards or system actions would otherwise be produced' do + request = JSON.parse( + File.read(File.join(__dir__, '..', 'fixtures', 'encounter_discharge_hook_request.json')) + ) + creator = make_v221_creator( + types: [], + hook: DaVinciCRDTestKit::ENCOUNTER_DISCHARGE_TAG, + body: request + ) + response = creator.build_mock_hook_response + expect(response['cards'].size).to eq(1) + expect(response.dig('cards', 0, 'summary')).to include('Instructions') + end + + it 'dispatched order not found in prefetch is fetched from FHIR server' do + coverage = JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))) + service_request = FHIR::ServiceRequest.new(id: 'example') + allow(Faraday).to receive(:get) + .with('https://example/r4/ServiceRequest/example', nil, anything) + .and_return(instance_double(Faraday::Response, status: 200, body: service_request.to_json)) + + creator = make_v221_creator( + types: [], + hook: DaVinciCRDTestKit::ORDER_DISPATCH_TAG, + body: { + 'fhirServer' => 'https://example/r4', + 'fhirAuthorization' => { 'access_token' => 'SAMPLE_TOKEN' }, + 'context' => { 'patientId' => 'example', 'dispatchedOrders' => ['ServiceRequest/example'] }, + 'prefetch' => { 'coverage' => coverage } + } + ) + response = creator.build_mock_hook_response + system_actions = response['systemActions'] + expect(system_actions).to be_present + expect(system_actions.first['resource'].resourceType).to eq('ServiceRequest') + end + + it 'get_context_resource returns nil for a blank resource ID' do + creator = make_v221_creator(types: [], body: order_sign_request_with_coverage) + expect(creator.get_context_resource(nil)).to be_nil + expect(creator.get_context_resource('')).to be_nil + end + + it 'get_context_resource returns nil when fhirServer is absent from request body' do + creator = make_v221_creator(types: [], body: { 'context' => { 'patientId' => 'example' } }) + expect(creator.get_context_resource('ServiceRequest/example')).to be_nil + end + + it 'get_context_resource prepends encounter resource type to bare ID before fetching' do + coverage = JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))) + encounter = FHIR::Encounter.new(id: 'example') + allow(Faraday).to receive(:get) + .with('https://example/r4/Encounter/example', nil, anything) + .and_return(instance_double(Faraday::Response, status: 200, body: encounter.to_json)) + + creator = make_v221_creator( + types: ['coverage_information'], + hook: DaVinciCRDTestKit::ENCOUNTER_START_TAG, + body: { + 'fhirServer' => 'https://example/r4', + 'fhirAuthorization' => { 'access_token' => 'SAMPLE_TOKEN' }, + 'context' => { 'userId' => 'Practitioner/example', 'patientId' => 'example', 'encounterId' => 'example' }, + 'prefetch' => { 'coverage' => coverage } + } + ) + response = creator.build_mock_hook_response + expect(response['systemActions']).to be_present + expect(response.dig('systemActions', 0, 'resource').resourceType).to eq('Encounter') + end + + it 'creates a warning when required coverage_information cannot be returned' do + creator = make_v221_creator( + types: [], + body: { + 'context' => { + 'userId' => 'Practitioner/example', + 'patientId' => 'example', + 'draftOrders' => { 'resourceType' => 'Bundle', 'entry' => [] } + } + } + ) + messages_double = instance_double(Inferno::Repositories::Messages) + allow(messages_double).to receive(:create) + allow(Inferno::Repositories::Messages).to receive(:new).and_return(messages_double) + + creator.build_mock_hook_response + + expect(messages_double).to have_received(:create).with( + hash_including( + type: 'warning', + message: include('Coverage Information') + ) + ) + end + end +end diff --git a/spec/davinci_crd_test_kit/order_dispatch_receive_request_test_spec.rb b/spec/davinci_crd_test_kit/order_dispatch_receive_request_test_spec.rb index fb68bd22..fb67e81a 100644 --- a/spec/davinci_crd_test_kit/order_dispatch_receive_request_test_spec.rb +++ b/spec/davinci_crd_test_kit/order_dispatch_receive_request_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/order_dispatch_receive_request_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_dispatch_receive_request_test' -RSpec.describe DaVinciCRDTestKit::OrderDispatchReceiveRequestTest, :request do +RSpec.describe DaVinciCRDTestKit::V201::OrderDispatchReceiveRequestTest, :request do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -8,7 +8,7 @@ let(:example_client_url) { 'https://cds.example.org' } let(:resume_pass_url) do - "#{Inferno::Application['base_url']}/custom/crd_client/resume_pass?token=order-dispatch%20#{example_client_url}" + "#{base_url}/resume_pass?token=#{example_client_url}" end let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } let(:order_dispatch_url) { "#{base_url}/cds-services/order-dispatch-service" } diff --git a/spec/davinci_crd_test_kit/order_select_receive_request_test_spec.rb b/spec/davinci_crd_test_kit/order_select_receive_request_test_spec.rb index 055ea32f..37ff703c 100644 --- a/spec/davinci_crd_test_kit/order_select_receive_request_test_spec.rb +++ b/spec/davinci_crd_test_kit/order_select_receive_request_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/order_select_receive_request_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_select_receive_request_test' -RSpec.describe DaVinciCRDTestKit::OrderSelectReceiveRequestTest, :request do +RSpec.describe DaVinciCRDTestKit::V201::OrderSelectReceiveRequestTest, :request do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -8,7 +8,7 @@ let(:example_client_url) { 'https://cds.example.org' } let(:resume_pass_url) do - "#{Inferno::Application['base_url']}/custom/crd_client/resume_pass?token=order-select%20#{example_client_url}" + "#{base_url}/resume_pass?token=#{example_client_url}" end let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } let(:order_select_url) { "#{base_url}/cds-services/order-select-service" } diff --git a/spec/davinci_crd_test_kit/order_sign_receive_request_test_spec.rb b/spec/davinci_crd_test_kit/order_sign_receive_request_test_spec.rb index 5dfb5036..dba44413 100644 --- a/spec/davinci_crd_test_kit/order_sign_receive_request_test_spec.rb +++ b/spec/davinci_crd_test_kit/order_sign_receive_request_test_spec.rb @@ -1,7 +1,7 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/order_sign_receive_request_test' -require_relative '../../lib/davinci_crd_test_kit/routes/hook_request_endpoint' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/invocation/order_sign_receive_request_test' +require_relative '../../lib/davinci_crd_test_kit/client/endpoints/hook_request_endpoint' -RSpec.describe DaVinciCRDTestKit::OrderSignReceiveRequestTest, :request do +RSpec.describe DaVinciCRDTestKit::V201::OrderSignReceiveRequestTest, :request do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -9,7 +9,7 @@ let(:example_client_url) { 'https://cds.example.org' } let(:resume_pass_url) do - "#{Inferno::Application['base_url']}/custom/crd_client/resume_pass?token=order-sign%20#{example_client_url}" + "#{base_url}/resume_pass?token=#{example_client_url}" end let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } let(:order_sign_url) { "#{base_url}/cds-services/order-sign-service" } diff --git a/spec/davinci_crd_test_kit/prefetch_completeness_checker_spec.rb b/spec/davinci_crd_test_kit/prefetch_completeness_checker_spec.rb new file mode 100644 index 00000000..4e561c9b --- /dev/null +++ b/spec/davinci_crd_test_kit/prefetch_completeness_checker_spec.rb @@ -0,0 +1,825 @@ +require_relative '../../lib/davinci_crd_test_kit/cross_suite/prefetch_completeness_checker' + +RSpec.describe DaVinciCRDTestKit::PrefetchCompletenessChecker do + let(:fhirpath_url) { 'https://example.com/fhirpath/evaluate' } + let(:base_fhir_url) { 'https://example/r4' } + + let(:order_sign_request) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_sign_hook_request.json'))) + end + let(:crd_patient_example) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_patient_example.json'))) + end + let(:crd_patient_example_bundle) do + { 'resourceType' => 'Bundle', 'entry' => [{ 'fullUrl' => "#{base_fhir_url}/Patient/example", + 'resource' => crd_patient_example }] } + end + let(:crd_coverage_example) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_coverage_example.json'))) + end + let(:crd_coverage_example_bundle) do + { 'resourceType' => 'Bundle', 'entry' => [{ 'fullUrl' => "#{base_fhir_url}/Coverage/coverage_example", + 'resource' => crd_coverage_example }] } + end + let(:crd_practitioner_example) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_practitioner_example.json'))) + end + let(:crd_practitioner_example_bundle) do + { 'resourceType' => 'Bundle', + 'entry' => [{ 'fullUrl' => "#{base_fhir_url}/Practitioner/example", 'resource' => crd_practitioner_example }] } + end + let(:crd_practitioner_role_example) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_practitioner_role_example.json'))) + end + let(:crd_practitioner_role_example_bundle) do + { 'resourceType' => 'Bundle', + 'entry' => [{ 'fullUrl' => "#{base_fhir_url}/PractitionerRole/example", + 'resource' => crd_practitioner_role_example }] } + end + + def make_checker(hook_request, templates, request_index: 0) + instance = described_class.new(hook_request, request_index, '/unused/path.json') + allow(instance).to receive(:hook_prefetch_templates).and_return(templates) + instance + end + + def errors_for(hook_request, templates, request_index: 0) + make_checker(hook_request, templates, request_index:).check_prefetched_data + end + + describe '#check_prefetched_data' do + it 'returns an error when the prefetch key is absent' do + expect(errors_for(order_sign_request, { 'patient' => 'Patient/{{context.patientId}}' })) + .to eq(['(Request 1) No prefetch data provided.']) + end + + it 'includes the correct request index in errors' do + expect(errors_for(order_sign_request, { 'patient' => 'Patient/{{context.patientId}}' }, request_index: 2)) + .to eq(['(Request 3) No prefetch data provided.']) + end + + it 'returns no errors when all templates are satisfied' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + expect(errors_for(order_sign_request, { 'patient' => 'Patient/{{context.patientId}}' })).to be_empty + end + + it 'returns an error for an extra prefetch key not in the templates' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example, 'extra' => crd_patient_example } + errors = errors_for(order_sign_request, { 'patient' => 'Patient/{{context.patientId}}' }) + expect(errors).to eq(["(Request 1) Extra prefetch data provided in unrequested template 'extra'."]) + end + + it 'raises an error with template context when the FHIRPath service fails during token substitution' do + templates = { 'orders' => 'ServiceRequest?_id={{context.draftOrders.entry.resource.id}}' } + order_sign_request['prefetch'] = { 'orders' => { 'resourceType' => 'Bundle', 'entry' => [] } } + stub_request(:post, /#{Regexp.escape(fhirpath_url)}/) + .to_return(status: 422, body: 'Invalid FHIRPath expression') + + checker = make_checker(order_sign_request, templates) + expect { checker.check_prefetched_data } + .to raise_error(RuntimeError, /Prefetch Template orders.*FHIRPath service error/) + end + + it 'deduplicates errors when the same error occurs multiple times across token evaluation' do + order_sign_request['context']['draftOrders']['entry'].each do |entry| + entry['resource']['patient'] = { 'reference' => 'Patient/example' } + end + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + + templates = { 'patient' => 'Patient?_id={{context.draftOrders.entry.resource.patient.resolve().id}}' } + errors = errors_for(order_sign_request, templates) + expect(errors.count { |e| e.include?("resource '#{base_fhir_url}/Patient/example'") }).to eq(1) + end + end + + describe 'read template' do + let(:templates) { { 'patient' => 'Patient/{{context.patientId}}' } } + + it 'passes when the indicated resource is provided' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'passes when no resource is requested and none is provided' do + order_sign_request['prefetch'] = { 'patient' => nil } + order_sign_request['context'].delete('patientId') + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'returns an error when the template key is absent from prefetch' do + order_sign_request['prefetch'] = {} + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - No prefetch data provided.']) + end + + it 'returns an error when a requested resource is not provided' do + order_sign_request['prefetch'] = { 'patient' => nil } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - ' \ + "requested resource '#{base_fhir_url}/Patient/example' not provided."]) + end + + it 'returns an error when the prefetched value has no resourceType' do + crd_patient_example.delete('resourceType') + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched value is not a FHIR resource (no resourceType).']) + end + + it 'returns an error when the prefetched value has the wrong resourceType' do + crd_patient_example['resourceType'] = 'NotPatient' + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched value has unexpected resourceType: ' \ + 'expected Patient, got NotPatient.']) + end + + it 'returns an error when the prefetched resource has no id' do + crd_patient_example.delete('id') + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched Patient is missing an id.']) + end + + it 'returns an error when the prefetched resource has the wrong id' do + crd_patient_example['id'] = 'wrong' + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched Patient has unexpected id: ' \ + 'expected example, got wrong.']) + end + + it 'returns multiple errors when both resourceType and id are wrong' do + crd_patient_example['resourceType'] = 'NotPatient' + crd_patient_example['id'] = 'wrong' + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + expect(errors_for(order_sign_request, templates)).to contain_exactly( + '(Request 1) Prefetch Template patient - prefetched value has unexpected resourceType: ' \ + 'expected Patient, got NotPatient.', + '(Request 1) Prefetch Template patient - prefetched Patient has unexpected id: expected example, got wrong.' + ) + end + end + + describe '_id search template' do + let(:templates) { { 'patient' => 'Patient?_id={{context.patientId}}' } } + + it 'passes when a Bundle with the expected resource is provided' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'passes when no ids requested and none provided' do + order_sign_request['prefetch'] = { 'patient' => nil } + order_sign_request['context'].delete('patientId') + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'passes when an empty Bundle is provided and no ids are requested' do + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + order_sign_request['context'].delete('patientId') + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'returns an error when the prefetched value has no resourceType' do + crd_patient_example_bundle.delete('resourceType') + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched value is not a FHIR resource (no resourceType).']) + end + + it 'returns an error when the prefetched value is not a Bundle' do + crd_patient_example_bundle['resourceType'] = 'NotBundle' + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched value has unexpected resourceType: ' \ + 'expected Bundle, got NotBundle.']) + end + + it 'returns an error when a Bundle entry has the wrong resourceType' do + crd_patient_example_bundle['entry'][0]['resource']['resourceType'] = 'NotPatient' + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)).to contain_exactly( + '(Request 1) Prefetch Template patient - prefetched Bundle entry 1 has an unexpected resourceType: ' \ + 'expected Patient, got NotPatient.', + '(Request 1) Prefetch Template patient - prefetched Bundle missing expected entries: ' \ + "#{base_fhir_url}/Patient/example.", + '(Request 1) Prefetch Template patient - prefetched Bundle includes unrequested entries: ' \ + "#{base_fhir_url}/Patient/example." + ) + end + + it 'returns an error when there are duplicate entries' do + crd_patient_example_bundle['entry'] << { 'resource' => crd_patient_example } + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched Bundle has multiple entries ' \ + 'with the same resource id.']) + end + + it 'returns errors for missing and extra ids when wrong id is present' do + crd_patient_example_bundle['entry'][0]['resource']['id'] = 'wrong' + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)).to contain_exactly( + '(Request 1) Prefetch Template patient - prefetched Bundle missing expected entries: ' \ + "#{base_fhir_url}/Patient/example.", + '(Request 1) Prefetch Template patient - prefetched Bundle includes unrequested entries: ' \ + "#{base_fhir_url}/Patient/example." + ) + end + + it 'returns an error when no prefetch provided and ids are requested' do + order_sign_request['prefetch'] = { 'patient' => nil } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - requested resources not provided: ' \ + "#{base_fhir_url}/Patient/example."]) + end + + it 'returns an error when an empty Bundle is provided and ids are requested' do + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template patient - prefetched Bundle missing expected entries: ' \ + "#{base_fhir_url}/Patient/example."]) + end + end + + describe 'coverage search template' do + let(:templates) { { 'coverage' => 'Coverage?patient={{context.patientId}}&status=active' } } + + it 'passes when a Bundle with a valid Coverage is provided' do + order_sign_request['prefetch'] = { 'coverage' => crd_coverage_example_bundle } + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'returns an error when no coverage is provided' do + order_sign_request['prefetch'] = { 'coverage' => nil } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template coverage - requested Coverage not provided.']) + end + + it 'returns an error when the prefetched value has no resourceType' do + crd_coverage_example_bundle.delete('resourceType') + order_sign_request['prefetch'] = { 'coverage' => crd_coverage_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template coverage - prefetched value is not a FHIR resource (no resourceType).']) + end + + it 'returns an error when the prefetched value is not a Bundle' do + crd_coverage_example_bundle['resourceType'] = 'NotBundle' + order_sign_request['prefetch'] = { 'coverage' => crd_coverage_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template coverage - prefetched value has unexpected resourceType: ' \ + 'expected Bundle, got NotBundle.']) + end + + it 'returns an error when the Bundle has more than one entry' do + crd_coverage_example_bundle['entry'] << { 'resource' => crd_coverage_example } + order_sign_request['prefetch'] = { 'coverage' => crd_coverage_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template coverage - exactly one Coverage must be provided.']) + end + + it 'returns an error when the Coverage entry has the wrong resourceType' do + crd_coverage_example_bundle['entry'][0]['resource']['resourceType'] = 'NotCoverage' + order_sign_request['prefetch'] = { 'coverage' => crd_coverage_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template coverage - entry in prefetched Coverage Bundle ' \ + 'has an unexpected type: expected Coverage, got NotCoverage.']) + end + + it 'returns an error when the Coverage has the wrong status' do + crd_coverage_example_bundle['entry'][0]['resource']['status'] = 'inactive' + order_sign_request['prefetch'] = { 'coverage' => crd_coverage_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template coverage - prefetched Coverage has an unexpected status: ' \ + 'expected active, got inactive.']) + end + + it 'returns an error when the Coverage references the wrong patient' do + crd_coverage_example_bundle['entry'][0]['resource']['beneficiary']['reference'] = 'Patient/wrong' + order_sign_request['prefetch'] = { 'coverage' => crd_coverage_example_bundle } + expect(errors_for(order_sign_request, templates)) + .to eq(['(Request 1) Prefetch Template coverage - prefetched Coverage has an unexpected ' \ + 'beneficiary reference: expected Patient/example, got Patient/wrong.']) + end + end + + describe 'unsupported search template' do + let(:templates) { { 'unsupported' => 'Patient?birthdate=20200101' } } + + it 'raises an exception for a non-_id search on a non-Coverage resource' do + order_sign_request['prefetch'] = { 'unsupported' => crd_coverage_example_bundle } + expect { errors_for(order_sign_request, templates) } + .to raise_error(RuntimeError, /Unexpected search template.*implementation problem/) + end + end + + describe 'resolve() in prefetch tokens' do + let(:templates) do + { 'patient' => 'Patient?_id={{context.draftOrders.entry.resource.patient.resolve().id}}' } + end + + before do + order_sign_request['context']['draftOrders']['entry'][0]['resource']['patient']['reference'] = 'Patient/example' + end + + it 'passes when the referenced resource is in the prefetch set' do + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"Patient"/) + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'returns an error when the referenced resource is not in the prefetch set' do + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"Patient"/) + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + errors = errors_for(order_sign_request, templates) + expect(errors) + .to eq(["(Request 1) Prefetch Template patient - resource 'https://example/r4/Patient/example' needed to " \ + 'instantiate the query was not provided in the prefetched values.']) + end + + it 'resolves absolute references directly without base server lookup' do + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', + element: { 'reference' => "#{base_fhir_url}/Patient/example" } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"Patient"/) + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + expect(errors_for(order_sign_request, templates)).to be_empty + end + + it 'returns an error when resolving a relative reference without a known base FHIR server' do + order_sign_request.delete('fhirServer') + order_sign_request['context']['draftOrders']['entry'].each { |e| e.delete('fullUrl') } + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + + errors = errors_for(order_sign_request, templates) + expect(errors).to include(match('is a relative reference, but the base FHIR Server is not known')) + end + + it 'returns an error for a reference with too many path segments' do + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', + element: { 'reference' => 'Patient/example/extra' } }].to_json) + + errors = errors_for(order_sign_request, templates) + expect(errors).to include(match('too many segments to be a relative reference')) + end + + it 'returns an error for a malformed relative reference missing the resource id' do + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient' } }].to_json) + + errors = errors_for(order_sign_request, templates) + expect(errors).to include(match('is not a valid relative reference of the form')) + end + + it 'returns an error for a reference that is an invalid URI' do + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'Bundle' } } + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', + element: { 'reference' => 'http://example.com/bad path' } }].to_json) + + errors = errors_for(order_sign_request, templates) + expect(errors).to include(match('is invalid')) + end + + it 'does not update the base FHIR server when resolve() fails, ' \ + 'so relative references after the failure resolve correctly' do + order_sign_request['context']['draftOrders'] = { + 'resourceType' => 'Bundle', + 'entry' => [{ + 'fullUrl' => "#{base_fhir_url}/NutritionOrder/example", + 'resource' => { + 'resourceType' => 'NutritionOrder', + 'id' => 'example', + 'basedOn' => [ + { 'reference' => 'https://other-server/r4/Patient/missing' }, + { 'reference' => 'Patient/example' } + ] + } + }] + } + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + + stub_request(:post, "#{fhirpath_url}?path=basedOn") + .to_return(status: 200, + body: [ + { type: 'Reference', element: { 'reference' => 'https://other-server/r4/Patient/missing' } }, + { type: 'Reference', element: { 'reference' => 'Patient/example' } } + ].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"Patient"/) + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + errors = errors_for(order_sign_request, + { 'patient' => 'Patient?_id={{context.draftOrders.entry.resource.basedOn.resolve().id}}' }) + expect(errors).to eq( + ["(Request 1) Prefetch Template patient - resource 'https://other-server/r4/Patient/missing' " \ + 'needed to instantiate the query was not provided in the prefetched values.'] + ) + end + end + + describe '#observed_fhirpath_collection_as_comma_delimited_string' do + it 'is false by default before check_prefetched_data is called' do + checker = make_checker(order_sign_request, {}) + expect(checker.observed_fhirpath_collection_as_comma_delimited_string).to be(false) + end + + it 'remains false when no _id search template is present' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + checker = make_checker(order_sign_request, { 'patient' => 'Patient/{{context.patientId}}' }) + checker.check_prefetched_data + expect(checker.observed_fhirpath_collection_as_comma_delimited_string).to be(false) + end + + it 'remains false when the _id template token has no pipe' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + checker = make_checker(order_sign_request, { 'patient' => 'Patient?_id={{context.patientId}}' }) + checker.check_prefetched_data + expect(checker.observed_fhirpath_collection_as_comma_delimited_string).to be(false) + end + + it 'remains false when the token has a pipe but only one id is resolved' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + checker = make_checker(order_sign_request, + { 'patient' => 'Patient?_id={{context.patientId|context.nonExistentField}}' }) + checker.check_prefetched_data + expect(checker.observed_fhirpath_collection_as_comma_delimited_string).to be(false) + end + + it 'remains false when the token has a pipe and multiple ids resolve but are all the same' do + order_sign_request['context']['duplicatePatientId'] = 'example' + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + checker = make_checker(order_sign_request, + { 'patient' => 'Patient?_id={{context.patientId|context.duplicatePatientId}}' }) + checker.check_prefetched_data + expect(checker.observed_fhirpath_collection_as_comma_delimited_string).to be(false) + end + + it 'becomes true when the token has a pipe and multiple ids are resolved' do + order_sign_request['context']['secondPatientId'] = 'other' + order_sign_request['prefetch'] = { 'patient' => { + 'resourceType' => 'Bundle', + 'entry' => [ + { 'resource' => crd_patient_example }, + { 'resource' => crd_patient_example.merge('id' => 'other') } + ] + } } + checker = make_checker(order_sign_request, + { 'patient' => 'Patient?_id={{context.patientId|context.secondPatientId}}' }) + checker.check_prefetched_data + expect(checker.observed_fhirpath_collection_as_comma_delimited_string).to be(true) + end + + it 'becomes true when any one of multiple templates demonstrates multi-id collection' do + order_sign_request['context']['secondPatientId'] = 'other' + order_sign_request['prefetch'] = { + 'patient' => crd_patient_example, + 'patients' => { + 'resourceType' => 'Bundle', + 'entry' => [ + { 'resource' => crd_patient_example }, + { 'resource' => crd_patient_example.merge('id' => 'other') } + ] + } + } + checker = make_checker(order_sign_request, { + 'patient' => 'Patient/{{context.patientId}}', + 'patients' => 'Patient?_id={{context.patientId|context.secondPatientId}}' + }) + checker.check_prefetched_data + expect(checker.observed_fhirpath_collection_as_comma_delimited_string).to be(true) + end + end + + describe 'prefetch resource extraction' do + let(:resolve_patient_template) do + { 'patient' => 'Patient?_id={{context.draftOrders.entry.resource.patient.resolve().id}}' } + end + + before do + order_sign_request['context']['draftOrders']['entry'][0]['resource']['patient']['reference'] = 'Patient/example' + end + + context 'when bundle entries have no fullUrl' do + let(:bundle_without_fullurl) do + { 'resourceType' => 'Bundle', 'entry' => [{ 'resource' => crd_patient_example }] } + end + + it 'are registered using the fhirServer-based key and can be resolved' do + order_sign_request['prefetch'] = { 'patient' => bundle_without_fullurl } + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"Patient"/) + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + expect(errors_for(order_sign_request, resolve_patient_template)).to be_empty + end + + it 'are not registered when fhirServer is absent, causing resource not found during resolve' do + order_sign_request.delete('fhirServer') + order_sign_request['prefetch'] = { 'patient' => bundle_without_fullurl } + stub_request(:post, "#{fhirpath_url}?path=patient") + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + + errors = errors_for(order_sign_request, resolve_patient_template) + expect(errors).to include(match("resource '#{base_fhir_url}/Patient/example' needed to instantiate")) + end + end + + context 'when the prefetch resource is direct (not in a bundle)' do + # Direct prefetch is a single resource, so use a read template (not _id search) + # to avoid a resourceType mismatch when check_id_search expects a Bundle. + let(:resolve_patient_template) do + { 'patient' => 'Patient/{{context.draftOrders.entry.resource.patient.resolve().id}}' } + end + + it 'are registered using the fhirServer-based key and can be resolved' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + stub_request(:post, "#{fhirpath_url}?path=patient") + .with(body: /"resourceType":"NutritionOrder"/) + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=patient") + .with(body: /"resourceType":"MedicationRequest"/) + .to_return(status: 200, body: [].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"Patient"/) + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + expect(errors_for(order_sign_request, resolve_patient_template)).to be_empty + end + + it 'are not registered when fhirServer is absent, causing resource not found during resolve' do + order_sign_request.delete('fhirServer') + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + stub_request(:post, "#{fhirpath_url}?path=patient") + .with(body: /"resourceType":"NutritionOrder"/) + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=patient") + .with(body: /"resourceType":"MedicationRequest"/) + .to_return(status: 200, body: [].to_json) + + errors = errors_for(order_sign_request, resolve_patient_template) + expect(errors).to include(match("resource '#{base_fhir_url}/Patient/example' needed to instantiate")) + end + + it 'are registered correctly when fhirServer has a trailing slash' do + order_sign_request['fhirServer'] = "#{base_fhir_url}/" + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + stub_request(:post, "#{fhirpath_url}?path=patient") + .with(body: /"resourceType":"NutritionOrder"/) + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Patient/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=patient") + .with(body: /"resourceType":"MedicationRequest"/) + .to_return(status: 200, body: [].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"Patient"/) + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + expect(errors_for(order_sign_request, resolve_patient_template)).to be_empty + end + end + end + + describe '#instantiated_prefetch_templates' do + it 'is empty before any methods are called' do + checker = make_checker(order_sign_request, {}) + expect(checker.instantiated_prefetch_templates).to be_empty + end + + it 'is populated with instantiated templates after check_prefetched_data' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + checker = make_checker(order_sign_request, { 'patient' => 'Patient/{{context.patientId}}' }) + checker.check_prefetched_data + expect(checker.instantiated_prefetch_templates).to eq({ 'patient' => 'Patient/example' }) + end + + it 'stores instantiated templates for all checked keys' do + order_sign_request['prefetch'] = { + 'patient' => crd_patient_example, + 'coverage' => crd_coverage_example_bundle + } + checker = make_checker(order_sign_request, { + 'patient' => 'Patient/{{context.patientId}}', + 'coverage' => 'Coverage?patient={{context.patientId}}&status=active' + }) + checker.check_prefetched_data + expect(checker.instantiated_prefetch_templates.keys).to contain_exactly('patient', 'coverage') + expect(checker.instantiated_prefetch_templates['patient']).to eq('Patient/example') + end + end + + describe '#data_sets_different?' do + def make_original_with_instantiated(instantiated_templates) + checker = make_checker(order_sign_request, {}) + checker.instantiated_prefetch_templates.merge!(instantiated_templates) + checker + end + + it 'returns false when the alternate requests the same resources as the original' do + original = make_original_with_instantiated({ 'orders' => 'ServiceRequest?_id=example' }) + alternate = make_checker(order_sign_request, + { 'orders' => 'ServiceRequest?_id={{context.patientId}}' }) + + expect(alternate.data_sets_different?(original, {})).to be(false) + end + + it 'returns true when the alternate requests different resources than the original' do + original = make_original_with_instantiated({ 'orders' => 'ServiceRequest?_id=other-id' }) + alternate = make_checker(order_sign_request, + { 'orders' => 'ServiceRequest?_id={{context.patientId}}' }) + + expect(alternate.data_sets_different?(original, {})).to be(true) + end + + it 'skips patient, encounter, and coverage keys and their short forms' do + original = make_original_with_instantiated({}) + alternate = make_checker(order_sign_request, { + 'patient' => 'Patient/{{context.patientId}}', + 'pat' => 'Patient/{{context.patientId}}', + 'encounter' => 'Encounter/unused', + 'enc' => 'Encounter/unused', + 'coverage' => 'Coverage?patient=unused&status=active', + 'cov' => 'Coverage?patient=unused&status=active' + }) + + expect(alternate.data_sets_different?(original, {})).to be(false) + end + + it 'uses the compare_key_map to find the matching key in the original' do + original = make_original_with_instantiated({ 'original_orders' => 'ServiceRequest?_id=example' }) + alternate = make_checker(order_sign_request, + { 'orders' => 'ServiceRequest?_id={{context.patientId}}' }) + + expect(alternate.data_sets_different?(original, { 'orders' => 'original_orders' })).to be(false) + end + + it 'uses the alternate key directly when it is not in the compare_key_map' do + original = make_original_with_instantiated({ 'orders' => 'ServiceRequest?_id=example' }) + alternate = make_checker(order_sign_request, + { 'orders' => 'ServiceRequest?_id={{context.patientId}}' }) + + expect(alternate.data_sets_different?(original, { 'unrelated' => 'something' })).to be(false) + end + + it 'returns true when any errors occurred indicating failed resource resolution' do + original = make_original_with_instantiated({ 'orders' => 'ServiceRequest?_id=example' }) + alternate = make_checker(order_sign_request, + { 'orders' => 'ServiceRequest?_id={{context.patientId}}' }) + alternate.instance_variable_set(:@errors, ['error one']) + + expect(alternate.data_sets_different?(original, {})).to be(true) + end + + context 'with %key. prefix remapping in alternate templates' do + it 'remaps %key. prefixes in the template before evaluation, enabling ID comparison' do + order_sign_request['prefetch'] = { 'newKey' => { 'resourceType' => 'ServiceRequest', 'id' => 'sr-1' } } + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"ServiceRequest"/) + .to_return(status: 200, body: [{ type: 'id', element: 'sr-1' }].to_json) + + # Template uses %oldKey. but hook_request has data under 'newKey'; + # compare_key_map maps oldKey → newKey, so %oldKey. is replaced with %newKey. before evaluation + original = make_original_with_instantiated({ 'orders' => 'ServiceRequest?_id=sr-2' }) + alternate = make_checker(order_sign_request, { 'orders' => 'ServiceRequest?_id={{%oldKey.id}}' }) + + expect(alternate.data_sets_different?(original, { 'oldKey' => 'newKey' })).to be(true) + end + + it 'returns false when the remapped template produces the same IDs as the original' do + order_sign_request['prefetch'] = { 'newKey' => { 'resourceType' => 'ServiceRequest', 'id' => 'sr-1' } } + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"resourceType":"ServiceRequest"/) + .to_return(status: 200, body: [{ type: 'id', element: 'sr-1' }].to_json) + + original = make_original_with_instantiated({ 'orders' => 'ServiceRequest?_id=sr-1' }) + alternate = make_checker(order_sign_request, { 'orders' => 'ServiceRequest?_id={{%oldKey.id}}' }) + + expect(alternate.data_sets_different?(original, { 'oldKey' => 'newKey' })).to be(false) + end + + it 'returns true via error when remapping enables resolve() of a resource absent from prefetch' do + encounter = { + 'resourceType' => 'Encounter', + 'id' => 'encounter-1', + 'participant' => [{ 'individual' => { 'reference' => 'PractitionerRole/role-1' } }] + } + order_sign_request['prefetch'] = { 'enc' => encounter } + + stub_request(:post, "#{fhirpath_url}?path=participant.individual") + .with(body: /"resourceType":"Encounter"/) + .to_return(status: 200, + body: [{ type: 'Reference', + element: { 'reference' => 'PractitionerRole/role-1' } }].to_json) + + # Template uses %encounter. which remaps to %enc. via compare_key_map; + # after remapping, the encounter is found and resolve() is attempted for PractitionerRole/role-1; + # PractitionerRole is absent from prefetch, so resolve() adds an error → returns true + original = make_original_with_instantiated({}) + alternate = make_checker( + order_sign_request, + { 'practitionerRoles' => + 'PractitionerRole?_id={{%encounter.participant.individual.resolve().ofType(PractitionerRole).id}}' } + ) + + expect(alternate.data_sets_different?(original, { 'encounter' => 'enc' })).to be(true) + end + end + end + + describe '#data_set_different_with_alternate_service?' do + it 'creates a new checker for the alternate path and delegates to data_sets_different?' do + original_checker = make_checker(order_sign_request, {}) + alternate_checker = instance_double(described_class) + compare_key_map = { 'orders' => 'alt_orders' } + allow(described_class).to receive(:new) + .with(order_sign_request, 0, '/alternate/services.json') + .and_return(alternate_checker) + allow(alternate_checker).to receive(:data_sets_different?).and_return(true) + + result = original_checker.data_set_different_with_alternate_service?('/alternate/services.json', + compare_key_map) + + expect(alternate_checker).to have_received(:data_sets_different?).with(original_checker, compare_key_map) + expect(result).to be(true) + end + + it 'returns false when the alternate service requests the same data' do + original_checker = make_checker(order_sign_request, {}) + alternate_checker = instance_double(described_class) + allow(described_class).to receive(:new) + .with(order_sign_request, 0, '/alternate/services.json') + .and_return(alternate_checker) + allow(alternate_checker).to receive(:data_sets_different?).and_return(false) + + result = original_checker.data_set_different_with_alternate_service?('/alternate/services.json', {}) + + expect(result).to be(false) + end + end + + describe 'chained prefetch tokens' do + let(:templates) do + { + 'practitionerRoles' => + 'PractitionerRole?_id={{context.draftOrders.entry.resource.orderer.resolve().ofType(PractitionerRole).id}}', + 'practitioners' => 'Practitioner?_id={{%practitionerRoles.entry.resource.practitioner.resolve().id}}' + } + end + + before do + order_sign_request['context']['draftOrders']['entry'][0]['resource']['orderer']['reference'] = + 'PractitionerRole/example' + end + + it 'passes when all chained resources are present' do + stub_request(:post, "#{fhirpath_url}?path=orderer") + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'PractitionerRole/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=ofType(PractitionerRole).id") + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + stub_request(:post, "#{fhirpath_url}?path=practitioner") + .to_return(status: 200, + body: [{ type: 'Reference', element: { 'reference' => 'Practitioner/example' } }].to_json) + stub_request(:post, "#{fhirpath_url}?path=id") + .to_return(status: 200, body: [{ type: 'id', element: 'example' }].to_json) + + order_sign_request['prefetch'] = { 'practitionerRoles' => crd_practitioner_role_example_bundle, + 'practitioners' => crd_practitioner_example_bundle } + errors = errors_for(order_sign_request, templates) + expect(errors).to be_empty + end + end +end diff --git a/spec/davinci_crd_test_kit/prefetch_profile_validation_spec.rb b/spec/davinci_crd_test_kit/prefetch_profile_validation_spec.rb new file mode 100644 index 00000000..3a591244 --- /dev/null +++ b/spec/davinci_crd_test_kit/prefetch_profile_validation_spec.rb @@ -0,0 +1,122 @@ +require_relative '../../lib/davinci_crd_test_kit/cross_suite/prefetch_profile_validation' + +RSpec.describe DaVinciCRDTestKit::PrefetchProfileValidation do + let(:module_instance) do + Class.new do + include DaVinciCRDTestKit::PrefetchProfileValidation + + attr_reader :messages, :resource_is_valid_calls + attr_writer :issues_to_return + + def initialize + @messages = [] + @resource_is_valid_calls = [] + end + + def add_message(type, message) + @messages << { type:, message: } + end + + def resource_is_valid?(resource:, profile_url:, validator_response_details: [], add_messages_to_runnable: true) # rubocop:disable Lint/UnusedMethodArgument + @resource_is_valid_calls << { resource:, profile_url: } + @issues_to_return&.each { |issue| validator_response_details << issue } + end + end.new + end + + let(:patient_resource) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_patient_example.json'))) + end + + let(:practitioner_resource) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'crd_practitioner_example.json'))) + end + + let(:issue_struct) { Struct.new(:severity, :message) } + let(:error_issue) { issue_struct.new('error', 'something went wrong') } + let(:warning_issue) { issue_struct.new('warning', 'heads up') } + + let(:patient_bundle) do + { 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => patient_resource }, { 'resource' => practitioner_resource }] } + end + + describe '#check_prefetch_profiles' do + it 'skips nil prefetch values' do + module_instance.check_prefetch_profiles({ 'patient' => nil }, 0) + + expect(module_instance.resource_is_valid_calls).to be_empty + expect(module_instance.messages).to be_empty + end + + it 'validates each non-nil prefetch value' do + module_instance.check_prefetch_profiles({ 'patient' => patient_resource, + 'practitioner' => practitioner_resource }, 0) + + expect(module_instance.resource_is_valid_calls.size).to eq(2) + end + + it 'skips prefetch values without a resourceType (not FHIR resources)' do + module_instance.check_prefetch_profiles({ 'patient' => { 'not' => 'FHIR' } }, 0) + + expect(module_instance.resource_is_valid_calls).to be_empty + end + + it 'skips resources with no associated CRD profile' do + module_instance.check_prefetch_profiles({ 'sd' => { 'resourceType' => 'StructureDefinition' } }, 0) + + expect(module_instance.resource_is_valid_calls).to be_empty + end + end + + describe 'Bundle handling' do + it 'validates each entry in the bundle individually' do + module_instance.check_prefetch_profiles({ 'patient' => patient_bundle }, 0) + + expect(module_instance.resource_is_valid_calls.size).to eq(2) + end + + it 'skips bundle entries without a resource' do + bundle = { 'resourceType' => 'Bundle', 'entry' => [{ 'resource' => nil }, { 'resource' => patient_resource }] } + module_instance.check_prefetch_profiles({ 'patient' => bundle }, 0) + + expect(module_instance.resource_is_valid_calls.size).to eq(1) + end + end + + describe 'error message format' do + it 'includes the request number and prefetch template key for single resource issues' do + module_instance.issues_to_return = [error_issue] + module_instance.check_prefetch_profiles({ 'patient' => patient_resource }, 0) + + expect(module_instance.messages.first[:message]) + .to eq("(Request 1) Prefetch Template 'patient' validation issue - something went wrong") + end + + it 'includes the bundle entry number for issues within a bundle' do + module_instance.issues_to_return = [error_issue] + module_instance.check_prefetch_profiles({ 'patient' => patient_bundle }, 0) + + messages = module_instance.messages.map { |m| m[:message] } + expect(messages.first).to include('Bundle entry 1') + expect(messages.last).to include('Bundle entry 2') + end + + it 'passes the issue severity through to add_message' do + module_instance.issues_to_return = [warning_issue] + module_instance.check_prefetch_profiles({ 'patient' => patient_resource }, 0) + + expect(module_instance.messages.first[:type]).to eq('warning') + end + end + + describe 'resource_is_valid? call' do + it 'passes the correct CRD profile URL for the resource type' do + module_instance.check_prefetch_profiles({ 'patient' => patient_resource }, 0) + + call = module_instance.resource_is_valid_calls.first + expect(call[:profile_url]) + .to eq('http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-patient|2.2.1') + end + end +end diff --git a/spec/davinci_crd_test_kit/propose_alternate_request_card_validation_test_spec.rb b/spec/davinci_crd_test_kit/propose_alternate_request_card_validation_test_spec.rb index ed620eb2..5fac9c81 100644 --- a/spec/davinci_crd_test_kit/propose_alternate_request_card_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/propose_alternate_request_card_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::ProposeAlternateRequestCardValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::ProposeAlternateRequestCardValidationTest do let(:suite_id) { 'crd_client' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/replace_tokens_spec.rb b/spec/davinci_crd_test_kit/replace_tokens_spec.rb index 35d5e917..0d407a5b 100644 --- a/spec/davinci_crd_test_kit/replace_tokens_spec.rb +++ b/spec/davinci_crd_test_kit/replace_tokens_spec.rb @@ -1,7 +1,10 @@ +require_relative '../../lib/davinci_crd_test_kit/cross_suite/fhirpath_on_cds_request' + RSpec.describe DaVinciCRDTestKit::ReplaceTokens do let(:module_instance) do Class.new do include DaVinciCRDTestKit::ReplaceTokens + include DaVinciCRDTestKit::FhirpathOnCDSRequest end.new end let(:fhirpath_url) { 'https://example.com/fhirpath/evaluate' } @@ -9,8 +12,9 @@ let(:order_sign_request) do JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_sign_hook_request.json'))) end - let(:fancy_structure_request) do - JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'fancy_structure_hook_request.json'))) + + let(:order_dispatch_request) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_dispatch_hook_v221_request.json'))) end describe 'when replacing in a string' do @@ -50,44 +54,80 @@ end it 'returns a comma-delimited list if multiple things found' do - target = 'Patient?_id={{context.list.id}}' - module_instance.replace_tokens(target, fancy_structure_request) - - expect(target).to eq('Patient?_id=123,456') + fhirpath_result_one = [{ type: 'id', element: 'example-schedule-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-schedule-task"/) + .to_return(status: 200, body: fhirpath_result_one.to_json) + fhirpath_result_two = [{ type: 'id', element: 'example-refill-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-refill-task"/) + .to_return(status: 200, body: fhirpath_result_two.to_json) + + target = 'Task?_id={{context.fulfillmentTasks.id}}' + module_instance.replace_tokens(target, order_dispatch_request) + + expect(target).to eq('Task?_id=example-schedule-task,example-refill-task') end it 'handles missing values via compacting' do - target = 'Patient?_id={{context.non_uniform_list.id}}' - module_instance.replace_tokens(target, fancy_structure_request) - - expect(target).to eq('Patient?_id=456,') + fhirpath_result_one = [{ type: 'id', element: 'example-schedule-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-schedule-task"/) + .to_return(status: 200, body: fhirpath_result_one.to_json) + fhirpath_result_two = [{ type: 'id', element: 'example-refill-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-refill-task"/) + .to_return(status: 200, body: fhirpath_result_two.to_json) + + target = 'Task?_id={{context.fulfillmentTasks.id|context.notThere}}' + module_instance.replace_tokens(target, order_dispatch_request) + + expect(target).to eq('Task?_id=example-schedule-task,example-refill-task') end end describe 'when replacing in a Hash' do it 'performs replacements on each value' do + fhirpath_result_one = [{ type: 'id', element: 'example-schedule-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-schedule-task"/) + .to_return(status: 200, body: fhirpath_result_one.to_json) + fhirpath_result_two = [{ type: 'id', element: 'example-refill-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-refill-task"/) + .to_return(status: 200, body: fhirpath_result_two.to_json) + hash = { - '{{tricky}}': 'Patient?_id={{context.list.id}}', + '{{tricky}}': 'Task?_id={{context.fulfillmentTasks.id}}', patient: 'Patient/{{context.patientId}}' } - module_instance.replace_tokens(hash, fancy_structure_request) + module_instance.replace_tokens(hash, order_dispatch_request) - expect(hash[:'{{tricky}}']).to eq('Patient?_id=123,456') + expect(hash[:'{{tricky}}']).to eq('Task?_id=example-schedule-task,example-refill-task') expect(hash[:patient]).to eq('Patient/example') end end describe 'when replacing in an Array' do it 'performs replacements on each value' do + fhirpath_result_one = [{ type: 'id', element: 'example-schedule-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-schedule-task"/) + .to_return(status: 200, body: fhirpath_result_one.to_json) + fhirpath_result_two = [{ type: 'id', element: 'example-refill-task' }] + stub_request(:post, "#{fhirpath_url}?path=id") + .with(body: /"id":"example-refill-task"/) + .to_return(status: 200, body: fhirpath_result_two.to_json) + array = [ - 'Patient?_id={{context.list.id}}', + 'Task?_id={{context.fulfillmentTasks.id}}', 'Patient/{{context.patientId}}' ] - module_instance.replace_tokens(array, fancy_structure_request) + module_instance.replace_tokens(array, order_dispatch_request) expect(array.length).to eq(2) - expect(array[0]).to eq('Patient?_id=123,456') + expect(array[0]).to eq('Task?_id=example-schedule-task,example-refill-task') expect(array[1]).to eq('Patient/example') end end diff --git a/spec/davinci_crd_test_kit/requests_logical_model_validation_spec.rb b/spec/davinci_crd_test_kit/requests_logical_model_validation_spec.rb new file mode 100644 index 00000000..02906cac --- /dev/null +++ b/spec/davinci_crd_test_kit/requests_logical_model_validation_spec.rb @@ -0,0 +1,878 @@ +require_relative '../../lib/davinci_crd_test_kit/cross_suite/requests_logical_model_validation' + +IssueStub = Struct.new(:filtered, :location, :message, :severity, keyword_init: true) + +RSpec.describe DaVinciCRDTestKit::RequestsLogicalModelValidation do + let(:module_instance) do + Class.new do + include DaVinciCRDTestKit::RequestsLogicalModelValidation + + attr_reader :messages, :conforms_calls, :resource_is_valid_calls + attr_accessor :mock_validation_details, :mock_appointment_validation_details + + def initialize + @messages = [] + @conforms_calls = [] + @resource_is_valid_calls = [] + @mock_validation_details = [] + @mock_appointment_validation_details = [] + end + + def add_message(type, message) + @messages << { type:, message: } + end + + def conforms_to_logical_model?(object, url, message_prefix: '', validator_response_details: nil, **_) + @conforms_calls << { object:, url:, message_prefix: } + validator_response_details&.concat(@mock_validation_details) + true + end + + def resource_is_valid?(resource:, profile_url:, message_prefix: '', validator_response_details: nil, **_) + @resource_is_valid_calls << { resource:, profile_url:, message_prefix: } + validator_response_details&.concat(@mock_appointment_validation_details) + true + end + + def scratch + @scratch ||= {} + end + end.new + end + + let(:order_dispatch_request_v211) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_dispatch_hook_v221_request.json'))) + end + + let(:order_sign_request) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_sign_hook_request.json'))) + end + + let(:order_select_request) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'order_select_hook_request.json'))) + end + + let(:appointment_book_request) do + JSON.parse(File.read(File.join(__dir__, '..', 'fixtures', 'appointment_book_hook_request.json'))) + end + + describe '#check_relative_references' do + context 'when the hook is order-dispatch' do + it 'adds no errors when performer and dispatchedOrders are valid local references' do + module_instance.send(:check_relative_references, order_dispatch_request_v211, 0) + + expect(module_instance.messages).to be_empty + end + + it 'adds an error when performer is not a local reference format' do + order_dispatch_request_v211['context']['performer'] = 'not-a-reference' + + module_instance.send(:check_relative_references, order_dispatch_request_v211, 0) + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('context.performer') + expect(module_instance.messages.first[:message]).to include('expected a local reference') + end + + it 'adds an error when performer has a disallowed resource type' do + order_dispatch_request_v211['context']['performer'] = 'Patient/example' + + module_instance.send(:check_relative_references, order_dispatch_request_v211, 0) + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('context.performer') + expect(module_instance.messages.first[:message]).to include("'Patient'") + expect(module_instance.messages.first[:message]).to include('Practitioner, PractitionerRole') + end + + it 'adds an error when a dispatchedOrders entry has a disallowed resource type' do + order_dispatch_request_v211['context']['dispatchedOrders'][0] = 'Patient/example' + + module_instance.send(:check_relative_references, order_dispatch_request_v211, 0) + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('context.dispatchedOrders entry 1') + expect(module_instance.messages.first[:message]).to include("'Patient'") + end + + it 'includes the request index in error messages' do + order_dispatch_request_v211['context']['performer'] = 'not-a-reference' + + module_instance.send(:check_relative_references, order_dispatch_request_v211, 2) + + expect(module_instance.messages.first[:message]).to include('(Request 3)') + end + end + + context 'when the hook is not order-dispatch' do + it 'adds no errors when userId is a valid local reference' do + module_instance.send(:check_relative_references, order_sign_request, 0) + + expect(module_instance.messages).to be_empty + end + + it 'adds an error when userId is not a local reference format' do + order_sign_request['context']['userId'] = 'not-a-reference' + + module_instance.send(:check_relative_references, order_sign_request, 0) + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('context.userId') + expect(module_instance.messages.first[:message]).to include('expected a local reference') + end + + it 'adds an error when userId has a disallowed resource type' do + order_sign_request['context']['userId'] = 'Device/example' + + module_instance.send(:check_relative_references, order_sign_request, 0) + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('context.userId') + expect(module_instance.messages.first[:message]).to include("'Device'") + expect(module_instance.messages.first[:message]) + .to include('Practitioner, PractitionerRole, Patient, RelatedPerson') + end + end + + context 'when the hook is order-select' do + it 'adds no errors when userId and selections are valid and present in draftOrders' do + module_instance.send(:check_relative_references, order_select_request, 0) + + expect(module_instance.messages).to be_empty + end + + it 'adds an error when a selection is not a local reference format' do + order_select_request['context']['selections'][0] = 'not-a-reference' + + module_instance.send(:check_relative_references, order_select_request, 0) + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('context.selections entry 1') + expect(module_instance.messages.first[:message]).to include('expected a local reference') + end + + it 'adds an error when a selection is not found in draftOrders' do + order_select_request['context']['selections'][0] = 'ServiceRequest/missing-resource' + + module_instance.send(:check_relative_references, order_select_request, 0) + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('context.selections entry 1') + expect(module_instance.messages.first[:message]).to include("'ServiceRequest/missing-resource'") + expect(module_instance.messages.first[:message]).to include('draftOrders') + end + + it 'skips the bundle check when a selection has an invalid format' do + order_select_request['context']['selections'][0] = 'not-a-reference' + + module_instance.send(:check_relative_references, order_select_request, 0) + + expect(module_instance.messages.none? { |m| m[:message].include?('not found') }).to be true + end + end + end + + describe '#local_reference?' do + it 'returns true and adds no errors for a valid reference with an allowed resource type' do + result = module_instance.send(:local_reference?, 'Practitioner/example', 'prefix', + allowed_resource_types: %w[Practitioner Patient]) + + expect(result).to be true + expect(module_instance.messages).to be_empty + end + + it 'returns false and adds an error when the value is not in local reference format' do + result = module_instance.send(:local_reference?, 'not-a-reference', 'prefix', + allowed_resource_types: %w[Practitioner]) + + expect(result).to be false + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]) + .to eq("prefix expected a local reference, got 'not-a-reference'.") + end + + it 'returns false and adds an error when the resource type is not in the allowed list' do + result = module_instance.send(:local_reference?, 'Device/example', 'prefix', + allowed_resource_types: %w[Practitioner Patient]) + + expect(result).to be false + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include("'Device'") + expect(module_instance.messages.first[:message]).to include('Practitioner, Patient') + end + + it 'returns false and adds an error when the id contains invalid characters' do + result = module_instance.send(:local_reference?, 'Practitioner/@@@', 'prefix', + allowed_resource_types: %w[Practitioner]) + + expect(result).to be false + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include("'@@@'") + expect(module_instance.messages.first[:message]).to include('FHIR id data type') + end + + it 'returns false and adds an error when the id contains a mix of valid and invalid characters' do + result = module_instance.send(:local_reference?, 'Practitioner/abc@@@', 'prefix', + allowed_resource_types: %w[Practitioner]) + + expect(result).to be false + expect(module_instance.messages.first[:message]).to include("'abc@@@'") + expect(module_instance.messages.first[:message]).to include('FHIR id data type') + end + + it 'returns true when no allowed list is given and the resource type is a valid FHIR type' do + result = module_instance.send(:local_reference?, 'Patient/example', 'prefix') + + expect(result).to be true + expect(module_instance.messages).to be_empty + end + + it 'returns false and adds an error when no allowed list is given and the resource type is not a valid FHIR type' do + result = module_instance.send(:local_reference?, 'NotAType/example', 'prefix') + + expect(result).to be false + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include("'NotAType'") + expect(module_instance.messages.first[:message]).to include('a valid FHIR resource type') + end + end + + describe '#referenced_resource_present_in_bundle?' do + let(:bundle) do + { + 'resourceType' => 'Bundle', + 'entry' => [ + { 'resource' => { 'resourceType' => 'ServiceRequest', 'id' => 'sr-1' } }, + { 'resource' => { 'resourceType' => 'MedicationRequest', 'id' => 'mr-1' } } + ] + } + end + + it 'returns true and adds no errors when the referenced resource is in the bundle' do + result = module_instance.send(:referenced_resource_present_in_bundle?, bundle, 'ServiceRequest/sr-1', + 'prefix', 'draftOrders') + + expect(result).to be true + expect(module_instance.messages).to be_empty + end + + it 'returns false and adds an error when the referenced resource is not in the bundle' do + result = module_instance.send(:referenced_resource_present_in_bundle?, bundle, 'ServiceRequest/missing', + 'prefix', 'draftOrders') + + expect(result).to be false + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to eq( + "prefix referenced resource 'ServiceRequest/missing' not found in the draftOrders Bundle." + ) + end + + it 'returns false and adds an error when the bundle is nil' do + result = module_instance.send(:referenced_resource_present_in_bundle?, nil, 'ServiceRequest/sr-1', + 'prefix', 'draftOrders') + + expect(result).to be false + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include("'ServiceRequest/sr-1'") + end + + it 'returns false and adds an error when the bundle has no entries' do + result = module_instance.send(:referenced_resource_present_in_bundle?, + { 'resourceType' => 'Bundle' }, 'ServiceRequest/sr-1', + 'prefix', 'draftOrders') + + expect(result).to be false + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include("'ServiceRequest/sr-1'") + end + end + + describe '#reject_resource_issues' do + it 'keeps issues that are not filtered and have no location' do + issue = IssueStub.new(filtered: false, location: nil, message: 'something', severity: 'error') + + result = module_instance.send(:reject_resource_issues, [issue]) + + expect(result).to eq([issue]) + end + + it 'rejects issues where filtered is true' do + issue = IssueStub.new(filtered: true, location: nil, message: 'something', severity: 'error') + + result = module_instance.send(:reject_resource_issues, [issue]) + + expect(result).to be_empty + end + + it 'rejects issues whose location contains a /*ResourceType/ path segment' do + issue = IssueStub.new(filtered: false, + location: 'CRDHooksRequest.context/*Patient/name', + message: 'something', + severity: 'error') + + result = module_instance.send(:reject_resource_issues, [issue]) + + expect(result).to be_empty + end + + it 'keeps issues whose location does not contain a resource path segment' do + issue = IssueStub.new(filtered: false, + location: 'CRDHooksRequest.context.userId', + message: 'something', + severity: 'error') + + result = module_instance.send(:reject_resource_issues, [issue]) + + expect(result).to eq([issue]) + end + end + + describe '#reject_entry_resource_issues' do + it 'keeps issues that are not filtered and have no location' do + issue = IssueStub.new(filtered: false, location: nil, message: 'something', severity: 'error') + + result = module_instance.send(:reject_entry_resource_issues, [issue]) + + expect(result).to eq([issue]) + end + + it 'rejects issues where filtered is true' do + issue = IssueStub.new(filtered: true, location: nil, message: 'something', severity: 'error') + + result = module_instance.send(:reject_entry_resource_issues, [issue]) + + expect(result).to be_empty + end + + it 'rejects issues whose location starts with Bundle.entry[N].resource' do + issue = IssueStub.new(filtered: false, + location: 'Bundle.entry[0].resource.status', + message: 'something', + severity: 'error') + + result = module_instance.send(:reject_entry_resource_issues, [issue]) + + expect(result).to be_empty + end + + it 'keeps issues whose location does not match the Bundle entry resource pattern' do + issue = IssueStub.new(filtered: false, + location: 'Bundle.type', + message: 'something', + severity: 'error') + + result = module_instance.send(:reject_entry_resource_issues, [issue]) + + expect(result).to eq([issue]) + end + end + + describe '#check_bundle_non_entry_resource_conformance' do + let(:bundle) { FHIR::Bundle.new(type: 'collection') } + + it 'validates the bundle against the profile-bundle-base profile' do + module_instance.send(:check_bundle_non_entry_resource_conformance, bundle, 'prefix - ', '2.2.1') + + call = module_instance.resource_is_valid_calls.first + expect(call[:profile_url]).to include('profile-bundle-base') + expect(call[:profile_url]).to include('2.2.1') + end + + it 'adds messages for non-filtered, non-entry-resource issues' do + module_instance.mock_appointment_validation_details = [ + IssueStub.new(filtered: false, location: 'Bundle.type', message: 'bad type', severity: 'error') + ] + + module_instance.send(:check_bundle_non_entry_resource_conformance, bundle, 'prefix - ', '2.2.1') + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('bad type') + expect(module_instance.messages.first[:message]).to include('prefix - ') + end + + it 'does not add messages for filtered issues' do + module_instance.mock_appointment_validation_details = [ + IssueStub.new(filtered: true, location: nil, message: 'ignored', severity: 'error') + ] + + module_instance.send(:check_bundle_non_entry_resource_conformance, bundle, 'prefix - ', '2.2.1') + + expect(module_instance.messages).to be_empty + end + + it 'does not add messages for entry resource issues' do + module_instance.mock_appointment_validation_details = [ + IssueStub.new(filtered: false, + location: 'Bundle.entry[0].resource.status', + message: 'entry issue', + severity: 'error') + ] + + module_instance.send(:check_bundle_non_entry_resource_conformance, bundle, 'prefix - ', '2.2.1') + + expect(module_instance.messages).to be_empty + end + end + + describe '#check_logical_model_conformance_no_resource_checks' do + it 'calls conforms_to_logical_model? with add_messages_to_runnable: false' do + module_instance.send(:check_logical_model_conformance_no_resource_checks, order_sign_request, 0, '2.2.1') + + call = module_instance.conforms_calls.first + expect(call[:url]).to include('2.2.1') + end + + it 'adds messages for non-filtered, non-resource issues returned by validation' do + module_instance.mock_validation_details = [ + IssueStub.new(filtered: false, location: 'context.hook', message: 'bad value', severity: 'error') + ] + + module_instance.send(:check_logical_model_conformance_no_resource_checks, order_sign_request, 0, '2.2.1') + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:type]).to eq('error') + expect(module_instance.messages.first[:message]).to include('bad value') + expect(module_instance.messages.first[:message]).to include('(Request 1)') + end + + it 'does not add messages for filtered issues' do + module_instance.mock_validation_details = [ + IssueStub.new(filtered: true, location: nil, message: 'ignored', severity: 'error') + ] + + module_instance.send(:check_logical_model_conformance_no_resource_checks, order_sign_request, 0, '2.2.1') + + expect(module_instance.messages).to be_empty + end + + it 'does not add messages for issues with a resource path in the location' do + module_instance.mock_validation_details = [ + IssueStub.new(filtered: false, + location: 'context/*Patient/name', + message: 'resource issue', + severity: 'error') + ] + + module_instance.send(:check_logical_model_conformance_no_resource_checks, order_sign_request, 0, '2.2.1') + + expect(module_instance.messages).to be_empty + end + end + + describe '#check_context_resource_profiles' do + context 'when the hook is order-sign' do + it 'validates draftOrders against the bundle-request profile' do + module_instance.send(:check_context_resource_profiles, order_sign_request, 0, '2.2.1') + + call = module_instance.resource_is_valid_calls.first + expect(call[:profile_url]).to include('profile-bundle-request') + expect(call[:profile_url]).to include('2.2.1') + expect(call[:message_prefix]).to include('context.draftOrders') + end + end + + context 'when the hook is order-select' do + it 'validates draftOrders against the bundle-request profile' do + module_instance.send(:check_context_resource_profiles, order_select_request, 0, '2.2.1') + + call = module_instance.resource_is_valid_calls.first + expect(call[:profile_url]).to include('profile-bundle-request') + end + end + + context 'when the hook is order-dispatch' do + it 'validates each fulfillmentTask against the task-dispatch profile' do + module_instance.send(:check_context_resource_profiles, order_dispatch_request_v211, 0, '2.2.1') + + task_calls = module_instance.resource_is_valid_calls.select do |c| + c[:profile_url].include?('profile-task-dispatch') + end + task_count = order_dispatch_request_v211.dig('context', 'fulfillmentTasks').length + expect(task_calls.length).to eq(task_count) + end + + it 'includes the entry index in the message prefix for each task' do + module_instance.send(:check_context_resource_profiles, order_dispatch_request_v211, 0, '2.2.1') + + task_calls = module_instance.resource_is_valid_calls.select do |c| + c[:profile_url].include?('profile-task-dispatch') + end + expect(task_calls.first[:message_prefix]).to include('entry 1') + expect(task_calls.last[:message_prefix]).to include('entry 2') + end + end + + context 'when the hook is appointment-book' do + it 'validates the appointments bundle against the bundle-base profile' do + module_instance.send(:check_context_resource_profiles, appointment_book_request, 0, '2.2.1') + + bundle_call = module_instance.resource_is_valid_calls.find do |c| + c[:profile_url].include?('profile-bundle-base') + end + expect(bundle_call).to_not be_nil + expect(bundle_call[:profile_url]).to include('2.2.1') + end + end + end + + describe '#check_appointment_conformance' do + let(:appointment_with_based_on) do + FHIR::Appointment.new( + status: 'proposed', + basedOn: [FHIR::Reference.new(reference: 'ServiceRequest/example')] + ) + end + + let(:appointment_without_based_on) do + FHIR::Appointment.new(status: 'proposed') + end + + it 'validates against profile-appointment-with-order when basedOn is present' do + module_instance.send(:check_appointment_conformance, appointment_with_based_on, + appointment_book_request, 'prefix - ', '2.2.1') + + call = module_instance.resource_is_valid_calls.first + expect(call[:profile_url]).to include('profile-appointment-with-order') + expect(call[:profile_url]).to include('2.2.1') + end + + it 'validates against profile-appointment-no-order when basedOn is absent' do + module_instance.send(:check_appointment_conformance, appointment_without_based_on, + appointment_book_request, 'prefix - ', '2.2.1') + + call = module_instance.resource_is_valid_calls.first + expect(call[:profile_url]).to include('profile-appointment-no-order') + end + + it 'adds messages for non-filtered validation issues' do + module_instance.mock_appointment_validation_details = [ + IssueStub.new(filtered: false, location: nil, message: 'field missing', severity: 'error') + ] + + module_instance.send(:check_appointment_conformance, appointment_without_based_on, + appointment_book_request, 'prefix - ', '2.2.1') + + expect(module_instance.messages.length).to eq(1) + expect(module_instance.messages.first[:message]).to include('field missing') + expect(module_instance.messages.first[:message]).to include('prefix - ') + end + + it 'does not add messages for filtered validation issues' do + module_instance.mock_appointment_validation_details = [ + IssueStub.new(filtered: true, location: nil, message: 'ignored', severity: 'error') + ] + + module_instance.send(:check_appointment_conformance, appointment_without_based_on, + appointment_book_request, 'prefix - ', '2.2.1') + + expect(module_instance.messages).to be_empty + end + end + + describe '#filter_and_manually_check_appointment_validation_errors' do + let(:request_body) do + { 'fhirServer' => 'https://example/r4', 'context' => { 'patientId' => 'pt-1' } } + end + + let(:performer_participant) do + FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'Practitioner/example'), + type: [FHIR::CodeableConcept.new( + coding: [FHIR::Coding.new( + code: 'PPRF', + system: 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType' + )] + )] + ) + end + + let(:patient_participant) do + FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'Patient/pt-1') + ) + end + + let(:appointment_with_performer_and_patient) do + FHIR::Appointment.new(participant: [performer_participant, patient_participant]) + end + + let(:appointment_without_slices) do + FHIR::Appointment.new(participant: []) + end + + let(:primary_performer_slice_error) do + IssueStub.new( + filtered: false, location: nil, severity: 'error', + message: "Slice 'Appointment.participant:PrimaryPerformer': a matching slice is required, but not found" + ) + end + + let(:patient_slice_error) do + IssueStub.new( + filtered: false, location: nil, severity: 'error', + message: "Slice 'Appointment.participant:Patient': a matching slice is required, but not found" + ) + end + + it 'keeps non-filtered issues' do + issue = IssueStub.new(filtered: false, location: nil, message: 'something', severity: 'error') + + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + [issue], appointment_without_slices, request_body) + + expect(result).to eq([issue]) + end + + it 'rejects filtered issues' do + issue = IssueStub.new(filtered: true, location: nil, message: 'something', severity: 'error') + + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + [issue], appointment_without_slices, request_body) + + expect(result).to be_empty + end + + it 'rejects the PrimaryPerformer slice error when the appointment has a PPRF participant' do + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + [primary_performer_slice_error], + appointment_with_performer_and_patient, request_body) + + expect(result).to be_empty + end + + it 'keeps the PrimaryPerformer slice error when the appointment has no PPRF participant' do + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + [primary_performer_slice_error], + appointment_without_slices, request_body) + + expect(result).to eq([primary_performer_slice_error]) + end + + it 'rejects the Patient slice error when the appointment has a patient participant' do + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + [patient_slice_error], + appointment_with_performer_and_patient, request_body) + + expect(result).to be_empty + end + + it 'keeps the Patient slice error when the appointment has no patient participant' do + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + [patient_slice_error], + appointment_without_slices, request_body) + + expect(result).to eq([patient_slice_error]) + end + + context 'when a participant index is matched to a slice' do + let(:matched_participant_slice_issue) do + IssueStub.new( + filtered: false, location: nil, severity: 'warning', + message: 'Appointment.participant[0]: This element does not match any known slice defined in the profile' + ) + end + + let(:unmatched_participant_slice_issue) do + IssueStub.new( + filtered: false, location: nil, severity: 'warning', + message: 'Appointment.participant[1]: This element does not match any known slice defined in the profile' + ) + end + + it 'rejects the "does not match any known slice" issue for the matched participant index' do + # Issue order matches validator output: element-level errors before slice-level errors + issues = [matched_participant_slice_issue, primary_performer_slice_error] + + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + issues, appointment_with_performer_and_patient, request_body) + + expect(result).to be_empty + end + + it 'keeps the "does not match any known slice" issue for non-matched participant indexes' do + issues = [unmatched_participant_slice_issue, primary_performer_slice_error] + + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + issues, appointment_with_performer_and_patient, request_body) + + expect(result).to eq([unmatched_participant_slice_issue]) + end + + it 'keeps the "does not match any known slice" issue when no slice is resolved' do + result = module_instance.send(:filter_and_manually_check_appointment_validation_errors, + [matched_participant_slice_issue], appointment_without_slices, request_body) + + expect(result).to eq([matched_participant_slice_issue]) + end + end + end + + describe '#resolved_participant_primary_performer_slice_issue?' do + before { module_instance.instance_variable_set(:@matched_participant_slice_indexes, []) } + + let(:primary_performer_issue) do + IssueStub.new( + filtered: false, location: nil, severity: 'error', + message: "Slice 'Appointment.participant:PrimaryPerformer': a matching slice is required, but not found" + ) + end + + let(:pprf_appointment) do + FHIR::Appointment.new( + participant: [ + FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'Practitioner/example'), + type: [FHIR::CodeableConcept.new( + coding: [FHIR::Coding.new( + code: 'PPRF', + system: 'http://terminology.hl7.org/CodeSystem/v3-ParticipationType' + )] + )] + ) + ] + ) + end + + let(:no_pprf_appointment) { FHIR::Appointment.new(participant: []) } + + it 'returns false when the issue does not match the PrimaryPerformer slice error pattern' do + other_issue = IssueStub.new(filtered: false, location: nil, severity: 'error', message: 'something else') + + result = module_instance.send(:resolved_participant_primary_performer_slice_issue?, + other_issue, pprf_appointment) + + expect(result).to be false + end + + it 'returns false when the issue matches but no participant is a primary performer' do + result = module_instance.send(:resolved_participant_primary_performer_slice_issue?, + primary_performer_issue, no_pprf_appointment) + + expect(result).to be false + end + + it 'returns true when the issue matches and a participant is a primary performer' do + result = module_instance.send(:resolved_participant_primary_performer_slice_issue?, + primary_performer_issue, pprf_appointment) + + expect(result).to be true + end + + it 'records the matching participant index when resolved' do + module_instance.send(:resolved_participant_primary_performer_slice_issue?, + primary_performer_issue, pprf_appointment) + + expect(module_instance.instance_variable_get(:@matched_participant_slice_indexes)).to include(0) + end + + it 'does not record any index when not resolved' do + module_instance.send(:resolved_participant_primary_performer_slice_issue?, + primary_performer_issue, no_pprf_appointment) + + expect(module_instance.instance_variable_get(:@matched_participant_slice_indexes)).to be_empty + end + end + + describe '#resolved_participant_patient_slice_issue?' do + let(:request_body) { { 'fhirServer' => 'https://example/r4', 'context' => { 'patientId' => 'pt-1' } } } + + let(:patient_issue) do + IssueStub.new( + filtered: false, location: nil, severity: 'error', + message: "Slice 'Appointment.participant:Patient': a matching slice is required, but not found" + ) + end + + before { module_instance.instance_variable_set(:@matched_participant_slice_indexes, []) } + + it 'returns false when the issue does not match the Patient slice error pattern' do + other_issue = IssueStub.new(filtered: false, location: nil, severity: 'error', message: 'something else') + appointment = FHIR::Appointment.new(participant: [FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'Patient/pt-1') + )]) + + expect(module_instance.send(:resolved_participant_patient_slice_issue?, + other_issue, appointment, request_body)).to be false + end + + it 'returns false when the issue matches but no participant matches the patient reference' do + appointment = FHIR::Appointment.new(participant: [FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'Practitioner/example') + )]) + + expect(module_instance.send(:resolved_participant_patient_slice_issue?, + patient_issue, appointment, request_body)).to be false + end + + it 'returns true when a participant matches the local patient reference' do + appointment = FHIR::Appointment.new(participant: [FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'Patient/pt-1') + )]) + + expect(module_instance.send(:resolved_participant_patient_slice_issue?, + patient_issue, appointment, request_body)).to be true + end + + it 'returns true when a participant matches the absolute patient reference' do + appointment = FHIR::Appointment.new(participant: [FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'https://example/r4/Patient/pt-1') + )]) + + expect(module_instance.send(:resolved_participant_patient_slice_issue?, + patient_issue, appointment, request_body)).to be true + end + + it 'records the matching participant index when resolved' do + appointment = FHIR::Appointment.new(participant: [FHIR::Appointment::Participant.new( + actor: FHIR::Reference.new(reference: 'Patient/pt-1') + )]) + + module_instance.send(:resolved_participant_patient_slice_issue?, patient_issue, appointment, request_body) + + expect(module_instance.instance_variable_get(:@matched_participant_slice_indexes)).to include(0) + end + end + + describe '#validate_request_against_logical_model' do + describe 'when performing additional v2.2.1 verification' do + it 'adds an error message when a resource in a context list does not have an id' do + order_dispatch_request_v211.dig('context', 'fulfillmentTasks', 0).delete('id') + + module_instance.validate_request_against_logical_model(order_dispatch_request_v211, 0, '2.2.1') + + expect(module_instance.messages.length).to eq(1) + message = module_instance.messages.first + expect(message[:type]).to eq('error') + expect(message[:message]).to eq('(Request 1) FHIR resources provided in the hook context must have an id, ' \ + 'none found for `context.fulfillmentTasks` entry 1.') + end + + it 'adds an error message when a context Bundle entry does not have an id' do + order_sign_request.dig('context', 'draftOrders', 'entry', 0, 'resource').delete('id') + + module_instance.validate_request_against_logical_model(order_sign_request, 0, '2.2.1') + + expect(module_instance.messages.length).to eq(1) + message = module_instance.messages.first + expect(message[:type]).to eq('error') + expect(message[:message]).to eq('(Request 1) FHIR resources provided in the hook context must have an id, ' \ + 'none found for `context.draftOrders` entry 1.') + end + end + end +end diff --git a/spec/davinci_crd_test_kit/retrieve_jwks_test_spec.rb b/spec/davinci_crd_test_kit/retrieve_jwks_test_spec.rb index cab4c08f..6a728b14 100644 --- a/spec/davinci_crd_test_kit/retrieve_jwks_test_spec.rb +++ b/spec/davinci_crd_test_kit/retrieve_jwks_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/retrieve_jwks_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/auth/retrieve_jwks_test' -RSpec.describe DaVinciCRDTestKit::RetrieveJWKSTest do +RSpec.describe DaVinciCRDTestKit::V201::RetrieveJWKSTest do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } @@ -84,7 +84,7 @@ def entity_result_message result = run(test, auth_token_headers_json: [token_header_no_jku.to_json]) expect(result.result).to eq('skip') - expect(result.result_message).to match("JWK Set must be inputted if Client's JWK Set is not available") + expect(result.result_message).to match("JWK Set must be inputted if the client's JWK Set is not available") end it 'fails if it receives non 200 response' do diff --git a/spec/davinci_crd_test_kit/routes/cds_services_discovery_handler_spec.rb b/spec/davinci_crd_test_kit/routes/cds_services_discovery_handler_spec.rb index 1ea87ffa..e70db7dc 100644 --- a/spec/davinci_crd_test_kit/routes/cds_services_discovery_handler_spec.rb +++ b/spec/davinci_crd_test_kit/routes/cds_services_discovery_handler_spec.rb @@ -1,6 +1,6 @@ require 'request_helper' -RSpec.describe DaVinciCRDTestKit::Routes::CDSServicesDiscoveryHandler, :request do +RSpec.describe DaVinciCRDTestKit::CDSServicesDiscoveryHandler, :request do let(:router) { Inferno::Web::Router } describe 'GET /cds-services' do @@ -22,5 +22,61 @@ expect(service).to include('hook', 'description', 'id') end end + + it 'returns JSON with required fields for v221' do + get '/custom/crd_client_v221/cds-services' + + expect(last_response).to be_ok + expect(last_response.headers['Content-Type']).to eq('application/json') + + response_json = JSON.parse(last_response.body) + + expect(response_json).to include('services') + expect(response_json['services']).to be_an(Array) + + services = response_json['services'] + expect(services).to be_an(Array) + + services.all? do |service| + expect(service).to include('hook', 'description', 'id') + expect(service.dig('extension', 'davinci-crd.configuration-options')).to include( + a_hash_including( + 'code' => 'coverage-info', + 'type' => 'boolean', + 'name' => 'Coverage Information', + 'default' => true + ) + ) + end + end + end + + describe 'GET /prefetch-subset/cds-services' do + it 'returns the prefetch-subset services JSON for v221' do + get '/custom/crd_client_v221/prefetch-subset/cds-services' + + expect(last_response).to be_ok + expect(last_response.headers['Content-Type']).to eq('application/json') + + response_json = JSON.parse(last_response.body) + + expect(response_json).to include('services') + services = response_json['services'] + expect(services).to be_an(Array) + + services.all? do |service| + expect(service).to include('hook', 'description', 'id') + end + end + + it 'returns different content than the full cds-services endpoint' do + get '/custom/crd_client_v221/cds-services' + full_body = last_response.body + + get '/custom/crd_client_v221/prefetch-subset/cds-services' + subset_body = last_response.body + + expect(subset_body).to_not eq(full_body) + end end end diff --git a/spec/davinci_crd_test_kit/server_discovery_group_spec.rb b/spec/davinci_crd_test_kit/server_discovery_group_spec.rb index 2985de73..7f08d0c2 100644 --- a/spec/davinci_crd_test_kit/server_discovery_group_spec.rb +++ b/spec/davinci_crd_test_kit/server_discovery_group_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DaVinciCRDTestKit::ServerDiscoveryGroup do +RSpec.describe DaVinciCRDTestKit::V201::ServerDiscoveryGroup do let(:suite_id) { 'crd_server' } - let(:group) { Inferno::Repositories::TestGroups.new.find('crd_server_discovery_group') } + let(:group) { Inferno::Repositories::TestGroups.new.find('crd_v201_server_discovery_group') } let(:base_url) { 'http://example.com' } let(:discovery_url) { 'http://example.com/cds-services' } let(:cds_services) do diff --git a/spec/davinci_crd_test_kit/service_call_test_spec.rb b/spec/davinci_crd_test_kit/server_invoke_hook_test_spec.rb similarity index 51% rename from spec/davinci_crd_test_kit/service_call_test_spec.rb rename to spec/davinci_crd_test_kit/server_invoke_hook_test_spec.rb index 2449b0ce..39c6586d 100644 --- a/spec/davinci_crd_test_kit/service_call_test_spec.rb +++ b/spec/davinci_crd_test_kit/server_invoke_hook_test_spec.rb @@ -1,63 +1,52 @@ -RSpec.describe DaVinciCRDTestKit::ServiceCallTest do +RSpec.describe DaVinciCRDTestKit::V201::ServerInvokeHookTest do let(:suite_id) { 'crd_server' } let(:runnable) do - Class.new(DaVinciCRDTestKit::ServiceCallTest) do + Class.new(described_class) do input :inferno_base_url end end let(:base_url) { 'http://example.com' } let(:discovery_url) { 'http://example.com/cds-services' } let(:inferno_base_url) { 'http://inferno.com' } - let(:service_ids) { 'service_ids' } + let(:service_ids) { 'appointment-book-service' } let(:service_request_body) do json = File.read(File.join(__dir__, '..', 'fixtures', 'appointment_book_hook_request.json')) JSON.parse(json) end let(:service_request_bodies) { [service_request_body].to_json } - let(:encryption_method) { 'ES384' } + let(:mock_ehr_bundle) { FHIR::Bundle.new(type: 'collection').to_json } + + before do + allow_any_instance_of(DaVinciCRDTestKit::Jobs::InvokeHook) # hook invocations + .to receive(:perform).and_return(nil) + end describe 'when testing a specific hook' do before do allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('appointment-book') end - it 'passes when the server returns a 200 HTTP response' do - stub_request(:post, "#{discovery_url}/#{service_ids}") - .with( - body: service_request_body - ) - .to_return(status: 200, body: {}.to_json) - - result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:) - expect(result.result).to eq('pass') + it 'waits when provided details are sufficient' do + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle:) + expect(result.result).to eq('wait') end it 'skips when the service_ids is not provided' do result = run(runnable, base_url:, inferno_base_url:, service_ids: '', encryption_method:, - service_request_bodies:) + service_request_bodies:, mock_ehr_bundle:) expect(result.result).to eq('skip') expect(result.result_message).to match(/No service id provided or discovered for the/) end it 'skips when the service_request_bodies is not provided' do - result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:) + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + mock_ehr_bundle:) expect(result.result).to eq('skip') expect(result.result_message).to match(/Request body not provided/) end - it 'fails when the server does not return a 200 HTTP response' do - stub_request(:post, "#{discovery_url}/#{service_ids}") - .with( - body: service_request_body - ) - .to_return(status: 400, body: {}.to_json) - - result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:) - expect(result.result).to eq('fail') - expect(result.result_message).to match(/Unexpected response status: expected 200/) - end - it 'fails when the request body is an invalid json' do stub_request(:post, "#{discovery_url}/#{service_ids}") .with( @@ -66,40 +55,47 @@ .to_return(status: 200, body: {}.to_json) result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, - service_request_bodies: 'body') - expect(result.result).to eq('fail') - expect(result.result_message).to match(/Invalid JSON/) - end - - it 'fails when the response body is an invalid json' do - stub_request(:post, "#{discovery_url}/#{service_ids}") - .with( - body: service_request_body - ) - .to_return(status: 200, body: 'response') - - result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, service_request_bodies:) + service_request_bodies: 'body', mock_ehr_bundle:) expect(result.result).to eq('fail') expect(result.result_message).to match(/Invalid JSON/) end - it 'makes multiple requests when there are multiple bodies' do - hook_invocation = stub_request(:post, "#{discovery_url}/#{service_ids}") - .to_return(status: 200, body: {}.to_json) - - multiple_bodies = [service_request_body, service_request_body] - - result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, - service_request_bodies: multiple_bodies.to_json) - expect(result.result).to eq('pass') - expect(hook_invocation).to have_been_made.times(2) + describe 'mock_ehr_bundle validation' do + it 'skips when mock_ehr_bundle is blank' do + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle: '') + expect(result.result).to eq('skip') + expect(result.result_message).to match(/mock_ehr_bundle input must be a FHIR Bundle/) + end + + it 'skips when mock_ehr_bundle is not valid JSON' do + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle: 'not-json') + expect(result.result).to eq('skip') + expect(result.result_message).to match(/mock_ehr_bundle input must be a FHIR Bundle/) + end + + it 'skips when mock_ehr_bundle is valid JSON but not a FHIR Bundle' do + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, + mock_ehr_bundle: FHIR::Patient.new(id: 'p1').to_json) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/mock_ehr_bundle input must be a FHIR Bundle/) + end + + it 'proceeds past bundle validation when mock_ehr_bundle is a valid Bundle' do + result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, + service_request_bodies:, mock_ehr_bundle:) + expect(result.result).to eq('wait') + end end end describe 'when testing any hook' do let(:result) { repo_create(:result, test_session_id: test_session.id) } let(:discovery_response) do - File.read(File.join(__dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'routes', 'cds-services.json')) + File.read(File.join(__dir__, '..', '..', 'lib', 'davinci_crd_test_kit', 'client', 'v2.0.1', + 'cds-services-v201.json')) end before do @@ -110,7 +106,7 @@ multiple_bodies = [service_request_body, service_request_body] result = run(runnable, base_url:, inferno_base_url:, service_ids:, encryption_method:, - service_request_bodies: multiple_bodies.to_json) + service_request_bodies: multiple_bodies.to_json, mock_ehr_bundle:) expect(result.result).to eq('skip') expect(result.result_message).to match(/supports only one request body/) end @@ -129,14 +125,15 @@ tags: [DaVinciCRDTestKit::DISCOVERY_TAG] ) - stub_request(:post, "#{discovery_url}/appointment-book-service") - .to_return(status: 200, body: {}.to_json) + expect_any_instance_of(DaVinciCRDTestKit::Jobs::InvokeHook) # rubocop:disable RSpec/StubbedMock + .to receive(:perform) + .with(anything, anything, "#{discovery_url}/#{service_ids}", anything, anything, anything, + DaVinciCRDTestKit::ANY_HOOK_TAG, anything, anything, anything, false) + .and_return(nil) result = run(runnable, base_url:, inferno_base_url:, service_ids: '', encryption_method:, - service_request_bodies:) - expect(result.result).to eq('pass') - - expect(session_data_repo.load(test_session_id: test_session.id, name: :invoked_hook)).to eq('appointment-book') + service_request_bodies:, mock_ehr_bundle:) + expect(result.result).to eq('wait') end end end diff --git a/spec/davinci_crd_test_kit/service_request_context_validation_test_spec.rb b/spec/davinci_crd_test_kit/service_request_context_validation_test_spec.rb index f3190628..d12ae9d7 100644 --- a/spec/davinci_crd_test_kit/service_request_context_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/service_request_context_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::ServiceRequestContextValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::ServiceRequestContextValidationTest do let(:suite_id) { 'crd_server' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/service_response_validation_test_spec.rb b/spec/davinci_crd_test_kit/service_response_validation_test_spec.rb index 074d87fc..9a15b0b9 100644 --- a/spec/davinci_crd_test_kit/service_response_validation_test_spec.rb +++ b/spec/davinci_crd_test_kit/service_response_validation_test_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DaVinciCRDTestKit::ServiceResponseValidationTest do +RSpec.describe DaVinciCRDTestKit::V201::ServiceResponseValidationTest do let(:suite_id) { 'crd_server' } let(:runnable) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/token_header_test_spec.rb b/spec/davinci_crd_test_kit/token_header_test_spec.rb index 9ca467df..fdf11856 100644 --- a/spec/davinci_crd_test_kit/token_header_test_spec.rb +++ b/spec/davinci_crd_test_kit/token_header_test_spec.rb @@ -1,6 +1,6 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/token_header_test' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/auth/token_header_test' -RSpec.describe DaVinciCRDTestKit::TokenHeaderTest do +RSpec.describe DaVinciCRDTestKit::V201::TokenHeaderTest do let(:suite_id) { 'crd_client' } let(:test) { described_class } let(:results_repo) { Inferno::Repositories::Results.new } diff --git a/spec/davinci_crd_test_kit/token_payload_test_spec.rb b/spec/davinci_crd_test_kit/token_payload_test_spec.rb index 2c9e00d3..5da4753a 100644 --- a/spec/davinci_crd_test_kit/token_payload_test_spec.rb +++ b/spec/davinci_crd_test_kit/token_payload_test_spec.rb @@ -1,11 +1,11 @@ -require_relative '../../lib/davinci_crd_test_kit/client_tests/token_payload_test' -require_relative '../../lib/davinci_crd_test_kit/jwt_helper' +require_relative '../../lib/davinci_crd_test_kit/client/v2.0.1/auth/token_payload_test' +require_relative '../../lib/davinci_crd_test_kit/server/jwt_helper' -RSpec.describe DaVinciCRDTestKit::TokenPayloadTest do +RSpec.describe DaVinciCRDTestKit::V201::TokenPayloadTest do let(:suite_id) { 'crd_client' } let(:jwt_helper) { Class.new(DaVinciCRDTestKit::JwtHelper) } let(:results_repo) { Inferno::Repositories::Results.new } - let(:runnable) { Inferno::Repositories::Tests.new.find('crd_token_payload') } + let(:runnable) { Inferno::Repositories::Tests.new.find('crd_v201_token_payload') } let(:example_client_url) { 'https://cds.example.org' } let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } @@ -46,7 +46,7 @@ def entity_result_message describe 'CRD Appointment Book Token Payload' do let(:test) do - Class.new(DaVinciCRDTestKit::TokenPayloadTest) do + Class.new(DaVinciCRDTestKit::V201::TokenPayloadTest) do config( options: { hook_path: '/cds-services/appointment-book-service' } ) diff --git a/spec/davinci_crd_test_kit/v2.2.1/all_responses_include_coverage_information_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/all_responses_include_coverage_information_test_spec.rb new file mode 100644 index 00000000..25aafccc --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/all_responses_include_coverage_information_test_spec.rb @@ -0,0 +1,233 @@ +RSpec.describe DaVinciCRDTestKit::V221::AllResponsesIncludeCoverageInformationTest do + let(:suite_id) { 'crd_server_v221' } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:runnable) { described_class } + let(:appointment) { { resourceType: 'Appointment' } } + let(:appointment_with_coverage_info) do + appointment.merge( + extension: [ + { url: 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' } + ] + ) + end + + before do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('appointment-book') + end + + it 'passes if every successful response contains the coverage information system action' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + response_body = { + systemActions: [ + { + type: 'update', + resource: appointment_with_coverage_info + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + result = run(runnable, { invoked_hook: 'appointment-book' }) + expect(result.result).to eq('pass'), result.result_message + end + + it 'passes if every requests are configured to exclude the coverage information system action' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + response_body = { + systemActions: [ + { + type: 'update', + resource: appointment_with_coverage_info + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + + request_body = + { + context: { + appointments: bundle.to_hash + }, + extension: { + 'davinci-crd.configuration': { + 'coverage-info': false + } + } + }.to_json + response_body = { systemActions: [] }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + result = run(runnable, { invoked_hook: 'appointment-book' }) + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails if not all responses contain the coverage information system action' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + response_body = { + systemActions: [ + { + type: 'update', + resource: appointment + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + result = run(runnable, { invoked_hook: 'appointment-book' }) + + expect(result.result).to eq('fail'), result.result_message + expect(result.result_message).to match(/1 successful hook calls/) + end + + it 'ignores calls which already contain a coverage information extension' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + response_body = { + systemActions: [ + { + type: 'update', + resource: appointment_with_coverage_info + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment_with_coverage_info) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + response_body = '{}' + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + result = run(runnable, { invoked_hook: 'appointment-book' }) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'skips if no calls have a resource without a coverage-information extension' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment_with_coverage_info) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + response_body = { + systemActions: [ + { + type: 'update', + resource: appointment_with_coverage_info + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + result = run(runnable, { invoked_hook: 'appointment-book' }) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to match(/No successful hook calls/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_card_must_support_coverage_information_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_card_must_support_coverage_information_test_spec.rb new file mode 100644 index 00000000..ae3e94c3 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_card_must_support_coverage_information_test_spec.rb @@ -0,0 +1,88 @@ +RSpec.describe DaVinciCRDTestKit::V221::ClientCardMustSupportCoverageInformationTest do + let(:suite_id) { 'crd_client_v221' } + let(:runnable) { described_class } + + let(:order_sign_hook_request) do + File.read(File.join( + __dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json' + )) + end + let(:order_sign_hook_response_complete) do + { + cards: [], + systemActions: [JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', + 'coverage_info_system_action_complete.json' + )))] + }.to_json + end + let(:dependency_system_action) do + { + type: 'update', + resource: { + resourceType: 'MedicationRequest', + id: 'dependency-example', + extension: [{ + url: 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information', + extension: [ + { url: 'coverage', valueReference: { reference: 'Coverage/example' } }, + { url: 'covered', valueCode: 'covered' }, + { url: 'dependency', valueId: 'dep-assertion-id-123' } + ] + }] + } + } + end + + describe 'When checking coverage information actions' do + it 'skips when no hook requests have been received' do + result = run(runnable) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No hook requests received/) + end + + it 'fails when no coverage information actions are found' do + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: order_sign_hook_request, + response_body: { cards: [], systemActions: [] }.to_json + )] + ) + + result = run(runnable) + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Support for the Coverage Information response type not demonstrated/) + end + + it 'fails when some must support elements are missing' do + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: order_sign_hook_request, + response_body: order_sign_hook_response_complete + )] + ) + + result = run(runnable) + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Extension.extension:dependency/) + end + + it 'passes when all must support elements are present' do + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: order_sign_hook_request, + response_body: order_sign_hook_response_complete + ), Inferno::Entities::Request.new( + request_body: order_sign_hook_request, + response_body: { cards: [], systemActions: [dependency_system_action] }.to_json + )] + ) + + result = run(runnable) + expect(result.result).to eq('pass') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_coverage_info_update_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_coverage_info_update_test_spec.rb new file mode 100644 index 00000000..55711b9c --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_coverage_info_update_test_spec.rb @@ -0,0 +1,487 @@ +RSpec.describe DaVinciCRDTestKit::V221::ClientCoverageInfoUpdateTest do + let(:suite_id) { 'crd_client' } + let(:server_endpoint) { 'http://example.com/fhir' } + let(:client_smart_credentials) do + { + access_token: 'SAMPLE_TOKEN', + refresh_token: 'REFRESH_TOKEN', + expires_in: 3600, + client_id: 'CLIENT_ID', + issue_time: Time.now.iso8601, + token_url: 'http://example.com/token' + } + end + let(:smart_auth_info) { Inferno::DSL::AuthInfo.new(client_smart_credentials) } + + let(:test) do + Class.new(DaVinciCRDTestKit::V221::ClientCoverageInfoUpdateTest) do + fhir_client do + url :server_endpoint + auth_info :smart_auth_info + end + input :server_endpoint + input :smart_auth_info, type: :auth_info + end + end + + let(:coverage_info_system_action) do + JSON.parse( + File.read(File.join(__dir__, '..', '..', 'fixtures', 'coverage_info_system_action_covered.json')) + ) + end + + let(:device_request_id) { coverage_info_system_action.dig('resource', 'id') } + let(:device_request_resource_type) { coverage_info_system_action.dig('resource', 'resourceType') } + + let(:hook_request_with_coverage_info) do + Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [], systemActions: [coverage_info_system_action] }.to_json + ) + end + + let(:hook_request_without_coverage_info) do + Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [], systemActions: [] }.to_json + ) + end + + # The resource body returned by fhir_read when the extension is stored correctly + let(:stored_resource_with_extension) { coverage_info_system_action['resource'].to_json } + + # The resource body returned by fhir_read when the client did not store the extension + let(:stored_resource_without_extension) do + resource = JSON.parse(coverage_info_system_action['resource'].to_json) + resource.delete('extension') + resource.to_json + end + + # The resource body returned by fhir_read when the extension sub-elements are in a different order + let(:stored_resource_with_reordered_extension) do + resource = JSON.parse(coverage_info_system_action['resource'].to_json) + resource.dig('extension', 0, 'extension').reverse! + resource.to_json + end + + # The resource body returned by fhir_read when the extension is present but with different content + let(:stored_resource_with_different_extension) do + resource = JSON.parse(coverage_info_system_action['resource'].to_json) + resource.dig('extension', 0, 'extension').find { |e| e['url'] == 'covered' }['valueCode'] = 'not-covered' + resource.to_json + end + + # Bypass the uses_request :capability_statement prerequisite check — no stored request is needed + # because we mock extract_supported_resource_types directly. + before do + allow_any_instance_of(described_class).to receive(:load_named_requests) + end + + describe 'when no hook requests have been recorded' do + it 'skips' do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return([]) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No hook requests found/) + end + end + + describe 'when no coverage-info actions are found for supported resource types' do + it 'skips when there are no coverage-info system actions at all' do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return([hook_request_without_coverage_info]) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No coverage-info responses found/) + end + + it 'skips when coverage-info actions exist but target resource type is not in the capability statement' do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return(['Patient']) # DeviceRequest not listed + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return([hook_request_with_coverage_info]) + + result = run(test, server_endpoint:, smart_auth_info:) + result_messages = Inferno::Repositories::Messages.new.messages_for_result(result.id) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No coverage-info responses found/) + expect(result_messages.map(&:message)) + .to include(match(/#{device_request_resource_type}.*not supported/)) + end + + it 'skips when system actions are present but none are coverage-info type' do + non_coverage_info_action = { + 'type' => 'update', + 'resource' => { 'resourceType' => 'DeviceRequest', 'id' => 'no-ext' } + } + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [], systemActions: [non_coverage_info_action] }.to_json + )] + ) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No coverage-info responses found/) + end + + it 'skips when the response body has no systemActions key' do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [] }.to_json + )] + ) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No coverage-info responses found/) + end + end + + describe 'when multiple coverage-info updates target the same resource' do + it 'skips verification for that resource and adds a warning message' do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return([hook_request_with_coverage_info, + hook_request_with_coverage_info]) + + result = run(test, server_endpoint:, smart_auth_info:) + result_messages = Inferno::Repositories::Messages.new.messages_for_result(result.id) + + expect(result.result).to eq('skip') + expect(result_messages.map(&:message)) + .to include(match(%r{#{device_request_resource_type}/#{device_request_id}})) + end + end + + describe 'when a coverage-info action targets a supported resource type' do + before do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return([hook_request_with_coverage_info]) + end + + it 'fails with an error message when the target resource cannot be read' do + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 404, body: '{}') + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Not all coverage-information extensions stored/) + end + + it 'fails with an error message when the coverage-information extension is absent from the stored resource' do + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: stored_resource_without_extension) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Not all coverage-information extensions stored/) + end + + it 'fails with an error message when the stored coverage-information extension differs from the hook response' do + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: stored_resource_with_different_extension) + + result = run(test, server_endpoint:, smart_auth_info:) + + result_messages = Inferno::Repositories::Messages.new.messages_for_result(result.id) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Not all coverage-information extensions stored/) + expect(result_messages.map(&:message)).to include(match(/'covered'/)) + end + + it 'passes when the coverage-information extension sub-elements are stored in a different order' do + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: stored_resource_with_reordered_extension) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + + it 'passes when the coverage-information extension matches the one sent in the hook response' do + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: stored_resource_with_extension) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + + it 'fails when the FHIR read returns a 200 with the wrong resource type' do + wrong_type_body = { 'resourceType' => 'Patient', 'id' => device_request_id }.to_json + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: wrong_type_body) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Not all coverage-information extensions stored/) + end + + it 'fails when the stored resource has more coverage-information extensions than were sent' do + coverage_info_url = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' + resource = JSON.parse(coverage_info_system_action['resource'].to_json) + resource['extension'] << { + 'url' => coverage_info_url, + 'extension' => [{ 'url' => 'covered', 'valueCode' => 'not-covered' }] + } + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: resource.to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Not all coverage-information extensions stored/) + end + + it 'passes when the stored resource has additional non-coverage-info extensions' do + resource = JSON.parse(coverage_info_system_action['resource'].to_json) + resource['extension'] << { 'url' => 'http://example.org/other-ext', 'valueString' => 'extra' } + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: resource.to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + end + + describe 'when multiple resources are found' do + let(:second_resource_type) { 'MedicationRequest' } + let(:second_resource_id) { 'med-req-001' } + let(:second_coverage_info_action) do + { + 'type' => 'update', + 'resource' => { + 'resourceType' => second_resource_type, + 'id' => second_resource_id, + 'extension' => coverage_info_system_action.dig('resource', 'extension') + } + } + end + + before do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types) + .and_return([device_request_resource_type, second_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [ + hook_request_with_coverage_info, + Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [], systemActions: [second_coverage_info_action] }.to_json + ) + ] + ) + end + + it 'fails when any resource fails verification even if others pass' do + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: stored_resource_with_extension) + stub_request(:get, "#{server_endpoint}/#{second_resource_type}/#{second_resource_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 404, body: '{}') + + result = run(test, server_endpoint:, smart_auth_info:) + result_messages = Inferno::Repositories::Messages.new.messages_for_result(result.id) + + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)) + .to include(match(%r{#{second_resource_type}/#{second_resource_id}})) + end + end + + describe 'when a single action contains multiple coverage-information extensions' do + let(:action_with_two_coverage_info_extensions) do + coverage_info_url = 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' + action = JSON.parse(coverage_info_system_action.to_json) + action['resource']['extension'] << { + 'url' => coverage_info_url, + 'extension' => [{ 'url' => 'covered', 'valueCode' => 'not-covered' }] + } + action + end + + it 'skips verification for that resource and adds an info message' do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [], systemActions: [action_with_two_coverage_info_extensions] }.to_json + )] + ) + + result = run(test, server_endpoint:, smart_auth_info:) + result_messages = Inferno::Repositories::Messages.new.messages_for_result(result.id) + + expect(result.result).to eq('skip') + expect(result_messages.map(&:message)) + .to include(match(/Multiple coverage-information extensions/)) + end + end + + describe 'when sub-extensions share a URL' do + let(:action_with_duplicate_url) do + action = JSON.parse(coverage_info_system_action.to_json) + action.dig('resource', 'extension', 0, 'extension') << { + 'url' => 'coverage-assertion-id', + 'valueString' => 'second-assertion-id' + } + action + end + + before do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([device_request_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [], systemActions: [action_with_duplicate_url] }.to_json + )] + ) + end + + it 'passes when duplicate-URL sub-extensions are stored in a different order' do + resource = JSON.parse(action_with_duplicate_url['resource'].to_json) + sub_exts = resource.dig('extension', 0, 'extension') + first_idx = sub_exts.index { |e| e['url'] == 'coverage-assertion-id' } + last_idx = sub_exts.rindex { |e| e['url'] == 'coverage-assertion-id' } + sub_exts[first_idx], sub_exts[last_idx] = sub_exts[last_idx], sub_exts[first_idx] + + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: resource.to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + + it 'fails when one of the duplicate-URL sub-extensions is missing from the stored resource' do + # Stored resource has only the original single coverage-assertion-id (not the duplicate) + stub_request(:get, "#{server_endpoint}/#{device_request_resource_type}/#{device_request_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body: coverage_info_system_action['resource'].to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + result_messages = Inferno::Repositories::Messages.new.messages_for_result(result.id) + + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/'coverage-assertion-id'/)) + end + end + + describe 'normalization handles reordering at all nesting levels' do + let(:complete_system_action) do + JSON.parse( + File.read(File.join(__dir__, '..', '..', 'fixtures', 'coverage_info_system_action_complete.json')) + ) + end + + let(:complete_resource_id) { complete_system_action.dig('resource', 'id') } + let(:complete_resource_type) { complete_system_action.dig('resource', 'resourceType') } + + before do + allow_any_instance_of(described_class) + .to receive(:extract_supported_resource_types).and_return([complete_resource_type]) + allow_any_instance_of(described_class) + .to receive(:requests_to_analyze).and_return( + [Inferno::Entities::Request.new( + request_body: '{}', + response_body: { cards: [], systemActions: [complete_system_action] }.to_json + )] + ) + end + + def stub_complete_resource(body) + stub_request(:get, "#{server_endpoint}/#{complete_resource_type}/#{complete_resource_id}") + .with(headers: { Authorization: 'Bearer SAMPLE_TOKEN' }) + .to_return(status: 200, body:) + end + + it 'passes when the top-level sub-extensions are in a different order' do + resource = JSON.parse(complete_system_action['resource'].to_json) + resource.dig('extension', 0, 'extension').reverse! + stub_complete_resource(resource.to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + + it 'passes when the detail sub-sub-extensions are in a different order' do + resource = JSON.parse(complete_system_action['resource'].to_json) + resource.dig('extension', 0, 'extension').find { |e| e['url'] == 'detail' }['extension'].reverse! + stub_complete_resource(resource.to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + + it 'passes when the contact telecom entries are in a different order' do + resource = JSON.parse(complete_system_action['resource'].to_json) + resource.dig('extension', 0, 'extension') + .find { |e| e['url'] == 'contact' } + .dig('valueContactDetail', 'telecom').reverse! + stub_complete_resource(resource.to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + + it 'passes when reorderings occur at multiple nesting levels simultaneously' do + resource = JSON.parse(complete_system_action['resource'].to_json) + sub_extensions = resource.dig('extension', 0, 'extension') + sub_extensions.reverse! + sub_extensions.find { |e| e['url'] == 'detail' }['extension'].reverse! + sub_extensions.find { |e| e['url'] == 'contact' }.dig('valueContactDetail', 'telecom').reverse! + stub_complete_resource(resource.to_json) + + result = run(test, server_endpoint:, smart_auth_info:) + + expect(result.result).to eq('pass') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_fhirpath_collection_as_comma_delimited_string_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_fhirpath_collection_as_comma_delimited_string_test_spec.rb new file mode 100644 index 00000000..a764a4ca --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_fhirpath_collection_as_comma_delimited_string_test_spec.rb @@ -0,0 +1,61 @@ +RSpec.describe DaVinciCRDTestKit::V221::ClientFHIRPathCollectionAsCommaDelimitedStringTest do + let(:suite_id) { 'crd_client_v221' } + + let(:runnable) do + Inferno::Repositories::Tests.new.find( + 'crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook' \ + '-crd_v221_client_fhir_path_collection_as_comma_delimited_string' + ) + end + + let(:prefetch_complete_test) do + Inferno::Repositories::Tests.new.find( + 'crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks' \ + '-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete' + ) + end + + def create_prefetch_complete_result(output_json: '[]', result: 'pass') + repo_create( + :result, + test_session_id: test_session.id, + runnable: prefetch_complete_test.reference_hash, + output_json:, + result: + ) + end + + it 'skips when no prefetch completeness test results exist' do + expect(run(runnable).result).to eq('skip') + end + + it 'skips when completeness results have no collection behavior output' do + create_prefetch_complete_result(output_json: '[]') + expect(run(runnable).result).to eq('skip') + end + + it 'skips when the collection output is present but false' do + create_prefetch_complete_result( + output_json: [{ name: 'demonstrates_fhirpath_collection_as_comma_delimited_string', + value: 'false' }].to_json + ) + expect(run(runnable).result).to eq('skip') + end + + it 'passes when a completeness result demonstrates collection behavior' do + create_prefetch_complete_result( + output_json: [{ name: 'demonstrates_fhirpath_collection_as_comma_delimited_string', + value: 'true' }].to_json + ) + expect(run(runnable).result).to eq('pass') + end + + it 'passes when any one of multiple completeness results demonstrates collection behavior' do + create_prefetch_complete_result(output_json: '[]') + create_prefetch_complete_result( + output_json: [{ name: 'demonstrates_fhirpath_collection_as_comma_delimited_string', + value: 'true' }].to_json + ) + expect(run(runnable).result).to eq('pass') + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_hook_instances_unique_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_hook_instances_unique_test_spec.rb new file mode 100644 index 00000000..42b4ee95 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_hook_instances_unique_test_spec.rb @@ -0,0 +1,65 @@ +require_relative '../../../lib/davinci_crd_test_kit/cross_suite/tags' + +RSpec.describe DaVinciCRDTestKit::V221::ClientHookInstancesUniqueTest do + let(:suite_id) { 'crd_client_v221' } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:requests_repo) { Inferno::Repositories::Requests.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:hook_instance_one) { 'd1577c69-dfbe-44ad-ba6d-3e05e953b2ea' } + let(:hook_instance_two) { 'd1577c69-dfbe-44ad-ba6d-3e05e953b2eb' } + let(:service_url) { 'https://example.com/cds-services/appointment-book-service' } + let(:fhir_server) { 'https://fhir.example.com' } + + let(:test) { described_class } + + def create_hook_request(hook_instance, + tags: ['appointment-book', DaVinciCRDTestKit::TagMethods.hook_instance_tag(hook_instance)]) + body = { + 'hookInstance' => hook_instance, + 'hook' => 'appointment-book', + 'fhirServer' => fhir_server + }.compact + repo_create( + :request, + direction: 'incoming', + url: service_url, + result:, + test_session_id: test_session.id, + request_body: body.to_json, + status: 200, + tags: + ) + end + + def result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]) + .first + .messages + end + + it 'passes when no hook requests have been received' do + result = run(test) + expect(result.result).to eq('pass') + end + + it 'passes when all hook request have unique hookInstances' do + create_hook_request(hook_instance_one) + create_hook_request(hook_instance_two) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'fails when there are multiple hooks calls with the same hookInstance' do + create_hook_request(hook_instance_one) + create_hook_request(hook_instance_one, tags: [DaVinciCRDTestKit::DUPLICATED_HOOK_INSTANCE_TAG]) + create_hook_request(hook_instance_two) + create_hook_request(hook_instance_two, tags: [DaVinciCRDTestKit::DUPLICATED_HOOK_INSTANCE_TAG]) + result = run(test) + expect(result.result).to eq('fail') + expect(result.result_message).to eq('Inferno received hook requests that re-used `hookInstance` values: ' \ + "#{hook_instance_one}, #{hook_instance_two}") + + fetched = results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]).first + expect(fetched.requests.uniq(&:id).size).to eq(4) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_location_address_propagation_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_location_address_propagation_test_spec.rb new file mode 100644 index 00000000..8dd8f0b2 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_location_address_propagation_test_spec.rb @@ -0,0 +1,250 @@ +require_relative '../../../lib/davinci_crd_test_kit/cross_suite/tags' + +RSpec.describe DaVinciCRDTestKit::V221::ClientLocationAddressPropagationTest do + let(:suite_id) { 'crd_client_v221' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:hook_name) { 'order-sign' } + let(:hook_instance) { 'd1577c69-dfbe-44ad-ba6d-3e05e953b2ea' } + + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'order-sign' }) + end + end + + let(:location_with_address) do + { 'resourceType' => 'Location', 'id' => 'loc-1', + 'address' => { 'line' => ['123 Main St'], 'city' => 'Anytown' } } + end + + let(:location_without_address) do + { 'resourceType' => 'Location', 'id' => 'loc-2' } + end + + let(:parent_location_with_address) do + { 'resourceType' => 'Location', 'id' => 'parent-1', + 'address' => { 'line' => ['456 Parent Ave'], 'city' => 'Anytown' } } + end + + let(:parent_location_without_address) do + { 'resourceType' => 'Location', 'id' => 'parent-1' } + end + + def create_hook_request(body:, tags: [hook_name]) + repo_create( + :request, + direction: 'incoming', + url: "https://example.com/cds-services/#{hook_name}-service", + result:, + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + status: 200, + headers: [], + tags: + ) + end + + def create_parent_location_fetch_request(location:, status: 200, instance: hook_instance) + repo_create( + :request, + direction: 'outgoing', + url: "https://example.com/fhir/Location/#{location['id']}", + result:, + test_session_id: test_session.id, + response_body: location.is_a?(Hash) ? location.to_json : location, + status:, + headers: [], + tags: [DaVinciCRDTestKit::PARENT_LOCATION_FETCH_TAG, + DaVinciCRDTestKit::TagMethods.hook_instance_data_fetch_tag(instance), + DaVinciCRDTestKit::DATA_FETCH_TAG] + ) + end + + def result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + def location_bundle(*locations) + { 'resourceType' => 'Bundle', 'entry' => locations.map { |r| { 'resource' => r } } } + end + + describe 'when checking location address propagation' do + it 'skips when there are no hook requests to analyze' do + result = run(test) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No hook requests received/) + end + + it 'passes when a prefetched location already has an address' do + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(location_with_address) } + }) + expect(run(test).result).to eq('pass') + end + + it 'passes when a prefetched location has no address and no partOf' do + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(location_without_address) } + }) + expect(run(test).result).to eq('pass') + end + + it 'passes when a prefetched location has no address and its parent also has no address' do + child = location_without_address.merge('partOf' => { 'reference' => 'Location/parent-1' }) + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child, parent_location_without_address) } + }) + expect(run(test).result).to eq('pass') + end + + it 'fails when a prefetched location has no address but its parent does' do + child = location_without_address.merge('partOf' => { 'reference' => 'Location/parent-1' }) + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child, parent_location_with_address) } + }) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(%r{Address missing on prefetched 'Location/loc-2'}) + expect(result_messages.map(&:message).join).to match(%r{parent 'Location/parent-1' has an address}) + end + + it 'fails when the error is found by traversing to a grandparent with an address' do + child = { 'resourceType' => 'Location', 'id' => 'child', + 'partOf' => { 'reference' => 'Location/middle' } } + middle = { 'resourceType' => 'Location', 'id' => 'middle', + 'partOf' => { 'reference' => 'Location/grandparent' } } + grandparent = { 'resourceType' => 'Location', 'id' => 'grandparent', + 'address' => { 'line' => ['1 Top St'], 'city' => 'Anytown' } } + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child, middle, grandparent) } + }) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(%r{Address missing on prefetched 'Location/child'}) + expect(result_messages.map(&:message).join).to match(%r{parent 'Location/grandparent' has an address}) + end + + it 'fails when the partOf reference cannot be resolved' do + child = location_without_address.merge('partOf' => { 'reference' => 'Location/missing-loc' }) + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child) } + }) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/Unable to check address propagation/) + expect(result_messages.map(&:message).join).to match(%r{Location/missing-loc.*could not be fetched}) + end + + it 'resolves parent locations from fetched location requests' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + child = location_without_address.merge('partOf' => { 'reference' => 'Location/parent-1' }) + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child) } + }) + create_parent_location_fetch_request(location: parent_location_with_address) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(%r{Address missing on prefetched 'Location/loc-2'}) + end + + it 'passes when a fetched parent location has no address' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + child = location_without_address.merge('partOf' => { 'reference' => 'Location/parent-1' }) + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child) } + }) + create_parent_location_fetch_request(location: parent_location_without_address) + expect(run(test).result).to eq('pass') + end + + it 'handles a single prefetched Location (not a Bundle)' do + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_with_address } + }) + expect(run(test).result).to eq('pass') + end + + it 'skips requests with invalid JSON without crashing' do + create_hook_request(body: 'not valid json') + expect(run(test).result).to eq('pass') + end + + it 'does not check conformance for prefetched parent locations' do + child = location_without_address.merge('partOf' => { 'reference' => 'Location/parent-pf' }) + prefetched_parent = { 'resourceType' => 'Location', 'id' => 'parent-pf' } + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child, prefetched_parent) } + }) + expect_any_instance_of(test).to_not receive(:resource_is_valid?) + run(test) + end + end + + describe 'when checking fetched parent location conformance' do + let(:child_location) do + location_without_address.merge('partOf' => { 'reference' => 'Location/parent-1' }) + end + + before do + create_hook_request(body: { + 'hookInstance' => hook_instance, 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(child_location) } + }) + create_parent_location_fetch_request(location: parent_location_without_address) + end + + it 'passes when the fetched parent conforms to the CRD Location profile' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + expect(run(test).result).to eq('pass') + end + + it 'fails when the fetched parent does not conform to the CRD Location profile' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(false) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join) + .to match(%r{Parent of prefetched 'Location/loc-2' does not conform to the CRD Location profile}) + end + + it 'includes individual validation issues in messages when conformance fails' do + issue = instance_double(Inferno::DSL::FHIRResourceValidation::ValidatorIssue, + severity: 'error', message: 'Missing required field') + instance = test.new + allow(instance).to receive(:prefetched_location_hash).and_return({}) + allow(instance).to receive(:resource_is_valid?) do |resource: nil, profile_url: nil, # rubocop:disable Lint/UnusedBlockArgument + add_messages_to_runnable: true, # rubocop:disable Lint/UnusedBlockArgument + validator_response_details: nil| + validator_response_details << issue + false + end + location = FHIR.from_contents(parent_location_without_address.to_json) + instance.check_location_conformance(location, 'loc-2') + expect(instance.messages).to include(a_hash_including(message: a_string_including('Missing required field'))) + end + + it 'does not re-check conformance for a location already validated' do + second_child = { 'resourceType' => 'Location', 'id' => 'loc-3', + 'partOf' => { 'reference' => 'Location/parent-1' } } + create_hook_request(body: { + 'hookInstance' => 'second-instance', 'hook' => hook_name, + 'prefetch' => { 'locations' => location_bundle(second_child) } + }) + expect_any_instance_of(test).to receive(:resource_is_valid?).once.and_return(true) + run(test) + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_long_running_receive_request_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_long_running_receive_request_test_spec.rb new file mode 100644 index 00000000..aad7a572 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_long_running_receive_request_test_spec.rb @@ -0,0 +1,106 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/long_running/client_long_running_receive_request_test' + +RSpec.describe DaVinciCRDTestKit::V221::ClientLongRunningReceiveRequestTest, :request do + let(:suite_id) { 'crd_client_v221' } + let(:test) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:jwt_helper) { Class.new(DaVinciCRDTestKit::JwtHelper) } + + let(:example_client_url) { 'https://cds.example.org' } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client_v221" } + let(:appointment_book_url) { "#{base_url}/cds-services/appointment-book-service" } + + let(:server_endpoint) { '/custom/crd_client_v221/cds-services/appointment-book-service' } + let(:body) do + JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json' + ))) + end + let(:crd_coverage) do + JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', 'crd_coverage_example.json' + ))) + end + + before do + allow_any_instance_of(DaVinciCRDTestKit::HookRequestEndpoint).to receive(:request_additional_fhir_data) + allow_any_instance_of(DaVinciCRDTestKit::HookRequestEndpoint).to receive(:long_running_group?).and_return(true) + end + + it 'fails when long_running_pause_time is less than 5 seconds' do + result = run(test, cds_jwt_iss: example_client_url, long_running_pause_time: '3') + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Long-running Request Pause Time/) + end + + it 'enters wait state when long_running_pause_time is at least 5 seconds' do + allow_any_instance_of(DaVinciCRDTestKit::HookRequestEndpoint).to receive(:sleep) + + result = run(test, cds_jwt_iss: example_client_url, long_running_pause_time: '5') + + expect(result.result).to eq('wait') + end + + it 'passes automatically after a valid hook request and sleeps for the configured pause time' do + expect_any_instance_of(DaVinciCRDTestKit::HookRequestEndpoint).to receive(:sleep).with(5) + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, cds_jwt_iss: example_client_url, long_running_pause_time: '5') + expect(result.result).to eq('wait') + + body['prefetch'] = { 'coverage' => crd_coverage } + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + + expect(last_response).to be_ok + result = results_repo.find(result.id) + expect(result.result).to eq('pass') + end + + it 'sleeps for the duration specified by long_running_pause_time input' do + expect_any_instance_of(DaVinciCRDTestKit::HookRequestEndpoint).to receive(:sleep).with(10) + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + run(test, cds_jwt_iss: example_client_url, long_running_pause_time: '10') + + body['prefetch'] = { 'coverage' => crd_coverage } + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body) + end + + it 'waits and responds with 500 if jwt `iss` claim mismatches the given `iss`' do + allow_any_instance_of(DaVinciCRDTestKit::HookRequestEndpoint).to receive(:sleep) + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, cds_jwt_iss: 'different.example.com', long_running_pause_time: '5') + expect(result.result).to eq('wait') + + body['prefetch'] = { 'coverage' => crd_coverage } + header('Authorization', "Bearer #{token}") + post_json(server_endpoint, body.to_json) + + expect(last_response).to be_server_error + expect(last_response.body).to match(/find test run with identifier/) + result = results_repo.find(result.id) + expect(result.result).to eq('wait') + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_prefetch_complete_and_subset_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_prefetch_complete_and_subset_test_spec.rb new file mode 100644 index 00000000..025e0441 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_prefetch_complete_and_subset_test_spec.rb @@ -0,0 +1,123 @@ +RSpec.describe DaVinciCRDTestKit::V221::ClientPrefetchCompleteAndSubsetTest do + let(:suite_id) { 'crd_client_v221' } + + let(:runnable) do + Inferno::Repositories::Tests.new.find( + 'crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_cross_hook' \ + '-crd_v221_client_prefetch_complete_and_subset' + ) + end + + let(:prefetch_complete_test) do + Inferno::Repositories::Tests.new.find( + 'crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks' \ + '-crd_v221_client_order_sign-Group03-crd_v221_hook_request_prefetch_complete' + ) + end + + let(:prefetch_complete_test_appt_book) do + Inferno::Repositories::Tests.new.find( + 'crd_client_v221-crd_v221_client_hook_invocation-crd_v221_client_hooks' \ + '-crd_v221_client_appointment_book-Group03-crd_v221_hook_request_prefetch_complete' + ) + end + + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } + let(:subset_url) { "#{base_url}/prefetch-subset/cds-services/order-sign-subset" } + let(:service_url) { "#{base_url}/cds-services/order-sign-service" } + + def create_completeness_result(output_json: '[]') + repo_create( + :result, + test_session_id: test_session.id, + runnable: prefetch_complete_test.reference_hash, + output_json:, + result: 'pass' + ) + end + + def create_hook_request(url:) + repo_create( + :request, + direction: 'incoming', + url:, + result:, + test_session_id: test_session.id, + request_body: { 'hook' => 'order-sign', 'hookInstance' => SecureRandom.uuid }.to_json, + status: 200, + tags: ['order-sign'] + ) + end + + it 'skips when no requests have been received' do + create_completeness_result + expect(run(runnable).result).to eq('skip') + end + + it 'skips when requests exist but none were made to the subset endpoint' do + create_hook_request(url: service_url) + create_completeness_result( + output_json: [{ name: 'demonstrates_prefetch_complete_distinct_from_subset', value: 'true' }].to_json + ) + expect(run(runnable).result).to eq('skip') + end + + it 'skips when requests exist but none were made to the complete endpoint' do + create_hook_request(url: subset_url) + create_completeness_result( + output_json: [{ name: 'demonstrates_prefetch_subset_distinct_from_complete', value: 'true' }].to_json + ) + expect(run(runnable).result).to eq('skip') + end + + it 'skips when subset requests exist but the subset distinction output is not demonstrated' do + create_hook_request(url: subset_url) + create_hook_request(url: service_url) + create_completeness_result( + output_json: [{ name: 'demonstrates_prefetch_complete_distinct_from_subset', value: 'true' }].to_json + ) + expect(run(runnable).result).to eq('skip') + end + + it 'skips when complete requests exist but the complete distinction output is not demonstrated' do + create_hook_request(url: subset_url) + create_hook_request(url: service_url) + create_completeness_result( + output_json: [{ name: 'demonstrates_prefetch_subset_distinct_from_complete', value: 'true' }].to_json + ) + expect(run(runnable).result).to eq('skip') + end + + it 'passes when both distinction outputs are demonstrated in a single result' do + create_hook_request(url: subset_url) + create_hook_request(url: service_url) + create_completeness_result( + output_json: [ + { name: 'demonstrates_prefetch_subset_distinct_from_complete', value: 'true' }, + { name: 'demonstrates_prefetch_complete_distinct_from_subset', value: 'true' } + ].to_json + ) + expect(run(runnable).result).to eq('pass') + end + + it 'passes when distinction outputs come from different hook group completeness results' do + create_hook_request(url: subset_url) + create_hook_request(url: service_url) + repo_create( + :result, + test_session_id: test_session.id, + runnable: prefetch_complete_test.reference_hash, + output_json: [{ name: 'demonstrates_prefetch_subset_distinct_from_complete', value: 'true' }].to_json, + result: 'pass' + ) + repo_create( + :result, + test_session_id: test_session.id, + runnable: prefetch_complete_test_appt_book.reference_hash, + output_json: [{ name: 'demonstrates_prefetch_complete_distinct_from_subset', value: 'true' }].to_json, + result: 'pass' + ) + expect(run(runnable).result).to eq('pass') + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_registration_verification_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_registration_verification_test_spec.rb new file mode 100644 index 00000000..06a54703 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_registration_verification_test_spec.rb @@ -0,0 +1,88 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/registration/client_registration_verification_test' + +RSpec.describe DaVinciCRDTestKit::V221::CRDClientRegistrationVerification do + let(:suite_id) { 'crd_client_v221' } + let(:test) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + + let(:jwks_hash) { JSON.parse(DaVinciCRDTestKit::JWKS.jwks_json) } + let(:example_jwks_url) { 'https://cds.example.org/jwks.json' } + let(:complete_org_id) { 'complete-org-1' } + let(:subset_org_id) { 'subset-org-2' } + let(:jwt_iss) { 'https://cds.example.org' } + + def result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]) + .first + .messages + end + + def run_with_defaults(cds_jwk_set: jwks_hash.to_json, + complete_prefetch_service_organization_id: complete_org_id, + subset_prefetch_service_organization_id: subset_org_id) + run(test, + cds_jwt_iss: jwt_iss, + cds_jwk_set:, + complete_prefetch_service_organization_id:, + subset_prefetch_service_organization_id:) + end + + it 'passes with valid raw JWKS and distinct organization ids' do + result = run_with_defaults + expect(result.result).to eq('pass') + end + + it 'passes with JWKS provided as a URL' do + stub_request(:get, example_jwks_url).to_return(status: 200, body: jwks_hash.to_json) + result = run_with_defaults(cds_jwk_set: example_jwks_url) + expect(result.result).to eq('pass') + end + + it 'fails when no JWKS is provided' do + result = run_with_defaults(cds_jwk_set: nil) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/CRD JSON Web Key Set/)) + end + + it 'fails when JWKS contains no valid keys' do + empty_jwks = { 'keys' => [] }.to_json + result = run_with_defaults(cds_jwk_set: empty_jwks) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/does not include any valid keys/)) + end + + it 'adds a warning when JWKS is provided as raw JSON rather than a URL' do + result = run_with_defaults + expect(result.result).to eq('pass') + expect(result_messages.map(&:message)).to include(match(/strongly discouraged/)) + end + + it 'fails when both organization ids are the same' do + result = run_with_defaults( + complete_prefetch_service_organization_id: 'same-org', + subset_prefetch_service_organization_id: 'same-org' + ) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/unique Organization id/)) + end + + it 'passes when organization ids differ' do + result = run_with_defaults( + complete_prefetch_service_organization_id: 'org-a', + subset_prefetch_service_organization_id: 'org-b' + ) + expect(result.result).to eq('pass') + end + + it 'fails for both missing JWKS and duplicate organization ids simultaneously' do + result = run_with_defaults( + cds_jwk_set: nil, + complete_prefetch_service_organization_id: 'same-org', + subset_prefetch_service_organization_id: 'same-org' + ) + expect(result.result).to eq('fail') + messages = result_messages.map(&:message) + expect(messages).to include(match(/CRD JSON Web Key Set/)) + expect(messages).to include(match(/unique Organization id/)) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/client_skip_long_running_attestation_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/client_skip_long_running_attestation_test_spec.rb new file mode 100644 index 00000000..9a816cca --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/client_skip_long_running_attestation_test_spec.rb @@ -0,0 +1,55 @@ +RSpec.describe DaVinciCRDTestKit::V221::ClientSkipLongRunningAttestationTest, :request do + let(:suite_id) { 'crd_client_v221' } + let(:test) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client_v221" } + let(:known_token) { 'abc123' } + let(:attest_true_url) { "#{base_url}/resume_pass?token=#{known_token}" } + let(:attest_false_url) { "#{base_url}/resume_fail?token=#{known_token}" } + + before do + allow(SecureRandom).to receive(:hex).and_return(known_token) + end + + it 'skips when no long-running requests were sent during the previous wait' do + allow_any_instance_of(test).to receive(:load_hook_requests).and_return([]) + + result = run(test) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/no hook requests sent during the previous wait/) + end + + it 'enters wait state when long-running requests exist' do + allow_any_instance_of(test).to receive(:load_hook_requests).and_return(['stub_request']) + + result = run(test) + + expect(result.result).to eq('wait') + end + + it 'passes when the user attests true' do + allow_any_instance_of(test).to receive(:load_hook_requests).and_return(['stub_request']) + + result = run(test) + expect(result.result).to eq('wait') + + get(attest_true_url) + + result = results_repo.find(result.id) + expect(result.result).to eq('pass') + end + + it 'fails when the user attests false' do + allow_any_instance_of(test).to receive(:load_hook_requests).and_return(['stub_request']) + + result = run(test) + expect(result.result).to eq('wait') + + get(attest_false_url) + + result = results_repo.find(result.id) + expect(result.result).to eq('fail') + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/coverage_info_configuration_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/coverage_info_configuration_test_spec.rb new file mode 100644 index 00000000..96f3fa4d --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/coverage_info_configuration_test_spec.rb @@ -0,0 +1,144 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/v2.2.1/verify_response/coverage_info_configuration_test' + +RSpec.describe DaVinciCRDTestKit::V221::CoverageInfoConfigurationTest do + let(:suite_id) { 'crd_client' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:service_endpoint) { 'http://example.com/cds-services/order-sign-service' } + let(:hook_request) do + JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json' + ))) + end + let(:coverage_info_card) do + { + 'summary' => 'Coverage information', + 'indicator' => 'info', + 'source' => { 'type' => 'coverage-info' } + } + end + let(:guideline_card) do + { + 'summary' => 'Guideline', + 'indicator' => 'info', + 'source' => { 'topic' => { 'code' => 'guideline' } } + } + end + let(:coverage_info_action) do + { + 'type' => 'update', + 'description' => 'Added coverage information', + 'resource' => { + 'resourceType' => 'ServiceRequest', + 'id' => 'service-request-1', + 'status' => 'draft', + 'intent' => 'order', + 'extension' => [ + { + 'url' => DaVinciCRDTestKit::CardsIdentification::COVERAGE_INFO_EXT_URL + } + ] + } + } + end + let(:original_response) do + { + 'cards' => [coverage_info_card, guideline_card], + 'systemActions' => [coverage_info_action] + } + end + let(:filtered_response) do + { + 'cards' => [guideline_card], + 'systemActions' => [] + } + end + + def create_service_request( + body: original_response, + status: 200, + request_body: hook_request, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + repo_create( + :request, + direction: 'outgoing', + url: service_endpoint, + test_session_id: test_session.id, + request_body: request_body.to_json, + response_body: body.to_json, + result:, + status:, + tags:, + headers: nil + ) + end + + def create_disabled_service_request(**args) + create_service_request( + **args, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG, DaVinciCRDTestKit::COVERAGE_INFO_DISABLED_TAG] + ) + end + + def coverage_info_disabled_request_body + hook_request.deep_dup.tap do |request_body| + request_body['hookInstance'] = SecureRandom.uuid + request_body['extension'] = { + 'davinci-crd.configuration' => { + 'coverage-info' => false + } + } + end + end + + def entity_result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + before do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-sign') + end + + it 'passes when coverage-info disabled responses omit coverage-info content' do + create_disabled_service_request(body: filtered_response, request_body: coverage_info_disabled_request_body) + + result = run(runnable) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails if the coverage-info disabled response still contains coverage-info content' do + create_disabled_service_request(request_body: coverage_info_disabled_request_body) + + result = run(runnable) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Coverage-info configuration responses were not valid/) + expect(entity_result_messages.map(&:message).join(' ')).to match(/included coverage-info content/) + end + + it 'skips if no coverage-info disabled follow-up request was made for primary hooks' do + create_service_request + + result = run(runnable) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/response contained coverage-info content to suppress/) + end + + it 'omits if no coverage-info disabled follow-up request was made for secondary hooks' do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-select') + + create_service_request + + result = run(runnable) + + expect(result.result).to eq('omit') + expect(result.result_message).to match(/response contained coverage-info content to suppress/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/coverage_information_must_support_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/coverage_information_must_support_test_spec.rb new file mode 100644 index 00000000..03925faf --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/coverage_information_must_support_test_spec.rb @@ -0,0 +1,53 @@ +RSpec.describe DaVinciCRDTestKit::V221::CoverageInformationMustSupportTest do + let(:suite_id) { 'crd_server' } + let(:runnable) { described_class } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:covered_action) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'coverage_info_system_action_covered.json'))) + end + let(:authorization_action) do + response = File.read(File.join(__dir__, '..', '..', 'fixtures', 'crd_authorization_hook_response.json')) + JSON.parse(response).fetch('systemActions').first + end + let(:complete_action) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'coverage_info_system_action_complete.json'))) + end + + def create_hook_request(actions, tags:) + repo_create( + :request, + result:, + tags:, + request_body: { hookInstance: SecureRandom.uuid }.to_json, + response_body: { cards: [], systemActions: actions }.to_json + ) + end + + it 'fails when no coverage information actions are found across the hook responses' do + result = run(runnable) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Coverage Information system action support not demonstrated/) + end + + it 'fails when some must support elements are missing across all hook responses' do + create_hook_request([covered_action], tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG]) + + result = run(runnable) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Extension.extension:doc-needed/) + expect(result.result_message).to match(/Extension.extension:doc-purpose/) + expect(result.result_message).to match(/Extension.extension:info-needed/) + end + + it 'passes when all must support elements are present across multiple hook responses' do + create_hook_request([complete_action], tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG]) + create_hook_request([authorization_action], tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG]) + + result = run(runnable) + + expect(result.result).to eq('pass') + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/coverage_information_system_action_validation_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/coverage_information_system_action_validation_test_spec.rb new file mode 100644 index 00000000..a2344226 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/coverage_information_system_action_validation_test_spec.rb @@ -0,0 +1,171 @@ +RSpec.describe DaVinciCRDTestKit::V221::CoverageInformationSystemActionValidationTest do + let(:suite_id) { 'crd_server' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:request_result) { repo_create(:result, test_session_id: test_session.id) } + let(:request_url) { 'http://example.com/cds-services/service' } + let(:valid_coverage_info_system_action) do + json = File.read(File.join(__dir__, '..', '..', 'fixtures', 'crd_authorization_hook_response.json')) + JSON.parse(json)['systemActions'].first + end + let(:coverage_information_extension) do + valid_coverage_info_system_action.dig('resource', 'extension', 0).deep_dup + end + let(:order_sign_request_body) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json'))) + end + let(:order_dispatch_request_body) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'order_dispatch_hook_request.json'))) + end + let(:appointment_book_request_body) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json'))) + end + let(:service_request_resource) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'crd_service_request_example.json'))) + end + + before do + allow_any_instance_of(runnable).to receive(:assert_valid_resource).and_return(true) + end + + def entity_result_message + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + .first + end + + def create_hook_request(hook_name:, request_body:, actions:) + repo_create( + :request, + result: request_result, + direction: 'outgoing', + url: request_url, + request_body: request_body.to_json, + response_body: { 'systemActions' => actions }.to_json, + status: 200, + tags: [hook_name] + ) + end + + def stub_hook_requests(hook_name:, request_body:, actions:) + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return(hook_name) + create_hook_request(hook_name:, request_body:, actions:) + end + + def coverage_info_action(resource) + { + 'type' => 'update', + 'description' => "Added coverage information to #{resource['resourceType']} resource.", + 'resource' => resource + } + end + + def mock_bundle_with(*resources) + { + 'resourceType' => 'Bundle', + 'type' => 'collection', + 'entry' => resources.map { |resource| { 'resource' => resource } } + } + end + + it 'passes when only the coverage-information extension changes for order-sign' do + original_resource = order_sign_request_body.dig('context', 'draftOrders', 'entry', 0, 'resource') + updated_resource = original_resource.deep_dup + updated_resource['extension'] << coverage_information_extension.deep_dup + action = coverage_info_action(updated_resource) + stub_hook_requests(hook_name: 'order-sign', request_body: order_sign_request_body, actions: [action]) + + result = run(runnable, coverage_info: [action].to_json) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails when a non-coverage-information field changes' do + original_resource = order_sign_request_body.dig('context', 'draftOrders', 'entry', 0, 'resource') + updated_resource = original_resource.deep_dup + updated_resource['status'] = 'active' + updated_resource['extension'] << coverage_information_extension.deep_dup + action = coverage_info_action(updated_resource) + stub_hook_requests(hook_name: 'order-sign', request_body: order_sign_request_body, actions: [action]) + + result = run(runnable, coverage_info: [action].to_json) + + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/changed outside the coverage-information extension/) + end + + it 'fails when a non-coverage-information extension changes' do + original_resource = order_sign_request_body.dig('context', 'draftOrders', 'entry', 0, 'resource') + updated_resource = original_resource.deep_dup + updated_resource['extension'].first['valueString'] = 'updated-value' + updated_resource['extension'] << coverage_information_extension.deep_dup + action = coverage_info_action(updated_resource) + stub_hook_requests(hook_name: 'order-sign', request_body: order_sign_request_body, actions: [action]) + + result = run(runnable, coverage_info: [action].to_json) + + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/changed outside the coverage-information extension/) + end + + it 'passes when resolving the original order-dispatch resource from the mock EHR bundle' do + updated_resource = service_request_resource.deep_dup + updated_resource['extension'] = [coverage_information_extension.deep_dup] + action = coverage_info_action(updated_resource) + stub_hook_requests(hook_name: 'order-dispatch', request_body: order_dispatch_request_body, actions: [action]) + + result = run( + runnable, + coverage_info: [action].to_json, + mock_ehr_bundle: mock_bundle_with(service_request_resource).to_json + ) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'passes when resolving the original order-dispatch resource from prefetch' do + request_body = order_dispatch_request_body.deep_dup + request_body['prefetch'] = { 'serviceRequest' => service_request_resource.deep_dup } + updated_resource = service_request_resource.deep_dup + updated_resource['extension'] = [coverage_information_extension.deep_dup] + action = coverage_info_action(updated_resource) + stub_hook_requests(hook_name: 'order-dispatch', request_body:, actions: [action]) + + result = run(runnable, coverage_info: [action].to_json) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'passes when appointment-book updates the basedOn ServiceRequest instead of the Appointment' do + appointment_request = appointment_book_request_body.deep_dup + appointment_request.dig('context', 'appointments', 'entry', 0, 'resource')['basedOn'] = [ + { 'reference' => 'ServiceRequest/example' } + ] + updated_resource = service_request_resource.deep_dup + updated_resource['extension'] = [coverage_information_extension.deep_dup] + action = coverage_info_action(updated_resource) + stub_hook_requests(hook_name: 'appointment-book', request_body: appointment_request, actions: [action]) + + result = run( + runnable, + coverage_info: [action].to_json, + mock_ehr_bundle: mock_bundle_with(service_request_resource).to_json + ) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'warns when it cannot resolve the original source resource for comparison' do + updated_resource = service_request_resource.deep_dup + updated_resource['extension'] = [coverage_information_extension.deep_dup] + action = coverage_info_action(updated_resource) + stub_hook_requests(hook_name: 'order-dispatch', request_body: order_dispatch_request_body, actions: [action]) + + result = run(runnable, coverage_info: [action].to_json) + + expect(result.result).to eq('pass'), result.result_message + expect(entity_result_message.type).to eq('warning') + expect(entity_result_message.message).to match(/could not resolve the original source resource/i) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/decode_auth_token_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/decode_auth_token_test_spec.rb new file mode 100644 index 00000000..4d289312 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/decode_auth_token_test_spec.rb @@ -0,0 +1,145 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/auth/decode_auth_token_test' +require_relative '../../../lib/davinci_crd_test_kit/server/jwt_helper' + +RSpec.describe DaVinciCRDTestKit::V221::DecodeAuthTokenTest do + let(:suite_id) { 'crd_client_v221' } + let(:jwt_helper) { Class.new(DaVinciCRDTestKit::JwtHelper) } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:runnable) { Inferno::Repositories::Tests.new.find('crd_v221_decode_auth_token') } + let(:session_data_repo) { Inferno::Repositories::SessionData.new } + + let(:example_client_url) { 'https://cds.example.org' } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } + let(:appointment_book_url) { "#{base_url}/cds-services/appointment-book-service" } + + let(:appointment_book_hook_request) do + File.read(File.join( + __dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json' + )) + end + + def create_appointment_hook_request(body: nil, status: 200, headers: nil, auth_header: nil) + headers ||= [ + { + type: 'request', + name: 'Authorization', + value: auth_header + } + ] + repo_create( + :request, + name: 'appointment_book', + direction: 'incoming', + url: 'http://example.com/custom/crd_client/cds-services/appointment-book-service', + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + result:, + status:, + headers:, + tags: ['appointment-book'] + ) + end + + def entity_result_message + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + .first + end + + def session_output(name) + JSON.parse(session_data_repo.load(test_session_id: test_session.id, name:)) + end + + describe 'Appointment Book Decode Auth Token Test' do + let(:test) do + Class.new(DaVinciCRDTestKit::V221::DecodeAuthTokenTest) do + config( + options: { hook_name: 'appointment-book' } + ) + end + end + + it 'passes if valid authorization header included in request' do + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + create_appointment_hook_request(body: appointment_book_hook_request, auth_header: "Bearer #{token}") + + result = run(test) + expect(result.result).to eq('pass') + end + + it 'passes if multiple requests have valid authorization headers' do + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + create_appointment_hook_request(body: appointment_book_hook_request, auth_header: "Bearer #{token}") + create_appointment_hook_request(body: appointment_book_hook_request, auth_header: "Bearer #{token}") + + result = run(test) + expect(result.result).to eq('pass') + end + + it 'fails if one of many requests has an invalid authorization headers' do + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + create_appointment_hook_request(body: appointment_book_hook_request, auth_header: "Bearer #{token}") + create_appointment_hook_request(body: appointment_book_hook_request, auth_header: token) + + result = run(test) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match( + /\(Request 2\) Authorization token must be a JWT presented as a `Bearer` token/ + ) + expect(session_output(:auth_tokens)).to eq([token, nil]) + expect(session_output(:auth_token_payloads_json).length).to eq(2) + expect(session_output(:auth_token_payloads_json).last).to be_nil + expect(session_output(:auth_token_headers_json).length).to eq(2) + expect(session_output(:auth_token_headers_json).last).to be_nil + end + + it 'fails if authorization header does not present the JWT as a `Bearer` token' do + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + create_appointment_hook_request(body: appointment_book_hook_request, auth_header: token) + + result = run(test) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Authorization token must be a JWT presented as a `Bearer` token/) + expect(session_output(:auth_tokens)).to eq([nil]) + expect(session_output(:auth_token_payloads_json)).to eq([nil]) + expect(session_output(:auth_token_headers_json)).to eq([nil]) + end + + it 'fails if one request has a malformed JWT and outputs nil for payload and header entries' do + create_appointment_hook_request(body: appointment_book_hook_request, + auth_header: 'Bearer not.a.valid.jwt') + + result = run(test) + expect(result.result).to eq('fail') + expect(session_output(:auth_tokens)).to eq(['not.a.valid.jwt']) + expect(session_output(:auth_token_payloads_json)).to eq([nil]) + expect(session_output(:auth_token_headers_json)).to eq([nil]) + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/discovery_configuration_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/discovery_configuration_test_spec.rb new file mode 100644 index 00000000..deef550c --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/discovery_configuration_test_spec.rb @@ -0,0 +1,169 @@ +RSpec.describe DaVinciCRDTestKit::V221::DiscoveryConfigurationTest do + let(:suite_id) { 'crd_client' } + let(:runnable) { described_class } + let(:cds_services) do + { + 'services' => [ + { + 'hook' => 'appointment-book', + 'title' => 'Appointment Booking CDS Service', + 'description' => 'An example of a CDS Service that is invoked when user of a CRD Client books an appointment', + 'id' => 'appointment-book-service', + 'prefetch' => { + 'user' => '{{context.userId}}', + 'patient' => 'Patient/{{context.patientId}}' + } + } + ] + } + end + let(:valid_config_option) do + { + 'code' => 'coverage-info', + 'type' => 'boolean', + 'name' => 'Coverage Information', + 'description' => 'Placeholder Coverage Info Description', + 'default' => false + } + end + let(:results_repo) { Inferno::Repositories::Results.new } + let(:first_error_message) do + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages.select { |message| message.type == 'error' } + .first + end + + it 'passes if all primary hook services contain configuration options' do + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [valid_config_option] + } + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'passes if secondary hook services do not contain configuration options' do + cds_services['services'] << cds_services['services'].first.dup + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [valid_config_option] + } + cds_services['services'].last['hook'] = 'encounter-start' + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'omits if no primary hook services are found' do + cds_services['services'].first['hook'] = 'encounter-start' + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('omit'), result.result_message + end + + it 'fails if a primary hook service does not have a coverage-info option' do + valid_config_option['code'] = 'claim' + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [valid_config_option] + } + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(first_error_message.message).to match(/does not contain a `coverage-info`/) + end + + it 'fails if a primary hook service does not have a configuration option' do + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(first_error_message.message).to match(/The following services do not contain any/) + end + + it 'fails if a configuration option does not contain a required field' do + config_option = valid_config_option + config_option.delete 'description' + + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [config_option] + } + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(first_error_message.message).to match(/does not contain `description` field/) + end + + it 'fails if a configuration option field is the incorrect type' do + config_option = valid_config_option + config_option['description'] = ['bad description'] + + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [config_option] + } + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(first_error_message.message).to match(/field `description` to be a String, but found Array/) + end + + it 'fails if configuration options contain duplicate values' do + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [valid_config_option, valid_config_option] + } + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(result.result_message).to match(/contain invalid configuration options/) + expect(first_error_message.message).to match(/`appointment-book` contain duplicate values for `code`:/) + end + + it 'ignores services in the ignore list' do + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [valid_config_option] + } + bad_config_option = valid_config_option.dup + bad_config_option.delete 'description' + cds_services['services'] << cds_services['services'].first.dup + cds_services['services'].last['id'] = 'id_to_ignore' + cds_services['services'].last['extension'] = + { + 'davinci-crd.configuration-options' => [bad_config_option] + } + + result = run( + runnable, + cds_services: cds_services.to_json, + crd_discovery_service_ignore_list: 'id1, id_to_ignore, id3' + ) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails if the coverage-info configuration option is not type boolean' do + config_option = valid_config_option + config_option['type'] = 'integer' + + cds_services['services'].first['extension'] = + { + 'davinci-crd.configuration-options' => [config_option] + } + + result = run(runnable, cds_services: cds_services.to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(first_error_message.message).to match(/is not of type boolean/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/discovery_prefetch_support_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/discovery_prefetch_support_test_spec.rb new file mode 100644 index 00000000..acd51486 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/discovery_prefetch_support_test_spec.rb @@ -0,0 +1,49 @@ +RSpec.describe DaVinciCRDTestKit::V221::DiscoveryPrefetchSupportTest do + let(:suite_id) { 'crd_client' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:cds_service) do + { + 'hook' => 'appointment-book', + 'title' => 'Appointment Booking CDS Service', + 'description' => 'An example of a CDS Service that is invoked when user of a CRD Client books an appointment', + 'id' => 'appointment-book-service', + 'prefetch' => { + 'user' => '{{context.userId}}', + 'patient' => 'Patient/{{context.patientId}}' + } + } + end + + def entity_result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + it 'succeeds when a service contains a prefetch query' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.2'] }) + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'skips if no services advertise prefetch support' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.2'] }) + + service1.delete 'prefetch' + service2.delete 'prefetch' + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to match(/No CRD services advertised prefetch support/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/discovery_services_validation_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/discovery_services_validation_test_spec.rb new file mode 100644 index 00000000..24ef9110 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/discovery_services_validation_test_spec.rb @@ -0,0 +1,172 @@ +RSpec.describe DaVinciCRDTestKit::V221::DiscoveryServicesValidationTest do + let(:suite_id) { 'crd_client' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:cds_service) do + { + 'hook' => 'appointment-book', + 'title' => 'Appointment Booking CDS Service', + 'description' => 'An example of a CDS Service that is invoked when user of a CRD Client books an appointment', + 'id' => 'appointment-book-service', + 'prefetch' => { + 'user' => '{{context.userId}}', + 'patient' => 'Patient/{{context.patientId}}' + } + } + end + let(:non_crd_service) do + cds_service.merge( + 'id' => 'non-crd-appointment-book-service', + 'extension' => nil + ) + end + + def entity_result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + it 'succeeds when all services contain a valid davinci-crd.version extension' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.2'] }) + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails when the davinci-crd.version extension is not present' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.x' => ['2.2'] }) + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('fail'), result.result_message + expect(result.result_message).to match(/does not contain/) + end + + it 'fails when the davinci-crd.version extension is not an Array' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.version' => '2.2' }) + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('fail'), result.result_message + expect(result.result_message).to match(/is not of type Array/) + end + + it 'fails when the davinci-crd.version extension is empty' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.version' => [] }) + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('fail'), result.result_message + expect(result.result_message).to match(/is empty/) + end + + it 'fails when the davinci-crd.version extension contains non-string values' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', 2.2] }) + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('fail'), result.result_message + expect(result.result_message).to match(/contains non-string values/) + end + + it 'fails when the davinci-crd.version extension contains in improperly formatted version' do + service1 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.1', '2.2'] }) + service2 = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.2.1'] }) + + cds_services = { 'services' => [service1, service2] }.to_json + + result = run(runnable, cds_services:) + + expect(result.result).to eq('fail'), result.result_message + expect(result.result_message).to match(/invalid version strings/) + end + + it 'does not apply CRD-specific discovery requirements to ignored services' do + crd_service = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.2'] }) + + result = run( + runnable, + cds_services: { 'services' => [crd_service, non_crd_service] }.to_json, + crd_discovery_service_ignore_list: 'non-crd-appointment-book-service' + ) + + expect(result.result).to eq('pass'), result.result_message + expect(session_data_repo.load(test_session_id: test_session.id, name: 'appointment_book_service_ids')) + .to eq('appointment-book-service') + expect(entity_result_messages.find { |message| message.type == 'info' }&.message) + .to match(/Ignoring service `non-crd-appointment-book-service`/) + end + + it 'accepts comma separated ignored service ids' do + crd_service = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.2'] }) + + result = run( + runnable, + cds_services: { 'services' => [crd_service, non_crd_service] }.to_json, + crd_discovery_service_ignore_list: 'other-service, non-crd-appointment-book-service' + ) + + expect(result.result).to eq('pass'), result.result_message + expect(session_data_repo.load(test_session_id: test_session.id, name: 'appointment_book_service_ids')) + .to eq('appointment-book-service') + end + + it 'does not validate ignored services against CDS Hooks discovery requirements' do + crd_service = cds_service.merge('extension' => { 'davinci-crd.version' => ['2.2'] }) + invalid_service = non_crd_service.merge('description' => nil) + + result = run( + runnable, + cds_services: { 'services' => [crd_service, invalid_service] }.to_json, + crd_discovery_service_ignore_list: 'non-crd-appointment-book-service' + ) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'persists blank service id outputs if no services are discovered' do + session_data_repo.save(test_session_id: test_session.id, name: 'appointment_book_service_ids', + value: 'stale-service-id', type: 'text') + + result = run( + runnable, + cds_services: { 'services' => [] }.to_json + ) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to eq('Server hosts no CDS Services.') + expect(session_data_repo.load(test_session_id: test_session.id, name: 'appointment_book_service_ids')).to be_nil + end + + it 'skips if all discovered services are ignored for CRD validation' do + session_data_repo.save(test_session_id: test_session.id, name: 'appointment_book_service_ids', + value: 'stale-service-id', type: 'text') + + result = run( + runnable, + cds_services: { 'services' => [non_crd_service] }.to_json, + crd_discovery_service_ignore_list: 'non-crd-appointment-book-service' + ) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to eq('Ignore list excludes all CDS Services from validation.') + expect(session_data_repo.load(test_session_id: test_session.id, name: 'appointment_book_service_ids')).to be_nil + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/form_completion_response_validation_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/form_completion_response_validation_test_spec.rb new file mode 100644 index 00000000..7c7da899 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/form_completion_response_validation_test_spec.rb @@ -0,0 +1,121 @@ +RSpec.describe DaVinciCRDTestKit::V221::FormCompletionResponseValidationTest do + let(:suite_id) { 'crd_client_v221' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:base_card) do + { + 'summary' => 'Order Select Request Form Completion Card', + 'uuid' => 'jksfghisldlrldsse', + 'detail' => 'This is a Card containing one or more suggestions.', + 'indicator' => 'info', + 'source' => { + 'label' => 'Inferno', + 'url' => 'https://inferno.healthit.gov/', + 'topic' => { + 'system' => 'http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp', + 'code' => 'order-select', + 'display' => 'Order Select' + } + }, + 'selectionBehavior' => 'any', + 'suggestions' => [ + { + 'label' => "Add 'completion of the ABC form' to your task list (possibly for reassignment)", + 'actions' => [ + { + 'type' => 'create', + 'description' => 'Create form', + 'resource' => { + 'resourceType' => 'Questionnaire', + 'url' => 'http://example.org/Questionnaire/XYZ' + } + }, + { + 'type' => 'create', + 'description' => 'Create task', + 'resource' => { + 'resourceType' => 'Task', + 'code' => { + 'coding' => [ + { + 'system' => 'http://hl7.org/fhir/uv/sdc/CodeSystem/temp', + 'code' => 'complete-questionnaire' + } + ] + }, + 'input' => [ + { + 'type' => { + 'text' => 'questionnaire', + 'coding' => [ + { + 'system' => 'http://hl7.org/fhir/uv/sdc/CodeSystem/temp', + 'code' => 'questionnaire' + } + ] + }, + 'valueCanonical' => 'http://example.org/Questionnaire/XYZ' + } + ] + } + } + ] + } + ] + } + end + + def entity_result_message + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + .first + end + + before do + allow_any_instance_of(runnable).to receive(:resource_is_valid?).and_return(true) + end + + it 'passes if questionnaire creation actions include the if-none-exist extension' do + card = base_card + card['suggestions'].first['actions'].first['extension'] = { + 'davinci-crd.if-none-exist': 'http://example.org/Questionnaire/XYZ' + } + result = run(runnable, valid_cards_with_suggestions: [base_card].to_json, + valid_system_actions: [].to_json) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails if form creation actions do not include the if-none-exist extension' do + result = run(runnable, valid_cards_with_suggestions: [base_card].to_json, + valid_system_actions: [].to_json) + + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/is not present/) + end + + it 'fails if the if-none-exist extension is the wrong type' do + card = base_card + card['suggestions'].first['actions'].first['extension'] = { + 'davinci-crd.if-none-exist': ['http://example.org/Questionnaire/XYZ'] + } + result = run(runnable, valid_cards_with_suggestions: [base_card].to_json, + valid_system_actions: [].to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(entity_result_message.message).to match(/is not a string/) + end + + it 'fails if the if-none-exist extension is an empty string' do + card = base_card + card['suggestions'].first['actions'].first['extension'] = { + 'davinci-crd.if-none-exist': '' + } + result = run(runnable, valid_cards_with_suggestions: [base_card].to_json, + valid_system_actions: [].to_json) + + expect(result.result).to eq('fail'), result.result_message + expect(entity_result_message.message).to match(/is an empty string/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_conformance_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_conformance_test_spec.rb new file mode 100644 index 00000000..761f5b8d --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_conformance_test_spec.rb @@ -0,0 +1,77 @@ +RSpec.describe DaVinciCRDTestKit::V221::HookRequestConformanceTest do + let(:suite_id) { 'crd_client' } + let(:test) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:test_session) { repo_create(:test_session, test_suite_id: 'crd_client') } + let(:hook_name) { 'order-sign' } + let(:fhir_server) { 'https://example.com/fhir' } + let(:access_token) { 'sample_token' } + let(:request_body) do + { + hook: hook_name, + fhirServer: fhir_server, + fhirAuthorization: { access_token: }, + context: { + userId: 'Practitioner/example', + patientId: 'example', + draftOrders: { resourceType: 'Bundle', entry: [] } + } + }.to_json + end + + before do + test.config(options: { hook_name: }) + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + end + + it 'skips if no requests are found' do + result = run(test) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No #{hook_name} hook requests received/) + end + + it 'passes and sets outputs when the request is conformant' do + repo_create(:request, + test_session_id: test_session.id, + request_body:, + result:, + tags: [hook_name]) + + # Mock the logical model validation helper to return true + # The test includes DaVinciCRDTestKit::RequestsLogicalModelValidation which calls conforms_to_logical_model? + allow_any_instance_of(test).to receive(:conforms_to_logical_model?).and_return(true) + + result = run(test) + + expect(result.result).to eq('pass') + + # Verify expected outputs are captured + url_output = result.outputs.find { |o| o['name'] == 'url' } + auth_output = result.outputs.find { |o| o['name'] == 'smart_auth_info' } + + expect(url_output['value']).to eq(fhir_server) + + auth_json = JSON.parse(auth_output['value']) + expect(auth_json['access_token']).to eq(access_token) + end + + it 'fails when the request is not conformant to the logical model' do + repo_create(:request, + test_session_id: test_session.id, + request_body:, + result:, + tags: [hook_name]) + + # Mock a validation failure + allow_any_instance_of(test).to receive(:conforms_to_logical_model?) do |instance| + instance.add_message('error', 'Logical model validation failed') + false + end + + result = run(test) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Non-conformant hook request/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_coverage_verification_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_coverage_verification_test_spec.rb new file mode 100644 index 00000000..1aa598e2 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_coverage_verification_test_spec.rb @@ -0,0 +1,310 @@ +require_relative '../../../lib/davinci_crd_test_kit/cross_suite/tags' + +RSpec.describe DaVinciCRDTestKit::V221::HookRequestCoverageVerificationTest do + let(:suite_id) { 'crd_client_v221' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:hook_name) { 'order-sign' } + let(:hook_instance) { 'd1577c69-dfbe-44ad-ba6d-3e05e953b2ea' } + let(:payer_org_id) { 'inferno-payer-org' } + + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'order-sign' }) + end + end + + let(:coverage_resource) do + { + 'resourceType' => 'Coverage', + 'payor' => [{ 'reference' => "Organization/#{payer_org_id}" }] + } + end + + let(:hook_request_body) do + { + 'hookInstance' => hook_instance, + 'hook' => hook_name, + 'prefetch' => { + 'coverage' => { + 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => coverage_resource }] + } + } + } + end + + let(:payer_organization) do + { 'resourceType' => 'Organization', 'id' => payer_org_id } + end + + def create_hook_request(body: hook_request_body, tags: [hook_name]) + repo_create( + :request, + direction: 'incoming', + url: "https://example.com/cds-services/#{hook_name}-service", + result:, + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + status: 200, + headers: [], + tags: + ) + end + + def create_payer_fetch_request(response_body: payer_organization, status: 200, + instance: hook_instance) + repo_create( + :request, + direction: 'outgoing', + url: "https://example.com/fhir/Organization/#{payer_org_id}", + result:, + test_session_id: test_session.id, + response_body: response_body.is_a?(Hash) ? response_body.to_json : response_body, + status:, + headers: [], + tags: [DaVinciCRDTestKit::PAYER_ORG_FETCH_TAG, + DaVinciCRDTestKit::TagMethods.hook_instance_data_fetch_tag(instance), + DaVinciCRDTestKit::DATA_FETCH_TAG] + ) + end + + def result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + it 'fails when complete_prefetch_service_organization_id is blank and complete endpoint requests are received' do + create_hook_request(body: { 'hookInstance' => hook_instance, 'hook' => hook_name }) + result = run(test, complete_prefetch_service_organization_id: '', + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/No Inferno Payer Organization id configured/) + end + + it 'fails when subset_prefetch_service_organization_id is blank and subset endpoint requests are received' do + repo_create( + :request, + direction: 'incoming', + url: "https://example.com/prefetch-subset/cds-services/#{hook_name}", + result:, + test_session_id: test_session.id, + request_body: { 'hookInstance' => hook_instance, 'hook' => hook_name }.to_json, + status: 200, + headers: [], + tags: [hook_name] + ) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: '') + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/No Inferno Payer Organization id configured/) + end + + it 'skips when no hook requests received' do + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No #{hook_name} hook requests received/) + end + + it 'passes with a warning when no coverage is present in the prefetch' do + create_hook_request(body: { 'hookInstance' => hook_instance, 'hook' => hook_name }) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('pass') + expect(result_messages.map(&:message).join).to match(/Request has no coverage/) + end + + it 'passes when coverage payer matches the expected organization and passes validation' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + create_hook_request + create_payer_fetch_request + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('pass') + end + + it 'fails when coverage has no payer reference' do + no_payer_coverage = { 'resourceType' => 'Coverage' } + body = hook_request_body.deep_merge( + 'prefetch' => { 'coverage' => { 'entry' => [{ 'resource' => no_payer_coverage }] } } + ) + create_hook_request(body:) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/Coverage has no payer reference/) + end + + it 'fails when Inferno did not successfully retrieve the payer during hook processing' do + create_hook_request + # No payer fetch request stored + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/failed to retrieve the Coverage's payer/) + end + + it 'fails when the payer fetch request returned a non-2xx status' do + create_hook_request + create_payer_fetch_request(status: 404) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/failed to retrieve the Coverage's payer/) + end + + it 'fails when the payer fetch response is not valid FHIR' do + create_hook_request + create_payer_fetch_request(response_body: '{"not": "fhir"}') + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/returned invalid FHIR data/) + end + + it 'fails when the payer resource is not an Organization' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + create_hook_request + create_payer_fetch_request(response_body: { 'resourceType' => 'Patient', 'id' => payer_org_id }) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/Payer for the Coverage is not an Organization/) + end + + it 'fails when payer organization id does not match expected' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + create_hook_request + create_payer_fetch_request(response_body: { 'resourceType' => 'Organization', 'id' => 'wrong-id' }) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/Payer for the Coverage has the wrong id/) + end + + it 'fails when the payer resource does not conform to the CRD Organization profile' do + allow_any_instance_of(test).to receive(:resource_is_valid?) do |instance| + instance.add_message('error', 'Resource does not conform to profile') + false + end + create_hook_request + create_payer_fetch_request + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/does not conform to profile/) + end + + it 'includes request number in error message for the failing request' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + second_instance = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + no_payer_coverage = { 'resourceType' => 'Coverage' } + second_body = { + 'hookInstance' => second_instance, + 'hook' => hook_name, + 'prefetch' => { + 'coverage' => { + 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => no_payer_coverage }] + } + } + } + create_hook_request + create_payer_fetch_request + create_hook_request(body: second_body) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/\(Request 2\).*Coverage has no payer reference/m) + end + + describe 'when the request was sent to the prefetch-subset endpoint' do + let(:subset_payer_org_id) { 'inferno-subset-payer-org' } + let(:subset_payer_organization) { { 'resourceType' => 'Organization', 'id' => subset_payer_org_id } } + let(:subset_hook_request_body) do + { + 'hookInstance' => hook_instance, + 'hook' => hook_name, + 'prefetch' => { + 'coverage' => { + 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => { + 'resourceType' => 'Coverage', + 'payor' => [{ 'reference' => "Organization/#{subset_payer_org_id}" }] + } }] + } + } + } + end + + def create_subset_hook_request(body: subset_hook_request_body, tags: [hook_name]) + repo_create( + :request, + direction: 'incoming', + url: "https://example.com/prefetch-subset/cds-services/#{hook_name}-subset", + result:, + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + status: 200, + headers: [], + tags: + ) + end + + it 'uses subset_prefetch_service_organization_id for coverage verification' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + create_subset_hook_request + create_payer_fetch_request(response_body: subset_payer_organization) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: subset_payer_org_id) + expect(result.result).to eq('pass') + end + + it 'fails when the payer id does not match the subset org id' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + create_subset_hook_request + create_payer_fetch_request(response_body: { 'resourceType' => 'Organization', 'id' => 'wrong-id' }) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: subset_payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/Payer for the Coverage has the wrong id/) + end + + it 'does not use complete_prefetch_service_organization_id for subset endpoint requests' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + create_subset_hook_request + # Return the main payer org id instead of the subset org id — should still fail + create_payer_fetch_request(response_body: payer_organization) + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: subset_payer_org_id) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message).join).to match(/Payer for the Coverage has the wrong id/) + end + end + + describe 'when a crd_test_group is configured' do + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'order-sign', crd_test_group: 'some-group' }) + end + end + + it 'only loads requests that have both the hook tag and the group tag' do + allow_any_instance_of(test).to receive(:resource_is_valid?).and_return(true) + # This request lacks the group tag and has invalid coverage — should be ignored + invalid_body = hook_request_body.deep_merge( + 'prefetch' => { 'coverage' => { 'entry' => [{ 'resource' => { 'resourceType' => 'Coverage' } }] } } + ) + create_hook_request(body: invalid_body, tags: [hook_name]) + # This request has both tags and is valid + create_hook_request(tags: [hook_name, 'some-group']) + create_payer_fetch_request + result = run(test, complete_prefetch_service_organization_id: payer_org_id, + subset_prefetch_service_organization_id: payer_org_id) + expect(result.result).to eq('pass') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_data_fetch_verification_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_data_fetch_verification_test_spec.rb new file mode 100644 index 00000000..3a545083 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_data_fetch_verification_test_spec.rb @@ -0,0 +1,132 @@ +require_relative '../../../lib/davinci_crd_test_kit/cross_suite/tags' + +RSpec.describe DaVinciCRDTestKit::V221::HookRequestDataFetchVerificationTest do + let(:suite_id) { 'crd_client_v221' } + let(:hook_name) { 'order-sign' } + let(:hook_instance) { 'd1577c69-dfbe-44ad-ba6d-3e05e953b2ea' } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'order-sign' }) + end + end + + let(:hook_request_body) do + { 'hookInstance' => hook_instance, 'hook' => hook_name } + end + + let(:organization_resource) do + { 'resourceType' => 'Organization', 'id' => 'example-payer' } + end + + def create_hook_request(body: hook_request_body, tags: [hook_name]) + repo_create( + :request, + direction: 'incoming', + url: "https://example.com/cds-services/#{hook_name}-service", + result:, + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + status: 200, + headers: [], + tags: + ) + end + + def create_data_fetch_request(response_body:, status: 200, instance: hook_instance) + repo_create( + :request, + direction: 'outgoing', + url: 'https://example.com/fhir/Organization/example-payer', + result:, + test_session_id: test_session.id, + response_body: response_body.is_a?(Hash) ? response_body.to_json : response_body, + status:, + headers: [], + tags: [DaVinciCRDTestKit::TagMethods.hook_instance_data_fetch_tag(instance), DaVinciCRDTestKit::DATA_FETCH_TAG] + ) + end + + it 'skips when no hook requests received' do + result = run(test) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No #{hook_name} hook requests received/) + end + + it 'passes when an additional data request returned a FHIR resource' do + create_hook_request + create_data_fetch_request(response_body: organization_resource) + expect(run(test).result).to eq('pass') + end + + it 'passes when an additional data request returned a non-empty Bundle' do + bundle = { + 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => organization_resource }] + } + create_hook_request + create_data_fetch_request(response_body: bundle) + expect(run(test).result).to eq('pass') + end + + it 'fails when no additional data requests were made for any hook request' do + create_hook_request + result = run(test) + expect(result.result).to eq('fail') + expect(result.result_message).to match(/never able to successfully obtain additional FHIR data/) + end + + it 'fails when all additional data requests returned a non-2xx status' do + create_hook_request + create_data_fetch_request(response_body: organization_resource, status: 404) + result = run(test) + expect(result.result).to eq('fail') + expect(result.result_message).to match(/never able to successfully obtain additional FHIR data/) + end + + it 'fails when all additional data requests returned an empty Bundle' do + create_hook_request + create_data_fetch_request(response_body: { 'resourceType' => 'Bundle', 'entry' => [] }) + result = run(test) + expect(result.result).to eq('fail') + expect(result.result_message).to match(/never able to successfully obtain additional FHIR data/) + end + + it 'fails when all additional data requests returned non-FHIR response bodies' do + create_hook_request + create_data_fetch_request(response_body: 'not valid json or fhir') + result = run(test) + expect(result.result).to eq('fail') + expect(result.result_message).to match(/never able to successfully obtain additional FHIR data/) + end + + it 'passes when at least one of multiple hook requests has successful additional data' do + second_instance = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + create_hook_request + # First request has no data fetch — no additional requests stored + create_hook_request(body: { 'hookInstance' => second_instance, 'hook' => hook_name }) + create_data_fetch_request(response_body: organization_resource, instance: second_instance) + expect(run(test).result).to eq('pass') + end + + describe 'when a crd_test_group is configured' do + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'order-sign', crd_test_group: 'some-group' }) + end + end + + it 'only loads hook requests that have both the hook tag and the group tag' do + second_instance = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee' + # This request lacks the group tag; its data would make the test pass if loaded + create_hook_request(body: { 'hookInstance' => second_instance, 'hook' => hook_name }, + tags: [hook_name]) + create_data_fetch_request(response_body: organization_resource, instance: second_instance) + # This request has both tags but no successful data fetch + create_hook_request(tags: [hook_name, 'some-group']) + result = run(test) + expect(result.result).to eq('fail') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_granted_scopes_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_granted_scopes_test_spec.rb new file mode 100644 index 00000000..5d7acdc2 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_granted_scopes_test_spec.rb @@ -0,0 +1,212 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_granted_scopes_test' + +RSpec.describe DaVinciCRDTestKit::V221::HookRequestGrantedScopesTest do + let(:suite_id) { 'crd_client_v221' } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'appointment-book' }) + end + end + + let(:us_core_3_resources) { DaVinciCRDTestKit::CRDClientOptions::US_CORE_3_RESOURCE_TYPES } + let(:us_core_6_7_resources) { DaVinciCRDTestKit::CRDClientOptions::US_CORE_6_7_RESOURCE_TYPES } + + def resource_scopes(resources, level: 'user', interaction: 'rs') + resources.map { |r| "#{level}/#{r}.#{interaction}" }.join(' ') + end + + def create_hook_request(scope:, tags: ['appointment-book']) + body = { + 'hookInstance' => 'd1577c69-dfbe-44ad-ba6d-3e05e953b2ea', + 'hook' => 'appointment-book', + 'fhirAuthorization' => { + 'access_token' => 'SAMPLE_TOKEN', + 'token_type' => 'Bearer', + 'expires_in' => 300, + 'scope' => scope, + 'subject' => 'cds-service' + } + } + repo_create( + :request, + direction: 'incoming', + url: 'https://example.com/cds-services/appointment-book-service', + result:, + test_session_id: test_session.id, + request_body: body.to_json, + status: 200, + tags: + ) + end + + def result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]) + .first + .messages + end + + it 'skips when no hook requests have been received' do + result = run(test) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No appointment-book hook requests received/) + end + + context 'with US Core 3 selected' do + let(:test_session) do + repo_create(:test_session, test_suite_id: suite_id, suite_options: [ + Inferno::DSL::SuiteOption.new(id: :us_core_version, + value: DaVinciCRDTestKit::CRDClientOptions::US_CORE_3) + ]) + end + + it 'passes with valid user-level resource scopes' do + create_hook_request(scope: resource_scopes(us_core_3_resources, level: 'user')) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'passes with valid patient-level resource scopes' do + create_hook_request(scope: resource_scopes(us_core_3_resources, level: 'patient')) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'passes with multiple valid requests' do + create_hook_request(scope: resource_scopes(us_core_3_resources, level: 'user')) + create_hook_request(scope: resource_scopes(us_core_3_resources, level: 'patient')) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'fails when granted scopes are missing required resource types' do + partial_resources = us_core_3_resources - ['Patient', 'Condition'] + create_hook_request(scope: resource_scopes(partial_resources)) + result = run(test) + expect(result.result).to eq('fail') + messages = result_messages.map(&:message) + missing_message = messages.find { |m| m.include?('missing the following requested resource types') } + expect(missing_message).to be_present + expect(missing_message).to match(/Patient/) + expect(missing_message).to match(/Condition/) + end + + it 'fails when granted scopes include extra resource types' do + extra_resources = us_core_3_resources + ['Coverage', 'Specimen'] + create_hook_request(scope: resource_scopes(extra_resources)) + result = run(test) + expect(result.result).to eq('fail') + messages = result_messages.map(&:message) + extra_message = messages.find { |m| m.include?('beyond what was requested') } + expect(extra_message).to be_present + expect(extra_message).to match(/Coverage/) + expect(extra_message).to match(/Specimen/) + end + + it 'passes with a warning when all granted scopes use SMART v1 read interactions' do + create_hook_request(scope: resource_scopes(us_core_3_resources, interaction: 'read')) + result = run(test) + expect(result.result).to eq('pass') + expect(result_messages.map(&:message)).to include(match(/SMART v1 `read` scope used/)) + end + + it 'fails when granted scopes use mixed or unsupported interactions' do + mixed_scope = "#{resource_scopes(us_core_3_resources.first(10), interaction: 'rs')} " \ + "#{resource_scopes(us_core_3_resources.last(9), interaction: 'read')}" + create_hook_request(scope: mixed_scope) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/do not provide requested 'rs'/)) + end + + it 'fails when granted scopes mix user and patient levels' do + half = us_core_3_resources.length / 2 + mixed_scope = [ + resource_scopes(us_core_3_resources.first(half), level: 'user'), + resource_scopes(us_core_3_resources.last(us_core_3_resources.length - half), level: 'patient') + ].join(' ') + create_hook_request(scope: mixed_scope) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/did not use a consistent level of scope/)) + end + + it 'fails when granted scopes use an unexpected scope level' do + create_hook_request(scope: resource_scopes(us_core_3_resources, level: 'system')) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/Unexpected level for granted scopes.*system/)) + end + + it 'reports the request number when one of multiple requests fails' do + create_hook_request(scope: resource_scopes(us_core_3_resources, level: 'user')) + mixed_scope = "#{resource_scopes(us_core_3_resources.first(10), interaction: 'rs')} " \ + "#{resource_scopes(us_core_3_resources.last(9), interaction: 'read')}" + create_hook_request(scope: mixed_scope) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/\(Request 2\).*do not provide requested 'rs'/)) + end + end + + context 'with US Core 6 selected' do + let(:test_session) do + repo_create(:test_session, test_suite_id: suite_id, suite_options: [ + Inferno::DSL::SuiteOption.new(id: :us_core_version, + value: DaVinciCRDTestKit::CRDClientOptions::US_CORE_6) + ]) + end + + it 'passes with valid user-level resource scopes' do + create_hook_request(scope: resource_scopes(us_core_6_7_resources, level: 'user')) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'fails when US Core 3 resources are granted instead of US Core 6' do + create_hook_request(scope: resource_scopes(us_core_3_resources)) + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/missing the following requested resource types/)) + end + end + + context 'with US Core 7 selected' do + let(:test_session) do + repo_create(:test_session, test_suite_id: suite_id, suite_options: [ + Inferno::DSL::SuiteOption.new(id: :us_core_version, + value: DaVinciCRDTestKit::CRDClientOptions::US_CORE_7) + ]) + end + + it 'passes with valid user-level resource scopes' do + create_hook_request(scope: resource_scopes(us_core_6_7_resources, level: 'user')) + result = run(test) + expect(result.result).to eq('pass') + end + end + + describe 'when a crd_test_group is configured' do + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'appointment-book', crd_test_group: 'some-group' }) + end + end + + let(:test_session) do + repo_create(:test_session, test_suite_id: suite_id, suite_options: [ + Inferno::DSL::SuiteOption.new(id: :us_core_version, + value: DaVinciCRDTestKit::CRDClientOptions::US_CORE_3) + ]) + end + + it 'only loads requests tagged with both the hook name and group tag' do + create_hook_request(scope: 'invalid-scopes', tags: ['appointment-book']) + create_hook_request(scope: resource_scopes(us_core_3_resources), tags: ['appointment-book', 'some-group']) + result = run(test) + expect(result.result).to eq('pass') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_prefetch_complete_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_prefetch_complete_test_spec.rb new file mode 100644 index 00000000..64e5e32a --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_prefetch_complete_test_spec.rb @@ -0,0 +1,233 @@ +RSpec.describe DaVinciCRDTestKit::V221::HookRequestPrefetchCompleteTest do + let(:suite_id) { 'crd_client' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } + let(:order_sign_url) { "#{base_url}/cds-services/order-sign-service" } + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'order-sign' }) + end + end + + let(:order_sign_request) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json'))) + end + let(:crd_patient_example) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'crd_patient_example.json'))) + end + + def store_hook_request(hook_type, url: order_sign_url, body: nil, status: 200) + repo_create( + :request, + direction: 'incoming', + url:, + result:, + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + status:, + tags: [hook_type] + ) + end + + def entity_result_message(runnable) + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first.messages.map(&:message).join(' ') + end + + before do + allow_any_instance_of(DaVinciCRDTestKit::PrefetchCompletenessChecker) + .to receive(:hook_prefetch_templates).and_return({ 'patient' => 'Patient/{{context.patientId}}' }) + end + + it 'skips when no hook requests have been received' do + expect(run(test).result).to eq('skip') + end + + it 'passes when prefetch is valid' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', body: order_sign_request) + expect(run(test).result).to eq('pass') + end + + it 'fails and surfaces PrefetchCompletenessChecker errors as test messages' do + store_hook_request('order-sign', body: order_sign_request) + results = run(test) + expect(results.result).to eq('fail') + expect(entity_result_message(test)).to include('No prefetch data provided') + end + + it 'processes multiple requests independently with correct indices' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', body: order_sign_request) + crd_patient_example['id'] = 'wrong' + store_hook_request('order-sign', body: order_sign_request) + results = run(test) + expect(results.result).to eq('fail') + expect(entity_result_message(test)).to include('(Request 2)') + end + + describe 'services file selection based on request URL' do + let(:subset_url) do + "#{Inferno::Application['base_url']}/custom/crd_client/prefetch-subset/cds-services/order-sign-subset" + end + + it 'uses the standard services file for cds-services endpoint requests' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', body: order_sign_request) + allow(DaVinciCRDTestKit::PrefetchCompletenessChecker).to receive(:new).and_call_original + run(test) + expect(DaVinciCRDTestKit::PrefetchCompletenessChecker).to have_received(:new) + .with(anything, anything, a_string_including('cds-services-v221.json')) + end + + it 'uses the prefetch-subset services file for prefetch-subset endpoint requests' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', url: subset_url, body: order_sign_request) + allow(DaVinciCRDTestKit::PrefetchCompletenessChecker).to receive(:new).and_call_original + run(test) + expect(DaVinciCRDTestKit::PrefetchCompletenessChecker).to have_received(:new) + .with(anything, anything, a_string_including('cds-services-prefetch-subset-v221.json')) + end + + it 'selects the correct file independently for each request when both endpoint types are present' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', body: order_sign_request) + store_hook_request('order-sign', url: subset_url, body: order_sign_request) + allow(DaVinciCRDTestKit::PrefetchCompletenessChecker).to receive(:new).and_call_original + run(test) + expect(DaVinciCRDTestKit::PrefetchCompletenessChecker).to have_received(:new) + .with(anything, 0, a_string_including('cds-services-v221.json')) + expect(DaVinciCRDTestKit::PrefetchCompletenessChecker).to have_received(:new) + .with(anything, 1, a_string_including('cds-services-prefetch-subset-v221.json')) + end + end + + describe 'demonstrates_fhirpath_collection_as_comma_delimited_string output' do + let(:id_search_template) { { 'patient' => 'Patient?_id={{context.patientId|context.secondPatientId}}' } } + let(:crd_patient_example_bundle) do + { 'resourceType' => 'Bundle', 'entry' => [{ 'resource' => crd_patient_example }] } + end + + it 'does not set the output when no request demonstrates collection behavior' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', body: order_sign_request) + result = run(test) + expect(result.result).to eq('pass') + output = result.outputs.find { |o| o['name'] == 'demonstrates_fhirpath_collection_as_comma_delimited_string' } + expect(output&.dig('value')).to be_blank + end + + it 'sets the output to true when a request demonstrates collection behavior' do + allow_any_instance_of(DaVinciCRDTestKit::PrefetchCompletenessChecker) + .to receive(:hook_prefetch_templates).and_return(id_search_template) + order_sign_request['context']['secondPatientId'] = 'other' + order_sign_request['prefetch'] = { 'patient' => { + 'resourceType' => 'Bundle', + 'entry' => [ + { 'resource' => crd_patient_example }, + { 'resource' => crd_patient_example.merge('id' => 'other') } + ] + } } + store_hook_request('order-sign', body: order_sign_request) + result = run(test) + expect(result.result).to eq('pass') + output = result.outputs.find { |o| o['name'] == 'demonstrates_fhirpath_collection_as_comma_delimited_string' } + expect(output['value']).to eq('true') + end + + it 'sets the output to true when any one of multiple requests demonstrates collection behavior' do + allow_any_instance_of(DaVinciCRDTestKit::PrefetchCompletenessChecker) + .to receive(:hook_prefetch_templates) + .and_return({ 'patient' => 'Patient?_id={{context.patientId|context.secondPatientId}}' }) + + order_sign_request['prefetch'] = { 'patient' => crd_patient_example_bundle } + store_hook_request('order-sign', body: order_sign_request) + + second_request = JSON.parse(order_sign_request.to_json) + second_request['context']['secondPatientId'] = 'other' + second_request['prefetch'] = { 'patient' => { + 'resourceType' => 'Bundle', + 'entry' => [ + { 'resource' => crd_patient_example }, + { 'resource' => crd_patient_example.merge('id' => 'other') } + ] + } } + store_hook_request('order-sign', body: second_request) + + result = run(test) + expect(result.result).to eq('pass') + output = result.outputs.find { |o| o['name'] == 'demonstrates_fhirpath_collection_as_comma_delimited_string' } + expect(output['value']).to eq('true') + end + end + + describe 'demonstrates_prefetch_subset_distinct_from_complete output' do + let(:subset_url) do + "#{Inferno::Application['base_url']}/custom/crd_client/prefetch-subset/cds-services/order-sign-subset" + end + + it 'does not set the output when the primary (subset) check fails' do + store_hook_request('order-sign', url: subset_url, body: order_sign_request) + result = run(test) + expect(result.result).to eq('fail') + output = result.outputs.find { |o| o['name'] == 'demonstrates_prefetch_subset_distinct_from_complete' } + expect(output&.dig('value')).to be_blank + end + + it 'does not set the output when data sets are not distinct' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', url: subset_url, body: order_sign_request) + allow_any_instance_of(DaVinciCRDTestKit::PrefetchCompletenessChecker) + .to receive(:data_set_different_with_alternate_service?).and_return(false) + result = run(test) + expect(result.result).to eq('pass') + output = result.outputs.find { |o| o['name'] == 'demonstrates_prefetch_subset_distinct_from_complete' } + expect(output&.dig('value')).to be_blank + end + + it 'sets the output when the primary check passes and data sets are distinct' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', url: subset_url, body: order_sign_request) + allow_any_instance_of(DaVinciCRDTestKit::PrefetchCompletenessChecker) + .to receive(:data_set_different_with_alternate_service?).and_return(true) + result = run(test) + expect(result.result).to eq('pass') + output = result.outputs.find { |o| o['name'] == 'demonstrates_prefetch_subset_distinct_from_complete' } + expect(output['value']).to eq('true') + end + end + + describe 'demonstrates_prefetch_complete_distinct_from_subset output' do + it 'does not set the output when the primary (complete) check fails' do + store_hook_request('order-sign', body: order_sign_request) + result = run(test) + expect(result.result).to eq('fail') + output = result.outputs.find { |o| o['name'] == 'demonstrates_prefetch_complete_distinct_from_subset' } + expect(output&.dig('value')).to be_blank + end + + it 'does not set the output when data sets are not distinct' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', body: order_sign_request) + allow_any_instance_of(DaVinciCRDTestKit::PrefetchCompletenessChecker) + .to receive(:data_set_different_with_alternate_service?).and_return(false) + result = run(test) + expect(result.result).to eq('pass') + output = result.outputs.find { |o| o['name'] == 'demonstrates_prefetch_complete_distinct_from_subset' } + expect(output&.dig('value')).to be_blank + end + + it 'sets the output when the primary check passes and data sets are distinct' do + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', body: order_sign_request) + allow_any_instance_of(DaVinciCRDTestKit::PrefetchCompletenessChecker) + .to receive(:data_set_different_with_alternate_service?).and_return(true) + result = run(test) + expect(result.result).to eq('pass') + output = result.outputs.find { |o| o['name'] == 'demonstrates_prefetch_complete_distinct_from_subset' } + expect(output['value']).to eq('true') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_prefetch_profiles_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_prefetch_profiles_test_spec.rb new file mode 100644 index 00000000..d7633862 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_prefetch_profiles_test_spec.rb @@ -0,0 +1,330 @@ +RSpec.describe DaVinciCRDTestKit::V221::HookRequestPrefetchProfilesTest do + let(:suite_id) { 'crd_client' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:example_client_url) { 'https://cds.example.org' } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } + let(:order_sign_url) { "#{base_url}/cds-services/order-sign-service" } + let(:test) do + Class.new(described_class) do + fhir_resource_validator do + url ENV.fetch('FHIR_RESOURCE_VALIDATOR_URL', nil) + + cli_context do + txServer nil + displayWarnings true + disableDefaultResourceFetcher true + end + + igs('hl7.fhir.us.davinci-crd', 'hl7.fhir.us.core') + end + + config( + options: { hook_name: 'order-sign' } + ) + end + end + + let(:order_sign_request) do + JSON.parse( + File.read(File.join( + __dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json' + )) + ) + end + let(:crd_patient_example) do + JSON.parse( + File.read(File.join( + __dir__, '..', '..', 'fixtures', 'crd_patient_example.json' + )) + ) + end + let(:crd_practitioner_example) do + JSON.parse( + File.read(File.join( + __dir__, '..', '..', 'fixtures', 'crd_practitioner_example.json' + )) + ) + end + let(:crd_example_bundle) do + { 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => crd_patient_example }, { 'resource' => crd_practitioner_example }] } + end + let(:operation_outcome_success) do + { + outcomes: [{ + issues: [] + }], + sessionId: 'b8cf5547-1dc7-4714-a797-dc2347b93fe2' + } + end + + let(:operation_outcome_failure) do + { + outcomes: [{ + issues: [{ + level: 'ERROR', + message: 'Resource does not conform to profile' + }] + }], + sessionId: 'b8cf5547-1dc7-4714-a797-dc2347b93fe2' + } + end + + let(:operation_outcome_warning) do + { + outcomes: [{ + issues: [ + { + level: 'WARNING', + message: 'Resource has a potential issue' + }, + { + level: 'INFORMATION', + message: 'For your information' + } + ] + }], + sessionId: 'b8cf5547-1dc7-4714-a797-dc2347b93fe2' + } + end + + def store_hook_request(hook_type, url: order_sign_url, body: nil, status: 200, headers: nil, auth_header: nil) + if auth_header.present? + headers ||= [ + { + type: 'request', + name: 'Authorization', + value: auth_header + } + ] + end + repo_create( + :request, + direction: 'incoming', + url:, + result:, + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + status:, + headers:, + tags: [hook_type] + ) + end + + def entity_result_message_text(runnable) + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + .map(&:message) + .join(' ') + end + + def entity_result_messages(runnable) + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + describe 'when validating a single resource' do + it 'passes if validation returns no messages' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_success.to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(0) + expect(validation_request).to have_been_made.once + end + + it 'passes if validation returns only info and warning messages' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_warning.to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(2) + expect(entity_result_message_text(test)) + .to eq('(Request 1) Prefetch Template \'patient\' validation issue - ' \ + 'Patient/example: unknown: Resource has a potential issue ' \ + '(Request 1) Prefetch Template \'patient\' validation issue - ' \ + 'Patient/example: unknown: For your information') + expect(validation_request).to have_been_made.once + end + + it 'fails if validation returns an error message' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_failure.to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('fail') + expect(entity_result_message_text(test)) + .to eq('(Request 1) Prefetch Template \'patient\' validation issue - ' \ + 'Patient/example: unknown: Resource does not conform to profile') + expect(validation_request).to have_been_made.once + end + + it 'does nothing (passes) if the contents is not a FHIR resource (validated elsewhere)' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_success.to_json) + + order_sign_request['prefetch'] = { 'patient' => { 'not' => 'FHIR' } } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(0) + expect(validation_request).to_not have_been_made + end + + it 'does nothing (passes) if there is no associated CRD profile (validated elsewhere)' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_success.to_json) + + order_sign_request['prefetch'] = { 'patient' => { 'resourceType' => 'StructureDefinition' } } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(0) + expect(validation_request).to_not have_been_made + end + end + + describe 'when validating a Bundle' do + it 'passes if all entry validations returns no messages' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_success.to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_example_bundle } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(0) + expect(validation_request).to have_been_made.times(2) + end + + it 'passes if all entry validations returns only info and warning messages' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_warning.to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_example_bundle } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(4) + expect(entity_result_message_text(test)) + .to eq('(Request 1) Prefetch Template \'patient\' Bundle entry 1 validation issue - ' \ + 'Patient/example: unknown: Resource has a potential issue ' \ + '(Request 1) Prefetch Template \'patient\' Bundle entry 1 validation issue - ' \ + 'Patient/example: unknown: For your information ' \ + '(Request 1) Prefetch Template \'patient\' Bundle entry 2 validation issue - ' \ + 'Practitioner/example: unknown: Resource has a potential issue ' \ + '(Request 1) Prefetch Template \'patient\' Bundle entry 2 validation issue - ' \ + 'Practitioner/example: unknown: For your information') + expect(validation_request).to have_been_made.times(2) + end + + it 'fails if one entry validation returns an error message' do + validation_request_patient = stub_request(:post, validation_url) + .with(body: /\\"resourceType\\":\\"Patient\\"/) + .to_return(status: 200, body: operation_outcome_success.to_json) + validation_request_practitioner = stub_request(:post, validation_url) + .with(body: /\\"resourceType\\":\\"Practitioner\\"/) + .to_return(status: 200, body: operation_outcome_failure.to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_example_bundle } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('fail') + expect(entity_result_messages(test).size).to eq(1) + expect(entity_result_message_text(test)) + .to eq('(Request 1) Prefetch Template \'patient\' Bundle entry 2 validation issue - ' \ + 'Practitioner/example: unknown: Resource does not conform to profile') + expect(validation_request_patient).to have_been_made.once + expect(validation_request_practitioner).to have_been_made.once + end + + it 'does nothing (passes) if all entry contents are not FHIR resources (validated elsewhere)' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_success.to_json) + + order_sign_request['prefetch'] = + { 'patient' => { 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => { 'not' => 'FHIR' } }, + { 'resource' => { 'also_not' => 'FHIR' } }] } } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(0) + expect(validation_request).to_not have_been_made + end + + it 'does nothing (passes) if no entry contents have an associated CRD profile (validated elsewhere)' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_success.to_json) + + order_sign_request['prefetch'] = + { 'patient' => { 'resourceType' => 'Bundle', + 'entry' => [{ 'resource' => { 'resourceType' => 'StructureDefinition' } }, + { 'resource' => { 'resourceType' => 'StructureDefinition' } }] } } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(0) + expect(validation_request).to_not have_been_made + end + end + + describe 'when multiple requests' do + it 'includes a prefix with the request number on messages' do + validation_request_patient = stub_request(:post, validation_url) + .with(body: /\\"resourceType\\":\\"Patient\\"/) + .to_return(status: 200, body: operation_outcome_success.to_json) + validation_request_practitioner = stub_request(:post, validation_url) + .with(body: /\\"resourceType\\":\\"Practitioner\\"/) + .to_return(status: 200, body: operation_outcome_failure.to_json) + + order_sign_request['prefetch'] = { 'patient' => crd_patient_example } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + order_sign_request['prefetch'] = { 'practitioner' => crd_practitioner_example } + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('fail') + expect(entity_result_message_text(test)) + .to eq('(Request 2) Prefetch Template \'practitioner\' validation issue - ' \ + 'Practitioner/example: unknown: Resource does not conform to profile') + expect(validation_request_patient).to have_been_made.once + expect(validation_request_practitioner).to have_been_made.once + end + + it 'passes if no requests have prefetch data (validated elsewhere)' do + validation_request = stub_request(:post, validation_url) + .to_return(status: 200, body: operation_outcome_success.to_json) + + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + store_hook_request('order-sign', url: order_sign_url, body: order_sign_request) + results = run(test) + + expect(results.result).to eq('pass') + expect(entity_result_messages(test).size).to eq(0) + expect(validation_request).to_not have_been_made + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_requested_version_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_requested_version_test_spec.rb new file mode 100644 index 00000000..6f74ccd3 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_requested_version_test_spec.rb @@ -0,0 +1,127 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_requested_version_test' + +RSpec.describe DaVinciCRDTestKit::V221::HookRequestRequestedVersionTest do + let(:suite_id) { 'crd_client_v221' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:test) do + Class.new(described_class) do + config( + options: { hook_name: 'appointment-book' } + ) + end + end + + let(:base_request_body) do + JSON.parse(File.read(File.join(__dir__, '..', '..', 'fixtures', 'appointment_book_hook_request.json'))) + end + + let(:valid_request_body) do + base_request_body.merge('extension' => { 'davinci-crd.requestedVersion' => '2.2' }) + end + + def create_hook_request(body:, tags: ['appointment-book']) + repo_create( + :request, + direction: 'incoming', + url: 'https://example.com/cds-services/appointment-book-service', + result:, + test_session_id: test_session.id, + request_body: body.is_a?(Hash) ? body.to_json : body, + status: 200, + headers: [], + tags: + ) + end + + def entity_result_message(index = 0) + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages[index] + end + + it 'passes when the extension has the correct version' do + allow(test).to receive(:suite).and_return(suite) + create_hook_request(body: valid_request_body) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'passes with multiple valid requests' do + allow(test).to receive(:suite).and_return(suite) + create_hook_request(body: valid_request_body) + create_hook_request(body: valid_request_body) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'skips when no requests are found' do + allow(test).to receive(:suite).and_return(suite) + result = run(test) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No appointment-book hook requests received/) + end + + it 'fails when the extension is missing' do + allow(test).to receive(:suite).and_return(suite) + create_hook_request(body: base_request_body) + result = run(test) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Required extension 'davinci-crd.requestedVersion' is not present/) + end + + it 'fails when the extension value is not a String' do + allow(test).to receive(:suite).and_return(suite) + body = base_request_body.merge('extension' => { 'davinci-crd.requestedVersion' => 2.2 }) + create_hook_request(body:) + result = run(test) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/expected a String, got Float/) + end + + it 'fails when the extension value is the wrong version string' do + allow(test).to receive(:suite).and_return(suite) + body = base_request_body.merge('extension' => { 'davinci-crd.requestedVersion' => '2.0' }) + create_hook_request(body:) + result = run(test) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/expected '2.2', got '2.0'/) + end + + it 'fails when one of multiple requests is invalid, reporting the correct request number' do + allow(test).to receive(:suite).and_return(suite) + create_hook_request(body: valid_request_body) + create_hook_request(body: base_request_body) + result = run(test) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/\(Request 2\)/) + end + + it 'fails when a request body is not valid JSON' do + allow(test).to receive(:suite).and_return(suite) + create_hook_request(body: 'not valid json') + result = run(test) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Request body contains invalid JSON./) + end + + describe 'when a crd_test_group is configured' do + let(:test) do + Class.new(described_class) do + config( + options: { hook_name: 'appointment-book', crd_test_group: 'some-group' } + ) + end + end + + it 'only loads requests that have both the hook tag and the group tag' do + allow(test).to receive(:suite).and_return(suite) + create_hook_request(body: base_request_body, tags: ['appointment-book']) + create_hook_request(body: valid_request_body, tags: ['appointment-book', 'some-group']) + result = run(test) + expect(result.result).to eq('pass') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_request_secured_transport_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_request_secured_transport_test_spec.rb new file mode 100644 index 00000000..b26445d8 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_request_secured_transport_test_spec.rb @@ -0,0 +1,95 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/verify_request/hook_request_secured_transport_test' + +RSpec.describe DaVinciCRDTestKit::V221::HookRequestSecuredTransportTest do + let(:suite_id) { 'crd_client_v221' } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'appointment-book' }) + end + end + + def create_hook_request(url: 'https://example.com/cds-services/appointment-book-service', + fhir_server: 'https://fhir.example.com', + tags: ['appointment-book']) + body = { + 'hookInstance' => 'd1577c69-dfbe-44ad-ba6d-3e05e953b2ea', + 'hook' => 'appointment-book', + 'fhirServer' => fhir_server + }.compact + repo_create( + :request, + direction: 'incoming', + url:, + result:, + test_session_id: test_session.id, + request_body: body.to_json, + status: 200, + tags: + ) + end + + def result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]) + .first + .messages + end + + it 'skips when no hook requests have been received' do + result = run(test) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No appointment-book hook requests received/) + end + + it 'passes when the request URL and fhirServer both use https' do + create_hook_request + result = run(test) + expect(result.result).to eq('pass') + end + + it 'passes when fhirServer is absent' do + create_hook_request(fhir_server: nil) + result = run(test) + expect(result.result).to eq('pass') + end + + it 'fails when the request URL uses http' do + create_hook_request(url: 'http://example.com/cds-services/appointment-book-service') + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)) + .to include(match(/Inferno's simulated CRD server must use the https protocol/)) + end + + it 'fails when fhirServer uses http' do + create_hook_request(fhir_server: 'http://fhir.example.com') + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/fhirServer.*must use the https protocol/)) + end + + it 'reports the request number when one of multiple requests fails' do + create_hook_request + create_hook_request(fhir_server: 'http://fhir.example.com') + result = run(test) + expect(result.result).to eq('fail') + expect(result_messages.map(&:message)).to include(match(/\(Request 2\).*fhirServer/)) + end + + describe 'when a crd_test_group is configured' do + let(:test) do + Class.new(described_class) do + config(options: { hook_name: 'appointment-book', crd_test_group: 'some-group' }) + end + end + + it 'only loads requests tagged with both the hook name and group tag' do + create_hook_request(url: 'http://example.com/insecure', tags: ['appointment-book']) + create_hook_request(tags: ['appointment-book', 'some-group']) + result = run(test) + expect(result.result).to eq('pass') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/hook_response_support_coverage_information_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/hook_response_support_coverage_information_test_spec.rb new file mode 100644 index 00000000..1f40d002 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/hook_response_support_coverage_information_test_spec.rb @@ -0,0 +1,54 @@ +RSpec.describe DaVinciCRDTestKit::V221::ClientHookResponseSupportCoverageInformationTest do + let(:suite_id) { 'crd_client_v221' } + let(:runnable) { described_class } + + let(:order_sign_hook_request) do + File.read(File.join( + __dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json' + )) + end + let(:order_sign_hook_response_with_coverage_info) do + { + cards: [], + systemActions: [JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', + 'coverage_info_system_action_complete.json' + )))] + }.to_json + end + + describe 'When checking coverage information actions' do + it 'skips when no hook requests have been received' do + result = run(runnable) + expect(result.result).to eq('skip') + expect(result.result_message).to match(/No.*hook requests received/) + end + + it 'fails when no coverage information actions are found' do + allow_any_instance_of(described_class) + .to receive(:load_hook_requests).and_return( + [Inferno::Entities::Request.new( + request_body: order_sign_hook_request, + response_body: { cards: [], systemActions: [] }.to_json + )] + ) + + result = run(runnable) + expect(result.result).to eq('fail') + expect(result.result_message).to match(/Support for the Coverage Information response type not demonstrated/) + end + + it 'passes when a coverage information action is present' do + allow_any_instance_of(described_class) + .to receive(:load_hook_requests).and_return( + [Inferno::Entities::Request.new( + request_body: order_sign_hook_request, + response_body: order_sign_hook_response_with_coverage_info + )] + ) + + result = run(runnable) + expect(result.result).to eq('pass') + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/inferno_response_validation_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/inferno_response_validation_test_spec.rb new file mode 100644 index 00000000..e90131ef --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/inferno_response_validation_test_spec.rb @@ -0,0 +1,43 @@ +RSpec.describe DaVinciCRDTestKit::V221::InfernoResponseValidationTest do + let(:suite_id) { 'crd_client' } + let(:order_sign_test) do + Class.new(described_class) do + config({ options: { hook_name: DaVinciCRDTestKit::ORDER_SIGN_TAG } }) + + def conforms_to_logical_model?(*_args, **_kwargs) + true + end + end + end + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + def store_request(response_body, tags, status: 200) + repo_create( + :request, + direction: 'incoming', + test_session_id: test_session.id, + result:, + response_body:, + tags:, + status: + ) + end + + def first_error_message + results_repo.current_results_for_test_session_and_runnables(test_session.id, [order_sign_test]) + .first + .messages.select { |message| message.type == 'error' } + .first + end + + it 'fails if a card summary is more than 140 characters' do + cards = [{ summary: SecureRandom.alphanumeric(150), indicator: 'info', source: { label: 'Inferno' } }] + store_request({ cards: }.to_json, [DaVinciCRDTestKit::ORDER_SIGN_TAG]) + + result = run(order_sign_test) + + expect(result.result).to eq('fail') + expect(first_error_message.message).to match(/`summary` is over the 140-character limit/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/order_dispatch_coverage_information_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/order_dispatch_coverage_information_test_spec.rb new file mode 100644 index 00000000..12d4758f --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/order_dispatch_coverage_information_test_spec.rb @@ -0,0 +1,143 @@ +RSpec.describe DaVinciCRDTestKit::V221::OrderDispatchCoverageInformationTest do + let(:suite_id) { 'crd_server_v221' } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:runnable) { described_class } + let(:service_request_hash) { { resourceType: 'ServiceRequest', id: 'abc123' } } + let(:service_request) { FHIR::ServiceRequest.new(service_request_hash) } + let(:service_request_with_coverage_info) do + service_request_hash.merge( + extension: [ + { url: 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' } + ] + ) + end + + before do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-dispatch') + end + + it 'passes if every successful response contains the coverage information system action' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: service_request + } + ] + ) + + request_body = { context: { dispatchedOrders: [service_request.to_reference.reference] } }.to_json + response_body = { + systemActions: [ + { + type: 'update', + resource: service_request_with_coverage_info + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::ORDER_DISPATCH_TAG], + status: 200 + ) + result = run(runnable, { invoked_hook: 'appointment-book', mock_ehr_bundle: bundle.to_json }) + expect(result.result).to eq('pass'), result.result_message + end + + it 'passes if a dispatchedOrder is in the prefetch' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: service_request + } + ] + ) + + medication_request = FHIR::MedicationRequest.new(id: 'def456') + + request_body = { + context: { + dispatchedOrders: [ + service_request.to_reference.reference, + medication_request.to_reference.reference + ] + }, + prefetch: { + bundle:, + resource: medication_request + } + }.to_json + + response_body = { + systemActions: [ + { + type: 'update', + resource: service_request_with_coverage_info + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::ORDER_DISPATCH_TAG], + status: 200 + ) + + result = + run( + runnable, + { + invoked_hook: 'appointment-book', + mock_ehr_bundle: '{"resourceType":"Bundle","type":"collection"}' + } + ) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'skips if not all referenced orders can be found' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: service_request + } + ] + ) + + request_body = + { context: { dispatchedOrders: [service_request.to_reference.reference, 'ServiceRequest/badid'] } }.to_json + response_body = { + systemActions: [ + { + type: 'update', + resource: service_request_with_coverage_info + } + ] + }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body:, + tags: [DaVinciCRDTestKit::ORDER_DISPATCH_TAG], + status: 200 + ) + result = run(runnable, { invoked_hook: 'appointment-book', mock_ehr_bundle: bundle.to_json }) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to match(/are not included in the Mock EHR Data input/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/retrieve_jwks_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/retrieve_jwks_test_spec.rb new file mode 100644 index 00000000..1ca5e019 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/retrieve_jwks_test_spec.rb @@ -0,0 +1,186 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/auth/retrieve_jwks_test' + +RSpec.describe DaVinciCRDTestKit::V221::RetrieveJWKSTest do + let(:suite_id) { 'crd_client_v221' } + let(:test) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:session_data_repo) { Inferno::Repositories::SessionData.new } + + let(:example_client_url) { 'https://cds.example.org' } + let(:example_client_jwks_url) { "#{example_client_url}/jwks.json" } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } + let(:jwks_hash) { JSON.parse(DaVinciCRDTestKit::JWKS.jwks_json) } + let(:jwk) { jwks_hash['keys'].find { |key| key['alg'] == 'RS384' } } + let(:token_header) do + { + alg: 'RS384', + kid: jwk['kid'], + typ: 'JWT', + jku: example_client_jwks_url + } + end + + let(:jwks_hash_no_keys) { { keys: [] } } + let(:invalid_jwks_hash) do + { + keys: jwks_hash['keys'].each { |key| key['kid'] = 1234 } + } + end + let(:jwks_hash_dup_kids) do + { + keys: jwks_hash['keys'].each { |key| key['kid'] = jwk['kid'] } + } + end + let(:jwks_hash_no_kids) { { keys: jwks_hash['keys'].map { |key| key.except('kid') } } } + + def entity_result_message + results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]) + .first + .messages + .first + end + + def session_output(name) + JSON.parse(session_data_repo.load(test_session_id: test_session.id, name:)) + end + + it 'passes if it receives a valid JWT Authorization header with jku field populated' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json], cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('pass') + expect(jwks_request).to have_been_made + expect(session_output(:crd_jwks_keys_json).length).to eq(1) + expect(session_output(:crd_jwks_keys_json).first).to_not be_nil + end + + it 'passes if it receives multiple valid JWT Authorization headers with jku field populated' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json, token_header.to_json], + cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('pass') + expect(jwks_request).to have_been_made.times(2) + expect(session_output(:crd_jwks_keys_json).length).to eq(2) + end + + it 'passes and skips nil entries in auth_token_headers_json' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash.to_json) + + result = run(test, auth_token_headers_json: [nil, token_header.to_json].to_json, + cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('pass') + expect(jwks_request).to have_been_made.once + expect(session_output(:crd_jwks_keys_json)).to eq([nil, JSON.parse(jwks_hash.to_json)['keys'].to_json]) + end + + it 'fails if it receives at least 1 invalid JWT Authorization headers' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash.to_json).then + .to_return(status: 404, body: jwks_hash.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json, token_header.to_json], + cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match( + /\(Request 2\) Unexpected response status: expected 200, but received/ + ) + expect(jwks_request).to have_been_made.times(2) + expect(session_output(:crd_jwks_keys_json).length).to eq(2) + expect(session_output(:crd_jwks_keys_json).last).to be_nil + end + + it 'passes if it receives a valid jwk_set input' do + token_header_no_jku = token_header.except(:jku) + + result = run(test, auth_token_headers_json: [token_header_no_jku.to_json], cds_jwk_set: jwks_hash.to_json) + expect(result.result).to eq('pass') + end + + it 'skips if jku field is not set, and no jwk_set is provided' do + token_header_no_jku = token_header.except(:jku) + + result = run(test, auth_token_headers_json: [token_header_no_jku.to_json]) + expect(result.result).to eq('skip') + expect(result.result_message).to match("JWK Set must be inputted if the client's JWK Set is not available") + end + + it 'does not skip when all headers have jku even if no jwk_set is provided' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json]) + expect(result.result).to eq('pass') + expect(jwks_request).to have_been_made + end + + it 'fails if it receives non 200 response' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 404, body: jwks_hash.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json], cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Unexpected response status: expected 200, but received/) + expect(jwks_request).to have_been_made + expect(session_output(:crd_jwks_keys_json)).to eq([nil]) + end + + it 'fails if jwks returned is not a valid json' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: nil) + + result = run(test, auth_token_headers_json: [token_header.to_json], cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Fetched jku url response contains invalid JSON\./) + expect(jwks_request).to have_been_made + expect(session_output(:crd_jwks_keys_json)).to eq([nil]) + end + + it 'fails if jwks returned is not an array' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwk.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json], cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/JWKS `keys` field must be an array/) + expect(jwks_request).to have_been_made + expect(session_output(:crd_jwks_keys_json)).to eq([nil]) + end + + it 'fails if jwks returned has no keys' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash_no_keys.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json], cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/The JWK set returned contains no public keys/) + expect(jwks_request).to have_been_made + expect(session_output(:crd_jwks_keys_json)).to eq([nil]) + end + + it 'fails if jwks returned does not contain kid field' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash_no_kids.to_json) + + result = run(test, auth_token_headers_json: [token_header.to_json], cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match( + /`kid` field must be present in each key if JWKS contains multiple keys/ + ) + expect(jwks_request).to have_been_made + expect(session_output(:crd_jwks_keys_json)).to eq([nil]) + end + + it 'fails if jwks returned contains duplicate kid fields' do + jwks_request = stub_request(:get, example_client_jwks_url) + .to_return(status: 200, body: jwks_hash_dup_kids.to_json) + result = run(test, auth_token_headers_json: [token_header.to_json], cds_jwk_set: example_client_jwks_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/`kid` must be unique within the client's JWK Set\./) + expect(jwks_request).to have_been_made + expect(session_output(:crd_jwks_keys_json)).to eq([nil]) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/supported_us_core_versions_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/supported_us_core_versions_test_spec.rb new file mode 100644 index 00000000..15540e12 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/supported_us_core_versions_test_spec.rb @@ -0,0 +1,196 @@ +RSpec.describe DaVinciCRDTestKit::V221::SupportedUSCoreVersionsTest do + let(:suite_id) { 'crd_server' } + let(:runnable) { described_class } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:results_repo) { Inferno::Repositories::Results.new } + + let(:patient_resource) do + { + resourceType: 'Patient', + id: 'example-patient' + } + end + + let(:service_request_resource) do + { + resourceType: 'ServiceRequest', + id: 'example-service-request' + } + end + + def create_hook_request(body:, tags:, status: 200) + repo_create( + :request, + result:, + tags:, + status:, + request_body: body.to_json + ) + end + + def result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + .map(&:message) + end + + it 'skips when no hook requests were received' do + test_result = run(runnable) + + expect(test_result.result).to eq('skip') + expect(test_result.result_message).to match(/No requests were made in a previous test as expected/) + end + + it 'skips when successful hook requests contain no embedded FHIR resources' do + create_hook_request( + body: { + hook: 'order-sign', + hookInstance: SecureRandom.uuid, + context: { + patientId: 'example-patient' + } + }, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + + test_result = run(runnable) + + expect(test_result.result).to eq('skip') + expect(test_result.result_message).to match(/No embedded FHIR resources were found/) + end + + it 'passes when a single successful hook request demonstrates all required US Core versions' do + create_hook_request( + body: { + hook: 'order-sign', + hookInstance: SecureRandom.uuid, + context: { + draftOrders: { + resourceType: 'Bundle', + type: 'collection', + entry: [ + { + resource: service_request_resource + } + ] + } + }, + prefetch: { + patient: patient_resource + } + }, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + + allow_any_instance_of(runnable).to receive(:resource_is_valid?) do |_instance, resource:, profile_url:, **_kwargs| + case resource.resourceType + when 'Patient' + profile_url.include?('|3.1.1') || profile_url.include?('|6.1.0') + when 'ServiceRequest' + profile_url.include?('|7.0.0') + else + false + end + end + + test_result = run(runnable) + + expect(test_result.result).to eq('pass') + end + + it 'ignores unsuccessful hook requests when evaluating US Core version support' do + create_hook_request( + body: { + hook: 'order-sign', + hookInstance: SecureRandom.uuid, + prefetch: { + patient: patient_resource + } + }, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG], + status: 500 + ) + create_hook_request( + body: { + hook: 'order-sign', + hookInstance: SecureRandom.uuid, + context: { + draftOrders: { + resourceType: 'Bundle', + type: 'collection', + entry: [ + { + resource: service_request_resource + } + ] + } + }, + prefetch: { + patient: patient_resource + } + }, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG], + status: 200 + ) + + allow_any_instance_of(runnable).to receive(:resource_is_valid?) do |_instance, resource:, profile_url:, **_kwargs| + case resource.resourceType + when 'Patient' + profile_url.include?('|3.1.1') || profile_url.include?('|6.1.0') + when 'ServiceRequest' + profile_url.include?('|7.0.0') + else + false + end + end + + test_result = run(runnable) + + expect(test_result.result).to eq('pass') + end + + it 'fails when at least one required US Core version is not demonstrated' do + create_hook_request( + body: { + hook: 'order-sign', + hookInstance: SecureRandom.uuid, + prefetch: { + patient: patient_resource + } + }, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + + allow_any_instance_of(runnable).to receive(:resource_is_valid?) do |_instance, resource:, profile_url:, **_kwargs| + resource.resourceType == 'Patient' && ( + profile_url.include?('|3.1.1') || profile_url.include?('|6.1.0') + ) + end + + test_result = run(runnable) + + expect(test_result.result).to eq('fail') + expect(test_result.result_message).to eq('Support for one or more required US Core versions was not demonstrated.') + expect(result_messages).to include('Support for US Core 7.0.0 was not demonstrated.') + end + + it 'skips when all hook requests were unsuccessful' do + create_hook_request( + body: { + hook: 'order-sign', + hookInstance: SecureRandom.uuid, + prefetch: { + patient: patient_resource + } + }, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG], + status: 500 + ) + + test_result = run(runnable) + + expect(test_result.result).to eq('skip') + expect(test_result.result_message).to match(/All service requests were unsuccessful/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/token_header_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/token_header_test_spec.rb new file mode 100644 index 00000000..3dba9bb7 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/token_header_test_spec.rb @@ -0,0 +1,112 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/auth/token_header_test' + +RSpec.describe DaVinciCRDTestKit::V221::TokenHeaderTest do + let(:suite_id) { 'crd_client_v221' } + let(:test) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + + let(:example_client_url) { 'https://cds.example.org' } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client" } + let(:jwks_hash_keys) { JSON.parse(DaVinciCRDTestKit::JWKS.jwks_json)['keys'] } + let(:jwk) { jwks_hash_keys.find { |key| key['alg'] == 'RS384' } } + + let(:token_header) do + { + alg: 'RS384', + kid: jwk['kid'], + typ: 'JWT', + jku: "#{example_client_url}/jwks.json" + } + end + + def entity_result_message + results_repo.current_results_for_test_session_and_runnables(test_session.id, [test]) + .first + .messages + .first + end + + it 'passes if it receives a valid JWT Authorization header' do + result = run(test, auth_token_headers_json: [token_header.to_json], crd_jwks_keys_json: [jwks_hash_keys.to_json]) + expect(result.result).to eq('pass') + end + + it 'passes if it receives multiple requests with valid JWT Authorization headers' do + result = run(test, auth_token_headers_json: [token_header.to_json, token_header.to_json], + crd_jwks_keys_json: [jwks_hash_keys.to_json, jwks_hash_keys.to_json]) + expect(result.result).to eq('pass') + end + + it 'fails gracefully when crd_jwks_keys_json has a nil entry for a non-nil header' do + result = run(test, auth_token_headers_json: [token_header.to_json, token_header.to_json].to_json, + crd_jwks_keys_json: [nil, jwks_hash_keys.to_json].to_json) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/\(Request 1\) No JWKS keys available for this request/) + end + + it 'passes and skips nil entries in auth_token_headers_json' do + result = run(test, auth_token_headers_json: [nil, token_header.to_json].to_json, + crd_jwks_keys_json: [nil, jwks_hash_keys.to_json].to_json) + expect(result.result).to eq('pass') + end + + it 'fails if it receives at least 1 request with invalid JWT Authorization headers' do + invalid_token_header = token_header.except(:alg) + result = run(test, auth_token_headers_json: [token_header.to_json, invalid_token_header.to_json], + crd_jwks_keys_json: [jwks_hash_keys.to_json, jwks_hash_keys.to_json]) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/\(Request 2\) Token header must have the `alg` field/) + end + + it 'fails if it receives a JWT header without the `alg` field' do + invalid_token_header = token_header.except(:alg) + + result = run(test, auth_token_headers_json: [invalid_token_header.to_json], + crd_jwks_keys_json: [jwks_hash_keys.to_json]) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Token header must have the `alg` field/) + end + + it 'fails if it receives a JWT header with `alg` set to none' do + token_header[:alg] = 'none' + + result = run(test, auth_token_headers_json: [token_header.to_json], + crd_jwks_keys_json: [jwks_hash_keys.to_json]) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Token header `alg` field cannot be set to none/) + end + + it 'fails if it receives a JWT header without the `typ` field' do + invalid_token_header = token_header.except(:typ) + + result = run(test, auth_token_headers_json: [invalid_token_header.to_json], + crd_jwks_keys_json: [jwks_hash_keys.to_json]) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Token header must have the `typ` field/) + end + + it 'fails if it receives a JWT header with the `typ` field not set to JWT' do + token_header[:typ] = 'Bearer' + + result = run(test, auth_token_headers_json: [token_header.to_json], crd_jwks_keys_json: [jwks_hash_keys.to_json]) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Token header `typ` field must be set to 'JWT', instead was/) + end + + it 'fails if it receives a JWT header without the `kid` field' do + invalid_token_header = token_header.except(:kid) + + result = run(test, auth_token_headers_json: [invalid_token_header.to_json], + crd_jwks_keys_json: [jwks_hash_keys.to_json]) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Token header must have the `kid` field/) + end + + it 'fails if it receives a JWT header that does not contain a kid found in the jwks' do + token_header[:kid] = '12345' + + result = run(test, auth_token_headers_json: [token_header.to_json], crd_jwks_keys_json: [jwks_hash_keys.to_json]) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/JWKS did not contain a public key with an id of `12345`/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/token_payload_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/token_payload_test_spec.rb new file mode 100644 index 00000000..0b4bc542 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/token_payload_test_spec.rb @@ -0,0 +1,207 @@ +require_relative '../../../lib/davinci_crd_test_kit/client/v2.2.1/auth/token_payload_test' +require_relative '../../../lib/davinci_crd_test_kit/server/jwt_helper' + +RSpec.describe DaVinciCRDTestKit::V221::TokenPayloadTest do + let(:suite_id) { 'crd_client_v221' } + let(:jwt_helper) { Class.new(DaVinciCRDTestKit::JwtHelper) } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:runnable) { Inferno::Repositories::Tests.new.find('crd_v221_token_payload') } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:example_client_url) { 'https://cds.example.org' } + let(:base_url) { "#{Inferno::Application['base_url']}/custom/crd_client_v221" } + let(:appointment_book_url) { "#{base_url}/cds-services/appointment-book-service" } + + let(:jwks_hash) { JSON.parse(DaVinciCRDTestKit::JWKS.jwks_json) } + let(:jwk) { jwks_hash['keys'].find { |key| key['alg'] == 'RS384' } } + + let(:rsa_key) { OpenSSL::PKey::RSA.new(2048) } + let(:rsa_jwk) { JWT::JWK.new(rsa_key) } + let(:rsa_jwk_hash) { JSON.parse(rsa_jwk.to_json)['parameters'] } + + let(:token_header) do + { + alg: 'RS384', + kid: rsa_jwk['kid'], + typ: 'JWT', + jku: "#{example_client_url}/jwks.json" + } + end + + let(:token_payload) do + { + aud: appointment_book_url, + iss: example_client_url, + iat: Time.now.to_i, + exp: 5.minutes.from_now.to_i, + jti: SecureRandom.hex(32) + } + end + + def create_appointment_hook_request + repo_create( + :request, + name: 'appointment_book', + direction: 'incoming', + url: appointment_book_url, + test_session_id: test_session.id, + result:, + status: 200, + tags: ['appointment-book'] + ) + end + + def entity_result_message + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + .first + end + + describe 'CRD Appointment Book Token Payload' do + let(:test) do + Class.new(DaVinciCRDTestKit::V221::TokenPayloadTest) do + config( + options: { hook_name: 'appointment-book' } + ) + end + end + + it 'passes if it receives a valid JWT payload' do + create_appointment_hook_request + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, auth_tokens: [token], auth_tokens_jwk_json: [jwk.to_json], cds_jwt_iss: example_client_url) + expect(result.result).to eq('pass') + end + + it 'passes if it receives multiple valid JWT payloads' do + create_appointment_hook_request + create_appointment_hook_request + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, auth_tokens: [token, token], auth_tokens_jwk_json: [jwk.to_json, jwk.to_json], + cds_jwt_iss: example_client_url) + expect(result.result).to eq('pass') + end + + it 'passes and skips nil entries in auth_tokens_jwk_json' do + create_appointment_hook_request + create_appointment_hook_request + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, auth_tokens: [nil, token].to_json, auth_tokens_jwk_json: [nil, jwk.to_json].to_json, + cds_jwt_iss: example_client_url) + expect(result.result).to eq('pass') + end + + it 'fails if it receives at least 1 invalid JWT payload' do + create_appointment_hook_request + create_appointment_hook_request + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + invalid_token = jwt_helper.build( + aud: appointment_book_url, + iss: 'incorrect_iss.com', + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, auth_tokens: [token, invalid_token], auth_tokens_jwk_json: [jwk.to_json, jwk.to_json], + cds_jwt_iss: example_client_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/\(Request 2\) Token validation error: Invalid issuer./) + end + + it 'fails if it receives a JWT payload with an invalid `iss` field' do + create_appointment_hook_request + + token = jwt_helper.build( + aud: appointment_book_url, + iss: 'incorrect_iss.com', + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, auth_tokens: [token], auth_tokens_jwk_json: [jwk.to_json], cds_jwt_iss: example_client_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Token validation error: Invalid issuer./) + end + + it 'fails if it receives a JWT payload with an invalid `aud` field' do + create_appointment_hook_request + + token = jwt_helper.build( + aud: 'incorrect_aud.com', + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + result = run(test, auth_tokens: [token], auth_tokens_jwk_json: [jwk.to_json], cds_jwt_iss: example_client_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match( + /Token validation error: Invalid audience. Expected #{Regexp.escape(appointment_book_url)}/ + ) + end + + it 'fails if it receives a JWT Authorization header with invalid signature' do + create_appointment_hook_request + + token = jwt_helper.build( + aud: appointment_book_url, + iss: example_client_url, + jku: "#{example_client_url}/jwks.json", + encryption_method: 'RS384' + ) + + payload, header = jwt_helper.decode_jwt(token, jwks_hash) + token_invalid_key = JWT.encode payload, OpenSSL::PKey::RSA.new(2048), 'RS384', header + + result = run(test, auth_tokens: [token_invalid_key], auth_tokens_jwk_json: [jwk.to_json], + cds_jwt_iss: example_client_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/Token validation error: Signature verification failed/) + end + + it 'fails if it receives a JWT Authorization header with missing claims' do + create_appointment_hook_request + + rsa_jwk_hash['alg'] = 'RS384' + invalid_payload = token_payload.except(:exp).except(:exp) + + token_invalid_key = JWT.encode invalid_payload, rsa_key, 'RS384', token_header + + result = run(test, + auth_tokens: [token_invalid_key], + auth_tokens_jwk_json: [rsa_jwk_hash.to_json], + cds_jwt_iss: example_client_url) + expect(result.result).to eq('fail') + expect(entity_result_message.message).to match(/JWT payload missing required claims: `exp`/) + end + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/unknown_cds_hooks_elements_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/unknown_cds_hooks_elements_test_spec.rb new file mode 100644 index 00000000..a6634584 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/unknown_cds_hooks_elements_test_spec.rb @@ -0,0 +1,134 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_cds_hooks_elements_test' + +RSpec.describe DaVinciCRDTestKit::V221::UnknownCDSHooksElementsTest do + let(:suite_id) { 'crd_server_v221' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:service_endpoint) { 'http://example.com/cds-services/order-sign-service' } + let(:hook_request) do + JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json' + ))) + end + let(:coverage_info_action) do + { + 'type' => 'update', + 'description' => 'Added coverage information', + 'resource' => { + 'resourceType' => 'ServiceRequest', + 'id' => 'service-request-1', + 'status' => 'draft', + 'intent' => 'order', + 'extension' => [ + { + 'url' => DaVinciCRDTestKit::CardsIdentification::COVERAGE_INFO_EXT_URL + } + ] + } + } + end + let(:guideline_card) do + { + 'summary' => 'Guideline', + 'indicator' => 'info', + 'source' => { 'topic' => { 'code' => 'guideline' } } + } + end + let(:original_response) do + { + 'cards' => [guideline_card], + 'systemActions' => [coverage_info_action] + } + end + let(:filtered_response) do + { + 'cards' => [guideline_card], + 'systemActions' => [] + } + end + + def create_service_request( + body: original_response, + status: 200, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + repo_create( + :request, + direction: 'outgoing', + url: service_endpoint, + test_session_id: test_session.id, + request_body: unknown_cds_hooks_element_request_body.to_json, + response_body: body.to_json, + result:, + status:, + tags:, + headers: nil + ) + end + + def create_unknown_cds_hooks_element_request(**args) + create_service_request( + **args, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG, DaVinciCRDTestKit::UNKNOWN_ELEMENT_TAG] + ) + end + + def unknown_cds_hooks_element_request_body + hook_request.deep_dup.tap do |request_body| + request_body['hookInstance'] = SecureRandom.uuid + request_body['RANDOM_KEY'] = 'RANDOM_KEY' + end + end + + def entity_result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + before do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-sign') + end + + it 'passes when unknown cds hooks element responses include coverage-info' do + create_unknown_cds_hooks_element_request(body: original_response) + + result = run(runnable) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails if the unknown response does not contain coverage-info' do + create_unknown_cds_hooks_element_request(body: filtered_response) + + result = run(runnable) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/unknown CDS Hooks element were not valid/) + expect( + entity_result_messages.map(&:message).join(' ') + ).to match(/did not contain a coverage information system action/) + end + + it 'skips if no unknown cds hooks element follow-up request was made for primary hooks' do + create_service_request + + result = run(runnable) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/response contained a coverage-info action/) + end + + it 'omits if no unknown cds hooks element follow-up request was made for secondary hooks' do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-select') + + create_service_request + + result = run(runnable) + + expect(result.result).to eq('omit') + expect(result.result_message).to match(/response contained a coverage-info action/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/unknown_configuration_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/unknown_configuration_test_spec.rb new file mode 100644 index 00000000..32ef1ef4 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/unknown_configuration_test_spec.rb @@ -0,0 +1,138 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_configuration_test' + +RSpec.describe DaVinciCRDTestKit::V221::UnknownConfigurationTest do + let(:suite_id) { 'crd_server_v221' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:service_endpoint) { 'http://example.com/cds-services/order-sign-service' } + let(:hook_request) do + JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json' + ))) + end + let(:coverage_info_action) do + { + 'type' => 'update', + 'description' => 'Added coverage information', + 'resource' => { + 'resourceType' => 'ServiceRequest', + 'id' => 'service-request-1', + 'status' => 'draft', + 'intent' => 'order', + 'extension' => [ + { + 'url' => DaVinciCRDTestKit::CardsIdentification::COVERAGE_INFO_EXT_URL + } + ] + } + } + end + let(:guideline_card) do + { + 'summary' => 'Guideline', + 'indicator' => 'info', + 'source' => { 'topic' => { 'code' => 'guideline' } } + } + end + let(:original_response) do + { + 'cards' => [guideline_card], + 'systemActions' => [coverage_info_action] + } + end + let(:filtered_response) do + { + 'cards' => [guideline_card], + 'systemActions' => [] + } + end + + def create_service_request( + body: original_response, + status: 200, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + repo_create( + :request, + direction: 'outgoing', + url: service_endpoint, + test_session_id: test_session.id, + request_body: unknown_configuration_request_body.to_json, + response_body: body.to_json, + result:, + status:, + tags:, + headers: nil + ) + end + + def create_unknown_configuration_request(**args) + create_service_request( + **args, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG, DaVinciCRDTestKit::UNKNOWN_CONFIGURATION_TAG] + ) + end + + def unknown_configuration_request_body + hook_request.deep_dup.tap do |request_body| + request_body['hookInstance'] = SecureRandom.uuid + request_body['extension'] = { + 'davinci-crd.configuration' => { + 'RANDOM_KEY' => true + } + } + end + end + + def entity_result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + before do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-sign') + end + + it 'passes when unknown configuration responses include coverage-info' do + create_unknown_configuration_request(body: original_response) + + result = run(runnable) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails if the unknown response does not contain coverage-info' do + create_unknown_configuration_request(body: filtered_response) + + result = run(runnable) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/unknown configuration were not valid/) + expect( + entity_result_messages.map(&:message).join(' ') + ).to match(/did not contain a coverage information system action/) + end + + it 'skips if no unknown configuration follow-up request was made for primary hooks' do + create_service_request + + result = run(runnable) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/response contained a coverage-info action/) + end + + it 'omits if no unknown configuration follow-up request was made for secondary hooks' do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-select') + + create_service_request + + result = run(runnable) + + expect(result.result).to eq('omit') + expect(result.result_message).to match(/response contained a coverage-info action/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/unknown_context_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/unknown_context_test_spec.rb new file mode 100644 index 00000000..3d2a6a72 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/unknown_context_test_spec.rb @@ -0,0 +1,134 @@ +require_relative '../../../lib/davinci_crd_test_kit/server/v2.2.1/verify_response/unknown_context_test' + +RSpec.describe DaVinciCRDTestKit::V221::UnknownContextTest do + let(:suite_id) { 'crd_server_v221' } + let(:runnable) { described_class } + let(:results_repo) { Inferno::Repositories::Results.new } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + + let(:service_endpoint) { 'http://example.com/cds-services/order-sign-service' } + let(:hook_request) do + JSON.parse(File.read(File.join( + __dir__, '..', '..', 'fixtures', 'order_sign_hook_request.json' + ))) + end + let(:coverage_info_action) do + { + 'type' => 'update', + 'description' => 'Added coverage information', + 'resource' => { + 'resourceType' => 'ServiceRequest', + 'id' => 'service-request-1', + 'status' => 'draft', + 'intent' => 'order', + 'extension' => [ + { + 'url' => DaVinciCRDTestKit::CardsIdentification::COVERAGE_INFO_EXT_URL + } + ] + } + } + end + let(:guideline_card) do + { + 'summary' => 'Guideline', + 'indicator' => 'info', + 'source' => { 'topic' => { 'code' => 'guideline' } } + } + end + let(:original_response) do + { + 'cards' => [guideline_card], + 'systemActions' => [coverage_info_action] + } + end + let(:filtered_response) do + { + 'cards' => [guideline_card], + 'systemActions' => [] + } + end + + def create_service_request( + body: original_response, + status: 200, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG] + ) + repo_create( + :request, + direction: 'outgoing', + url: service_endpoint, + test_session_id: test_session.id, + request_body: unknown_context_request_body.to_json, + response_body: body.to_json, + result:, + status:, + tags:, + headers: nil + ) + end + + def create_unknown_context_request(**args) + create_service_request( + **args, + tags: [DaVinciCRDTestKit::ORDER_SIGN_TAG, DaVinciCRDTestKit::UNKNOWN_CONTEXT_TAG] + ) + end + + def unknown_context_request_body + hook_request.deep_dup.tap do |request_body| + request_body['hookInstance'] = SecureRandom.uuid + request_body['context'] = { 'RANDOM_KEY' => 'RANDOM_KEY' } + end + end + + def entity_result_messages + results_repo.current_results_for_test_session_and_runnables(test_session.id, [runnable]) + .first + .messages + end + + before do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-sign') + end + + it 'passes when unknown context responses include coverage-info' do + create_unknown_context_request(body: original_response) + + result = run(runnable) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'fails if the unknown response does not contain coverage-info' do + create_unknown_context_request(body: filtered_response) + + result = run(runnable) + + expect(result.result).to eq('fail') + expect(result.result_message).to match(/unknown context were not valid/) + expect( + entity_result_messages.map(&:message).join(' ') + ).to match(/did not contain a coverage information system action/) + end + + it 'skips if no unknown context follow-up request was made for primary hooks' do + create_service_request + + result = run(runnable) + + expect(result.result).to eq('skip') + expect(result.result_message).to match(/response contained a coverage-info action/) + end + + it 'omits if no unknown context follow-up request was made for secondary hooks' do + allow_any_instance_of(runnable).to receive(:tested_hook_name).and_return('order-select') + + create_service_request + + result = run(runnable) + + expect(result.result).to eq('omit') + expect(result.result_message).to match(/response contained a coverage-info action/) + end +end diff --git a/spec/davinci_crd_test_kit/v2.2.1/verify_response_without_billing_options_test_spec.rb b/spec/davinci_crd_test_kit/v2.2.1/verify_response_without_billing_options_test_spec.rb new file mode 100644 index 00000000..b71255a5 --- /dev/null +++ b/spec/davinci_crd_test_kit/v2.2.1/verify_response_without_billing_options_test_spec.rb @@ -0,0 +1,126 @@ +RSpec.describe DaVinciCRDTestKit::V221::VerifyResponseWithoutBillingOptionsTest do + let(:suite_id) { 'crd_server_v221' } + let(:result) { repo_create(:result, test_session_id: test_session.id) } + let(:runnable) { described_class } + let(:appointment) { { resourceType: 'Appointment' } } + let(:appointment_with_coverage_info) do + appointment.merge( + extension: [ + { url: 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information' } + ] + ) + end + + it 'passes if a successful request without a billing options extension has been made' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body: '', + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + + result = run(runnable) + + expect(result.result).to eq('pass'), result.result_message + end + + it 'skips if no requests could be found' do + result = run(runnable) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to match(/No requests were made/) + end + + it 'skips if no successful requests were made' do + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body: '', + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 500 + ) + + result = run(runnable) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to match(/were unsuccessful/) + end + + it 'skips if all successful requests contain the billing options extension' do + appointment.merge!( + serviceType: [ + { + coding: [ + { + code: 'ABC' + } + ], + extension: [ + { + url: 'http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options', + valueCodeableConcept: { + coding: [ + { + code: 'DEF' + } + ] + } + } + ] + } + ] + ) + bundle = FHIR::Bundle.new( + entry: [ + { + resource: FHIR::Appointment.new(appointment) + } + ] + ) + + request_body = { context: { appointments: bundle.to_hash } }.to_json + + repo_create( + :request, + direction: 'outgoing', + test_session_id: test_session.id, + result:, + request_body:, + response_body: '', + tags: [DaVinciCRDTestKit::APPOINTMENT_BOOK_TAG], + status: 200 + ) + + result = run(runnable) + + expect(result.result).to eq('skip'), result.result_message + expect(result.result_message).to match(/All successful requests included the billing options extension/) + end +end diff --git a/spec/fixtures/MedicationRequest-smart-MedicationRequest-103.json b/spec/fixtures/MedicationRequest-smart-MedicationRequest-103.json new file mode 100644 index 00000000..6dd116d8 --- /dev/null +++ b/spec/fixtures/MedicationRequest-smart-MedicationRequest-103.json @@ -0,0 +1,64 @@ +{ + "resourceType": "MedicationRequest", + "id": "smart-MedicationRequest-103", + "meta": { + "lastUpdated": "2018-04-30T13:25:40.845-04:00" + }, + "text": { + "status": "generated", + "div": "
Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension (rxnorm: 617993)
" + }, + "status": "draft", + "intent": "order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "617993", + "display": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + } + ], + "text": "Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject": { + "reference": "Patient/1288992" + }, + "dosageInstruction": [ + { + "text": "5 mL bid x 10 days", + "timing": { + "repeat": { + "boundsPeriod": { + "start": "2005-01-04" + }, + "frequency": 2, + "period": 1, + "periodUnit": "d" + } + }, + "doseAndRate": { + "doseQuantity": { + "value": 5, + "unit": "mL", + "system": "http://unitsofmeasure.org", + "code": "mL" + } + } + } + ], + "dispenseRequest": { + "numberOfRepeatsAllowed": 1, + "quantity": { + "value": 1, + "unit": "mL", + "system": "http://unitsofmeasure.org", + "code": "mL" + }, + "expectedSupplyDuration": { + "value": 10, + "unit": "days", + "system": "http://unitsofmeasure.org", + "code": "d" + } + } +} \ No newline at end of file diff --git a/spec/fixtures/NutritionOrder-pureeddiet-simple.json b/spec/fixtures/NutritionOrder-pureeddiet-simple.json new file mode 100644 index 00000000..6f4b1e26 --- /dev/null +++ b/spec/fixtures/NutritionOrder-pureeddiet-simple.json @@ -0,0 +1,107 @@ +{ + "resourceType": "NutritionOrder", + "id": "pureeddiet-simple", + "extension": [ + { + "url": "existing_extension", + "valueString": "existing_value" + }, + { + "url": "to_replace", + "valueString": "existing_value" + } + ], + "identifier": [ + { + "system": "http://goodhealthhospital.org/nutrition-requests", + "value": "123" + } + ], + "status": "draft", + "patient": { + "reference": "Patient/1288992" + }, + "dateTime": "2014-09-17", + "orderer": { + "reference": "Practitioner/example", + "display": "Dr Adam Careful" + }, + "oralDiet": { + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "226211001", + "display": "Pureed diet" + }, + { + "system": "http://goodhealthhospital.org/diet-type-codes", + "code": "1010", + "display": "Pureed diet" + } + ], + "text": "Pureed diet" + } + ], + "schedule": [ + { + "repeat": { + "boundsPeriod": { + "start": "2015-02-10" + }, + "frequency": 3, + "period": 1, + "periodUnit": "d" + } + } + ], + "texture": [ + { + "modifier": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "228055009", + "display": "Liquidized food" + } + ], + "text": "Pureed" + } + } + ], + "fluidConsistencyType": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "439021000124105", + "display": "Dietary liquid consistency - nectar thick liquid" + } + ], + "text": "Nectar thick liquids" + } + ] + }, + "supplement": [ + { + "type": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "442971000124100", + "display": "Adult high energy formula" + }, + { + "system": "http://goodhealthhospital.org/supplement-type-codes", + "code": "1040", + "display": "Adult high energy pudding" + } + ], + "text": "Adult high energy pudding" + }, + "productName": "Ensure Pudding 4 oz container", + "instruction": "Ensure Pudding at breakfast, lunch, supper" + } + ] +} \ No newline at end of file diff --git a/spec/fixtures/Task-example-refill-task.json b/spec/fixtures/Task-example-refill-task.json new file mode 100644 index 00000000..21883802 --- /dev/null +++ b/spec/fixtures/Task-example-refill-task.json @@ -0,0 +1,23 @@ +{ + "resourceType": "Task", + "id": "example-refill-task", + "status": "draft", + "intent": "order", + "code": { + "text": "Refill Request" + }, + "focus": { + "reference": "MedicationRequest/smart-MedicationRequest-103" + }, + "for": { + "reference": "Patient/1288992" + }, + "authoredOn": "2016-03-10T22:39:32-04:00", + "lastModified": "2016-03-10T22:39:32-04:00", + "requester": { + "reference": "Practitioner/example" + }, + "owner": { + "reference": "Practitioner/example" + } +} \ No newline at end of file diff --git a/spec/fixtures/Task-example-schedule-task.json b/spec/fixtures/Task-example-schedule-task.json new file mode 100644 index 00000000..54064c7c --- /dev/null +++ b/spec/fixtures/Task-example-schedule-task.json @@ -0,0 +1,23 @@ +{ + "resourceType": "Task", + "id": "example-schedule-task", + "status": "draft", + "intent": "order", + "code": { + "text": "Appointment Request" + }, + "focus": { + "reference": "ServiceRequest/example" + }, + "for": { + "reference": "Patient/1288992" + }, + "authoredOn": "2016-03-10T22:39:32-04:00", + "lastModified": "2016-03-10T22:39:32-04:00", + "requester": { + "reference": "Practitioner/example" + }, + "owner": { + "reference": "Practitioner/example" + } +} \ No newline at end of file diff --git a/spec/fixtures/coverage_info_system_action_complete.json b/spec/fixtures/coverage_info_system_action_complete.json new file mode 100644 index 00000000..534f05c0 --- /dev/null +++ b/spec/fixtures/coverage_info_system_action_complete.json @@ -0,0 +1,178 @@ +{ + "type": "update", + "description": "Added coverage information to DeviceRequest resource.", + "resource": { + "resourceType": "MedicationRequest", + "id": "annotated-example", + "extension": [ + { + "extension": [ + { + "url": "coverage", + "valueReference": { + "reference": "Coverage/example" + } + }, + { + "url": "covered", + "valueCode": "conditional" + }, + { + "url": "pa-needed", + "valueCode": "satisfied" + }, + { + "url": "doc-needed", + "valueCode": "admin" + }, + { + "url": "doc-purpose", + "valueCode": "withclaim" + }, + { + "url": "info-needed", + "valueCode": "performer" + }, + { + "url": "billingCode", + "valueCoding": { + "system": "http://www.ama-assn.org/go/cpt", + "code": "77067" + } + }, + { + "url": "reason", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp", + "code": "gold-card" + } + ], + "text": "Prior auth waved due to gold-card status" + } + }, + { + "extension": [ + { + "url": "category", + "valueCode": "cat-other" + }, + { + "url": "code", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/us/davinci-crd/CodeSystem/temp", + "code": "policy-link" + } + ] + } + }, + { + "url": "value", + "valueUrl": "http://example.org/somepayer/policy123.pdf#abc" + }, + { + "url": "qualification", + "valueString": "Additional policy details can be found here" + } + ], + "url": "detail" + }, + { + "url": "questionnaire", + "valueCanonical": "http://example.org/some-payer/Questionnaire/123|1.3.0" + }, + { + "url": "date", + "valueDate": "2019-02-15" + }, + { + "url": "coverage-assertion-id", + "valueString": "12345ABC" + }, + { + "url": "satisfied-pa-id", + "valueString": "XXYYZ" + }, + { + "url": "contact", + "valueContactDetail": { + "name": "Help Desk", + "telecom": [ + { + "system": "url", + "value": "http://some-payer.org/xyz-sub-org/get-help-here.html" + }, + { + "system": "url", + "value": "http://some-payer.org/xyz-sub-org/get-help-here-too.html" + }, + { + "system": "email", + "value": "notreal@inferno.healthit.gov" + } + ] + } + }, + { + "url": "expiry-date", + "valueDate": "2019-08-01" + } + ], + "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information" + } + ], + "status": "draft", + "intent": "original-order", + "medicationCodeableConcept": { + "coding": [ + { + "system": "http://www.nlm.nih.gov/research/umls/rxnorm", + "code": "616447", + "display": "mycophenolate mofetil 250 MG Oral Capsule [Cellcept]" + } + ] + }, + "subject": { + "reference": "http://example.org/Patient/123", + "display": "Jane Smith" + }, + "encounter": { + "reference": "http://example.org/Encounter/ABC" + }, + "authoredOn": "2019-02-15", + "requester": { + "reference": "http://example.org/PractitionerRole/987", + "display": "Dr. Jones" + }, + "note": [ + { + "authorString": "XYZ Insurance", + "time": "2019-02-15T15:07:18-05:00", + "text": "Unsolicited prior authorization for Jane Smith to receive 6 tablets Cellcept 250 MG Oral Capsule BID granted. Please note prior authorization # 12345 on claim submission." + } + ], + "dosageInstruction": [ + { + "text": "6 tablets every 12 hours.", + "timing": { + "repeat": { + "frequency": 1, + "period": 12, + "periodUnit": "h" + } + }, + "doseAndRate": [ + { + "doseQuantity": { + "value": 6, + "unit": "tablet" + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/spec/fixtures/crd_service_request_example.json b/spec/fixtures/crd_service_request_example.json index f8a6db89..37f29bec 100644 --- a/spec/fixtures/crd_service_request_example.json +++ b/spec/fixtures/crd_service_request_example.json @@ -1,10 +1,6 @@ { "resourceType" : "ServiceRequest", "id" : "example", - "text" : { - "status" : "generated", - "div" : "

Generated Narrative: ServiceRequest

Resource ServiceRequest "example"

basedOn: http://example.org/fhir/ServiceRequest/someReferral

status: draft

intent: order

code: Implant Pacemaker (SNOMED CT#25267002 "Insertion of intracardiac pacemaker (procedure)")

subject: Patient/example " SHAW"

authoredOn: 2015-03-30

requester: Practitioner/example: Dr. Beverly Crusher " CAREFUL"

performer: http://example.org/fhir/Practitioner/example2: Dr Cecil Surgeon

locationReference: Location/example "South Wing, second floor"

reasonCode: Bradycardia ()

" - }, "basedOn" : [{ "reference" : "http://example.org/fhir/ServiceRequest/someReferral" }], diff --git a/spec/fixtures/fancy_structure_hook_request.json b/spec/fixtures/fancy_structure_hook_request.json deleted file mode 100644 index 8e3b265b..00000000 --- a/spec/fixtures/fancy_structure_hook_request.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "hookInstance": "d1577c69-dfbe-44ad-ba6d-3e05e953b2ea", - "fhirServer": "https://example/r4", - "hook": "fancy-structure", - "fhirAuthorization": { - "access_token": "SAMPLE_TOKEN", - "token_type": "Bearer", - "expires_in": 300, - "scope": "user/Patient.read user/Observation.read", - "subject": "cds-service" - }, - "context":{ - "userId":"Practitioner/example", - "patientId":"example", - "list": [ - { - "id": "123", - "nested_list": [ - "one", - "two", - "three" - ] - }, - { - "id": "456", - "nested_list": [ - "four", - "five", - "six" - ] - } - ], - "non_uniform_list": [ - { - "idA": "123" - }, - { - "id": "456" - }, - { - "id": { "value": "789" } - } - ] - } - } \ No newline at end of file diff --git a/spec/fixtures/order_dispatch_hook_v221_request.json b/spec/fixtures/order_dispatch_hook_v221_request.json new file mode 100644 index 00000000..db008b70 --- /dev/null +++ b/spec/fixtures/order_dispatch_hook_v221_request.json @@ -0,0 +1,68 @@ +{ + "hookInstance": "d1577c69-dfbe-44ad-ba6d-3e05e953b2ea", + "fhirServer": "https://example/r4", + "hook": "order-dispatch", + "fhirAuthorization": { + "access_token": "SAMPLE_TOKEN", + "token_type": "Bearer", + "expires_in": 300, + "scope": "user/Patient.read user/Observation.read", + "subject": "cds-service" + }, + "context": { + "patientId": "example", + "performer": "Practitioner/example", + "dispatchedOrders": [ + "ServiceRequest/example", + "MedicationRequest/smart-MedicationRequest-103" + ], + "fulfillmentTasks": [ + { + "resourceType": "Task", + "id": "example-schedule-task", + "status": "draft", + "intent": "order", + "code": { + "text": "Appointment Request" + }, + "focus": { + "reference": "ServiceRequest/example" + }, + "for": { + "reference": "Patient/1288992" + }, + "authoredOn": "2016-03-10T22:39:32-04:00", + "lastModified": "2016-03-10T22:39:32-04:00", + "requester": { + "reference": "Practitioner/example" + }, + "owner": { + "reference": "Practitioner/example" + } + }, + { + "resourceType": "Task", + "id": "example-refill-task", + "status": "draft", + "intent": "order", + "code": { + "text": "Refill Request" + }, + "focus": { + "reference": "MedicationRequest/smart-MedicationRequest-103" + }, + "for": { + "reference": "Patient/1288992" + }, + "authoredOn": "2016-03-10T22:39:32-04:00", + "lastModified": "2016-03-10T22:39:32-04:00", + "requester": { + "reference": "Practitioner/example" + }, + "owner": { + "reference": "Practitioner/example" + } + } + ] + } +} \ No newline at end of file diff --git a/spec/fixtures/order_sign_hook_request.json b/spec/fixtures/order_sign_hook_request.json index c026998b..2c9d5fc3 100644 --- a/spec/fixtures/order_sign_hook_request.json +++ b/spec/fixtures/order_sign_hook_request.json @@ -14,8 +14,10 @@ "patientId": "example", "draftOrders": { "resourceType": "Bundle", + "type": "collection", "entry": [ { + "fullUrl": "https://example/r4/NutritionOrder/pureeddiet-simple", "resource": { "resourceType": "NutritionOrder", "id": "pureeddiet-simple", @@ -125,6 +127,7 @@ } }, { + "fullUrl": "https://example/r4/MedicationRequest/smart-MedicationRequest-103", "resource": { "resourceType": "MedicationRequest", "id": "smart-MedicationRequest-103",